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

How to convert a RGB image to a two dimensional image in Matlab

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

如果我理解正确,您可以将图像数据存储为二维数组并使用颜色图为其分配颜色,将其显示为 "colorful" 图像。在这种情况下,颜色图将是一个 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

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

例如:

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

产量:

因此,正如您所见,图像看起来是 3D,但数据实际上是 2D。

这是你的意思吗?