Matlab中的彩色地图和GIF图像

Matlab中的彩色地图和GIF图像,matlab,gif,grayscale,colormap,Matlab,Gif,Grayscale,Colormap,我在理解Matlab中的颜色映射以及使用它们导入和显示.gif图像时遇到问题 我想使用导入图像 im=imread('I.gif') 然后使用 imshow(im) 但结果是错误的 如果我这样做 [im,map]=imread('I.gif') 然后使用 imshow(im,map) 它工作正常,但我仍然不明白这个彩色地图的需要 有没有办法将我的gif图像导入并转换为灰度,以便 imshow(im) 它显示正确的灰度图像,而不必担心彩色贴图 对于noob的问题,我很抱歉,但我刚刚开始学习Matl

我在理解Matlab中的颜色映射以及使用它们导入和显示.gif图像时遇到问题

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

如果我这样做 [im,map]=imread('I.gif') 然后使用 imshow(im,map) 它工作正常,但我仍然不明白这个彩色地图的需要

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

对于noob的问题,我很抱歉,但我刚刚开始学习Matlab中的图像处理,非常感谢您的帮助。这是我的第一个问题!:)


再见,谢谢

如果要将gif转换为灰度,请使用:


需要彩色贴图的原因是gif格式不存储图像强度,而是将索引存储到彩色贴图中。所以颜色
0
可以是红色或绿色,也可以是淡紫色。它是存储图像所需的实际RGB颜色的colormap
ind2gray
将获取这些颜色中的每一种,将它们转换为灰度强度,并用这些强度替换图像中的索引。

看起来您确实已经回答了这个问题。似乎.gif文件支持索引颜色格式,以节省空间。见:

这与通常从IMREAD调用接收到的更典型的RGB颜色不同


要转换为灰度,您需要遍历colormap并为每种颜色指定一个灰度值,然后将这些值替换回
im
变量。

或者,使用@bicker答案中的
ind2gray
命令。那容易多了。非常感谢你的帮助!
[im,map] = imread('I.gif');
imGray = ind2gray(im,map);