Matlab 中的颜色图和 GIF 图像

Colormap and GIF images in Matlab

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

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

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

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

很抱歉这个菜鸟问题,但我刚刚开始在 Matlab 中进行图像处理,我非常感谢您的帮助。这是我的第一个问题! :)

再见,谢谢!

如果您想将 gif 转换为灰度,请使用 ind2gray:

[im,map] = imread('I.gif');
imGray = ind2gray(im,map);

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

看起来你真的已经回答了这个问题。 .gif 文件似乎支持索引颜色格式,作为一种节省 space 的方式。参见:

https://en.wikipedia.org/wiki/Indexed_color

这与更典型的 RGB 颜色不同,后者通常从 IMREAD 调用中收到。

要转换为灰度,您需要遍历颜色图并为每种颜色分配一个灰度值,然后将这些值代回 im 变量。