我有大约200次CT扫描,我需要将它们的强度值限制在-2048到2048之间。我尝试过histeq和imadjust,但它们没有用。当我使用imshow时,我得到了最好的结果(图片,[ - 2048,2048])。但我需要保存此imshow
的结果数据。
imshow
result without display range
imshow
result with display range
我想获得具有显示范围的imshow的输出图像并能够保存它吗?
最佳
答案 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的值的信息。