我有一个 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);
关于image - 如何在 matlab 中将图像从 double 转换为 uint8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30757896/