0

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

imshow结果没有显示范围

imshow显示范围的结果

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

最好的

4

3 回答 3

2

如果您只想以相同的方式限制值的范围,则imshow可以编写

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

这会将所有低于 -2048 的强度设置为 -2048,并将所有高于 2048 的强度设置为 2048。

于 2013-01-13T21:08:39.847 回答
0

您还可以使用一些有限且单调的功能。

例如。我会使用类似的东西limitedImage = 2048*tanh(originalImage/2048)

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

于 2013-01-14T11:46:32.333 回答
0

As @Jonas suggested, you may want to truncate extreme values. Alternately you can rescale your colors to make sure you always make full use of the entire spectrum (with maximum contrast).

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 

This will set all intensities lower than -2048 to -2048, and all intensities above 2048 to 2048.

于 2013-01-14T10:35:17.993 回答