如何在 matlab 中将图像从 double 转换为 uint8?

How to convert image from double to uint8 in matlab?

我有一个 I 类型的图像 double。我想将图像从 double 转换为 uint8。我试过同时使用:

  1. I=uint8(I)
  2. I=im2uint8(I).

当我使用 imshow(I) 命令时,我只得到一个黑色图像,没有其他任何东西。我做错了什么?

im2uint8 函数假定您的 double 图像缩放到范围 [0,1]。如果您的图像具有大于 1 或小于 0 的值,这些值将被剪裁。请参阅以下示例:

im2uint8([-1 0 0.5 1 2])
ans =
    0    0  128  255  255

解决方案是通过减去最小值并除以总范围,将输入图像缩放到[0,1]

I = (I - min(I(:))) / (max(I(:)) - min(I(:)));
I = im2uint8(I);
imshow(I);