如何在Matlab中将RGB图像转换为二维图像

时间:2015-06-02 00:27:25

标签: image matlab image-processing computer-vision vision

我有一个名为imrgb的RGB图像,其大小为320*512*3。 我想知道如何将其转换为二维图像?
我看到了一些彩色图像,但它们仍然是二维的 三维的。任何人都可以告诉我如何将其转换为 二维图像,但看起来仍然丰富多彩?

enter image description here

1 个答案:

答案 0 :(得分:5)

如果我理解正确,您可以将图像数据存储为2D数组,并使用色彩图为其指定颜色,将其显示为"色彩鲜艳的"图片。在这种情况下,色图将是Nx3阵列,其中每行对应于图像数据中存在(或不存在)的索引。因此,如果色图是256x3阵列,则图像将由0到255之间的索引组成。

例如,让我们考虑一下Matlab附带的peppers.png演示图像。让我们阅读并使用rgb2ind函数将图像数据存储在变量X中,并将其关联的色彩映射存储在变量map中。

a = imread('peppers.png');
[X,map] = rgb2ind(a,256);

如果我们询问X的大小,我们会得到:

ans =

   384   512

这是一个2D变量,即使原始图像(a)是3D(rgb)。

如果我们希望将此2D数据显示为彩色,我们需要提供合适的色彩映射。例如,我们可以使用原始色彩图(存储在map中)以获得以下内容:

image(X)
colormap(map)
axis off

enter image description here

或者我们可以使用我们选择的任何其他色彩图。

例如:

image(X)
colormap(jet(200)) %// The size can be different than the original colormap
axis off

得到以下特性:

enter image description here

因此,当您看到图像看起来是3D但数据实际上是2D时。

这是你的意思吗?