我试图显示图像的负片,因为你知道它有一个非常简单的代码
这是原始图像:
当我使用代码时:
Out = 255-img;
%Out = uint8(OutNeg);
imshow(Out);
结果将是:
但是使用代码:
OutNeg = 255-img;
Out = uint8(OutNeg);
imshow(Out);
会做出正确答案:
现在我想知道
1 - 函数uint8()实际上做了什么?
2 - 这些代码是否会产生相同的结果?实际上uint8的用途是什么?
代码1:
img2 = uint8(img1);
imshow(img2);
Code2:
imshow(img1,[0 255]);
3 - 在使用以下代码显示图像之前,是否需要对图像进行标准化?
img2 = 255/(max(max(img1))-min(min(img1)))*(img1-min(min(img1)));
或者使用uint8或[0 255]做同样的事情,不需要规范化??
4-规范化,使用uint8和使用[0 255]之间的区别是什么?
请在答案中考虑Log和power-low等转换。
答案 0 :(得分:3)
来自help imshow
:
If your grayscale image is single or double, the default display range is [0 1]. If your image's data range is much larger or smaller than the default display range, you may need to experiment with setting the display range to see features in the image that would not be visible using the default display range. For all grayscale images having integer types, the default display range is [intmin(class(I)) intmax(class(I))].
通过使数据成为8位无符号整数(uint8
)数组,imshow
期望数据位于[0 255]
。 RTM。