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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您好。我用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索引值,我的想法错了吗?谢谢

追答

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

参考技术A 请问 转化后的伪彩色图像怎样保存 保存成什么格式 为什么我保存的的显示全黑 非常感谢

以上是关于您好。我用gray2ind函数转换为伪彩色图像然后用imshow显示,为啥图像全白或全黑呢?的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib实现伪彩色图像和色度条的展现

opencv彩色图像到greycode转换错误

在彩色图像上使用精明

有张彩色的jpg图片,如何转换成灰度图

opencv converTO()函数 转换图像的数据类型不改变通道数,注意与cvtColor()改变颜色空间/彩色空间/色彩空间函数区分

Python+OpenCV数字图像处理,彩色空间变换(HSI和RGB空间转换)