如何将结果 "map" 与给定的 "color_map" 相匹配?

How to match the resulting "map" with the given "color_map"?

我有一个名为imrgb的RGB图像,它的大小是320*512*3double.And我 还有 color_map = 64*3 double。我使用以下代码:

[X, map] = rgb2ind(imrgb, 256)

结果 X= 320*512 uint8,结果 map = 65*3 double。 结果 "map" 与给定的 "color_map" 完全不同。 如何解决这个问题?

"map" 的前几行如下所示:

    0      0        0
    0      0.125    1
    0.56   1        0.439
    1      0.125    0
    0.188   1       0.812
    1       0.749   0
    0       0.7490  1
    0.5019  0       0
    0.7490  1       0.25098

给定 "color_map" 的前几行如下所示:

0   0   0.5625
0   0   0.6250
0   0   0.6875
0   0   0.7500
0   0   0.8125
0   0   0.8750
0   0   0.9375
0   0       1
0   0.0625  1

使用 rgb2ind performs a colour quantization (the default is uniform quantization directly in RGB space and we also apply dithering 图像)将图像的特定数量的颜色(在您的情况下为 256),如果您未指定输入颜色图。 map 输出提供了一个颜色图,它使用图像的量化来最好地分割颜色 imrgb。变量 X 为您提供 索引 ,其中每个像素映射到来自 map 变量的颜色图中。这实际上是颜色的查找 table。

这个 map 变量告诉我们应该将像素可视化为查找 table 中的哪种颜色。例如,post 中的上述调用将生成一个索引图像 X,其索引从 1 到 256,而 map 将包含 256 行,其中每列都是红色的一部分(第一个列)、绿色(第二列)和蓝色(第三列)。比例在[0-1]之间。此外,每一行都是一种独特的颜色。因此,如果在图像中找到的索引为 5,我们将查找此颜色图的第五行,即代表该像素的颜色。

因此,以您当前的方式调用 rgb2ind 不会 对应于您提供的自定义颜色图,除非您将此颜色图作为输入提供给 rgb2ind。因此,如果您想使用您提供的自定义颜色图获得索引图像,请将此颜色图用作 rgb2ind 的输入,以便索引图像与此新颜色图相关。

在这种情况下,您只需要做:

[X, map] = rgb2ind(imrgb, colour_map);