2013-01-13 63 views
0

我有大約200次CT掃描,我需要在-2048和2048之間限制它們的強度值。我嘗試了histeq和imadjust,但它們沒有奏效。當我使用imshow時(圖像,[-2048,2048]),我得到最好的結果。但我需要保存此imshow的結果數據。MatLAB:圖像的極限強度值

imshow result without display range

imshow result with display range

欲獲得imshow的輸出圖像用的顯示範圍,並能夠儲存嗎?

最佳

+0

什麼是你輸入CT掃描的範圍值的信息?你能提供你爲'histeq'和'imadjust'嘗試的確切代碼嗎?爲什麼你不滿意這些結果? **你在「imshow」**中究竟顯示負強度? – Shai

+0

@Shai:'imshow'將強度圖從最小範圍映射到顏色映射到最大範圍 - 在當前情況下,-2048對應於黑色,2048對應白色並設置極限。 – Jonas

+0

對於不是標準灰度或RGB的數據,您可以使用imagesc()來顯示它。 –

回答

2

如果你想要做的是限制以同樣的方式imshow做它該值的範圍,你可以寫

limits = [-2048 2048]; 
limitedImage = min(max(originalImage, limits(1)), limits(2)); 

這將設置所有強度低於-2048到 - 2048以及2048至2048之間的所有強度。

0

正如@Jonas所建議的,您可能想要截斷極端值。 或者,您可以重新調整顏色以確保始終充分利用整個光譜(具有最大對比度)。

scaledImage = zeros(size(originalImage)) % Just for initialization 
desiredRange = 2*2048; 
currentRange = max(originalImage(:)) - min(originalImage(:)); % You will want to remove NaNs first if they occur 
currentMean = mean(originalImage(:)) 
scaledImage(:) = currentMean + (originalImage(:) - currentMean) * desiredRange /currentRange 

這將設置比-2048到-2048下所有強度,高於2048所有的強度到2048

0

你也可以使用一些功能是有限的,單調。

例如。我會使用類似limitedImage = 2048*tanh(originalImage/2048)

使用這個你可以恢復原始圖像,並且不會失去超過2048