Matlab中的Colormap和GIF图像

时间:2015-07-08 20:09:32

标签: matlab gif grayscale colormap

我在Matlab中理解色图并使用它们导入和显示.gif图像时遇到问题。

我想使用导入图像 im = imread(' I.gif') 然后使用显示它 imshow(IM) 但结果是错误的

如果我这样做 [im,map] = imread(' I.gif') 然后使用显示它 imshow(1M,地图) 它运作正常,但我仍然不了解这个色图的需要

有没有办法导入我的gif图像并将其转换为灰度图像,以便我这样做 imshow(IM) 它显示正确的灰度图像而不必担心色彩图?

对于noob问题很谨慎,但我只是从Matlab中的图像处理开始,我真的很感激一些帮助。这是我的第一个问题! :)

再见,谢谢!

2 个答案:

答案 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变量。