标签: matlab png imread paint.net
我用paint.net制作了一个简单的灰度图像:
然后,我仅使用MATLAB imread()读取图像,并得到了类似的东西(与Octave相同):
我检查了背景值,它是55,而不是255。
然后我使用pyplot.imread()在Python中尝试了同样的事情,并获得了预期的结果:
即使当我在MATLAB中阅读诸如Lena之类的东西时,我也看到了几次-灰度完全搞砸了。有人知道MATLAB(和Octave)中的读取有什么问题吗?
答案 0 :(得分:1)
您的PNG图像是RGB图像,而不是灰度图像。它被保存为索引图像,这意味着一个表中存储了56个不同的RGB值,并且该图像通过为每个像素指定索引来引用这些RGB值。
您看到的图像是颜色表中的索引,而不是保存的实际RGB值。
您需要同时阅读索引和颜色图:
[img,cm] = imread('https://i.stack.imgur.com/rke2o.png');
接下来,您可以使用ind2rgb恢复原始RGB图像,或者,如果您正在寻找灰度值图像,则可以使用ind2gray恢复灰度值:
ind2rgb
ind2gray
img = ind2gray(img,cm);