Matlab中利用imshow函数中出现的问题

imshow是一个很强大的”武器”,显示图像简直无所不能,但这其中往往会出现问题。在处理图像时,我们的图像经常是经过了某种运算,为了保证其精度,系统会自动的将uint8型数据类型转化成double型。

“如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。 ”

解决之道:

(1) 可以利用mat2gray()函数,这个函数是归一化函数,可以把数据归一化到0-1之间,再用imshow()就可以了;
(2) 或者对于一个处理后的黑白图像Img,若为double型可以这样写:imshow(Img/max(Img(:)))
(3) 还有一种就是:imshow(Img,[]);就是加一个[],即可以自动调整显示;
原文地址:https://www.cnblogs.com/vincentQin/p/5406007.html