MATLAB imread()错误的灰度

时间:2020-03-26 19:13:54

标签: matlab png imread paint.net

我用paint.net制作了一个简单的灰度图像:

image I drew

然后,我仅使用MATLAB imread()读取图像,并得到了类似的东西(与Octave相同):

enter image description here

我检查了背景值,它是55,而不是255。

然后我使用pyplot.imread()在Python中尝试了同样的事情,并获得了预期的结果:

enter image description here

即使当我在MATLAB中阅读诸如Lena之类的东西时,我也看到了几次-灰度完全搞砸了。有人知道MATLAB(和Octave)中的读取有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您的PNG图像是RGB图像,而不是灰度图像。它被保存为索引图像,这意味着一个表中存储了56个不同的RGB值,并且该图像通过为每个像素指定索引来引用这些RGB值。

您看到的图像是颜色表中的索引,而不是保存的实际RGB值。

您需要同时阅读索引和颜色图:

[img,cm] = imread('https://i.stack.imgur.com/rke2o.png');

接下来,您可以使用ind2rgb恢复原始RGB图像,或者,如果您正在寻找灰度值图像,则可以使用ind2gray恢复灰度值:

img = ind2gray(img,cm);