2

我正在尝试显示图像的负面效果,并且您知道它有一个非常简单的代码。
这是原始图像:
在此处输入图像描述
当我使用代码时:

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); 

代码2:

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 等转换。

4

1 回答 1

3

来自help imshow

如果您的灰度图像是单张或双张,则默认显示范围为
[0 1]。如果您的图像的数据范围远大于或小于默认值
显示范围,您可能需要尝试将显示范围设置为
查看图像中使用默认设置不可见的功能
显示范围。对于所有具有整数类型的灰度图像,默认
显示范围为 [intmin(class(I)) intmax(class(I))]。

通过使您的数据成为 8 位无符号整数 ( uint8) 数组,数据imshow应为 on [0 255]。即时通讯。

于 2014-04-09T21:57:09.623 回答