如何在 matlab 中将图像从 double 转换为 uint8?
How to convert image from double to uint8 in matlab?
我有一个 I
类型的图像 double
。我想将图像从 double
转换为 uint8
。我试过同时使用:
I=uint8(I)
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);
我有一个 I
类型的图像 double
。我想将图像从 double
转换为 uint8
。我试过同时使用:
I=uint8(I)
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);