MATLAB imread() wrong gray scale
我用paint.net制作了一个简单的灰度图像:
然后,我仅使用MATLAB imread()读取图像,并得到了类似的图像(与Octave相同):
我检查了背景值,它是55,而不是255。
然后,我使用pyplot.imread()在Python中尝试了相同的操作,并获得了预期的结果:
即使当我在MATLAB中阅读诸如Lena之类的东西时,我也看到了几次-灰度完全搞砸了。 有人知道MATLAB(和Octave)中的读取有什么问题吗?
您的PNG图像是RGB图像,而不是灰度图像。 它被保存为索引图像,这意味着表中存储了56个不同的RGB值,并且该图像通过为每个像素指定索引来引用这些RGB值。
您所看到的图像由色表中的索引组成,而不是所保存的实际RGB值。
您需要阅读索引和颜色图,如下所示:
1 |
接下来,您可以使用
1 | img = ind2gray(img,cm); |