如何将生成的"map"与给定的"color_map"相匹配?



我有一个名为imrgb的RGB图像,其大小为320*512*3 double。和我也有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执行颜色量化(默认是直接在RGB空间中均匀量化,我们也对图像应用抖动)的图像到一定数量的颜色(在你的情况下,256),如果你没有指定输入颜色映射。map输出提供了一个颜色映射,使用该量化为您的图像imrgb最好的分割颜色。变量X为您提供了索引,其中每个像素映射到来自map变量的颜色映射中的位置。这实际上是一个颜色查找表。

这个map变量告诉我们应该将像素显示为查找表中的哪种颜色。例如,上面的调用将生成一个索引图像X,其索引从1到256,map将包含256行,其中每列是红色(第一列),绿色(第二列)和蓝色(第三列)的比例。比例在[0-1]。而且,每一行都是唯一的颜色。因此,如果在图像中找到的索引为5,我们将查找该颜色映射的第五行,这是代表该像素的颜色。

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

在这种情况下,您只需执行:

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

相关内容

  • 没有找到相关文章

最新更新