MatLAB:限制图像的强度值

时间:2013-01-13 19:52:15

标签: matlab

我有大约200次CT扫描,我需要将它们的强度值限制在-2048到2048之间。我尝试过histeq和imadjust,但它们没有用。当我使用imshow时,我得到了最好的结果(图片,[ - 2048,2048])。但我需要保存此imshow的结果数据。

imshow result without display range

imshow result with display range

我想获得具有显示范围的imshow的输出图像并能够保存它吗?

最佳

3 个答案:

答案 0 :(得分:2)

如果你想做的只是以imshow的方式限制值的范围,你可以写

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

这将设置所有强度低于-2048至-2048,所有强度均高于2048至2048.

答案 1 :(得分: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.

答案 2 :(得分:0)

你也可以使用一些有限且单调的功能。

例如。我会使用像limitedImage = 2048*tanh(originalImage/2048)

这样的东西

使用此功能,您可以恢复原始图像,并且不会丢失超过2048的值的信息。