您好。我用gray2ind函数转换为伪彩色图像然后用imshow显示,为什么图像全白或全黑呢?

如题所述

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索引值,我的想法错了吗?谢谢

追答

可能是比例问题吧!我不是很清楚

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-02
请问 转化后的伪彩色图像怎样保存 保存成什么格式 为什么我保存的的显示全黑 非常感谢
相似回答
大家正在搜