我理解在Matlab颜色表,并用它们来导入和diplay .gif图片的问题。
我想导入使用im = imread(“I.gif”),然后使用imshow(IM)显示它的图象,但结果是错误的
如果我做[IM,地图] = imread(“I.gif”),然后用imshow(IM,地图)显示其能正常工作,但我仍然不明白这个颜色表的需要
有没有一种办法,而不必担心颜色表导入和转换我GIF图像灰度图像,这样,当我做imshow(IM),它显示了正确的灰度图像?
遗憾的noob问题,但我刚开始用Matlab中的图像处理,我会很感激一些帮助。 这是我的第一个问题! :)
再见和感谢!
如果你想你的GIF转换为灰度,使用ind2gray :
[im,map] = imread('I.gif');
imGray = ind2gray(im,map);
您需要的颜色映射的原因是,GIF格式不存储图像强度,它存储colormap的索引。 所以颜色0
可以是红色或绿色或淡紫色的一个很轻的阴影。 它存储的图像,需要实际的RGB颜色的颜色表。 ind2gray
将采取的每一种颜色,将它们转换为灰度强度,以及与这些强度图像中的替换索引。
它看起来像你真的已经回答了这个问题。 看来,.gif文件支持索引颜色格式,节省空间的方式。 看到:
https://en.wikipedia.org/wiki/Indexed_color
这是一个比一个更典型的RGB颜色,这就是通常从IMREAD呼叫收到不同。
要转换为灰度,你需要去通过颜色映射和分配的灰度值每种颜色,然后替换这些值回im
变量。