我在Matlab中理解色图并使用它们导入和显示.gif图像时遇到问题。
我想使用导入图像 im = imread(' I.gif') 然后使用显示它 imshow(IM) 但结果是错误的
如果我这样做 [im,map] = imread(' I.gif') 然后使用显示它 imshow(1M,地图) 它运作正常,但我仍然不了解这个色图的需要
有没有办法导入我的gif图像并将其转换为灰度图像,以便我这样做 imshow(IM) 它显示正确的灰度图像而不必担心色彩图?
对于noob问题很谨慎,但我只是从Matlab中的图像处理开始,我真的很感激一些帮助。这是我的第一个问题! :)
再见,谢谢!
答案 0 :(得分:3)
如果您想将gif转换为灰度,请使用ind2gray:
[im,map] = imread('I.gif');
imGray = ind2gray(im,map);
您需要色彩映射的原因是gif格式不存储图像强度,它将索引存储到色彩映射中。因此,颜色0
可以是红色或绿色,也可以是非常浅的紫红色。它是存储图像所需的实际RGB颜色的色彩映射。 ind2gray
将采用这些颜色中的每一种,将它们转换为灰度强度,并用这些强度替换图像中的指数。
答案 1 :(得分:0)
看起来你已经回答了这个问题。似乎.gif文件支持索引颜色格式,作为节省空间的一种方式。参见:
https://en.wikipedia.org/wiki/Indexed_color
这与更典型的RGB颜色不同,后者通常是从IMREAD调用中收到的。
要转换为灰度,您需要浏览色彩图并为每种颜色指定灰度值,然后将这些值替换回im
变量。