matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵A其数据类型会从unit8型变成double型。如果直接运行imshow(A),我们会发现显示的是一个白色的图像。
这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。
那么如何解决这个问题呢?通过搜索,找到两个解决方法:
imshow(I/256); -----------将图像矩阵转化到0-1之间
imshow(I,[]); -----------自动调整数据的范围以便于显示 (不明白原理!)
从实验结果看两种方法都解决了问题,但是从显示的图像看,第二种方法显示的图像明暗黑白对比的强烈些!不知什么原理!
追问O(∩_∩)O谢谢,有很多疑问,我用 [x,map]=gray2ind(b,700); b是16000*8的灰度图像矩阵,灰度值在0-700间,为什么调用后x 的值能达到几千甚至一万多呢?不应在700内吗?我认为对b的每个值可以对应一个map索引值,我的想法错了吗?谢谢
追答可能是比例问题吧!我不是很清楚