如何将生成的“地图”与给定的“color_map”匹配?

Posted

技术标签:

【中文标题】如何将生成的“地图”与给定的“color_map”匹配?【英文标题】:How to match the resulting "map" with the given "color_map"? 【发布时间】:2015-08-16 18:19:39 【问题描述】:

我有一个名为 imrgb 的 RGB 图像,其大小为 320*512*3 双倍。而我 也有 color_map = 64*3 双倍。我使用以下代码:

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

结果 X= 320*512 uint8,结果 map = 65*3 double。 生成的“地图”与给定的“颜色地图”完全不同。 如何解决这个问题?

“地图”的前几行如下所示:

    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 执行图像的颜色量化,并且map 输出提供使用该量化分割颜色的颜色图。它不必与您提供的自定义颜色图相对应除非您将此颜色图作为输入提供给rgb2ind。你在这里做什么有点不清楚。您能否进一步了解匹配彩色地图的目的?您在这里的总体目标是什么? @rayryeng,我想让 X 做进一步的图像处理工作。给出了“color_map”和“imrgb”,我只想使用我现在拥有的东西来获得精确的二维 X 来表示我的图像。正如你所说,这是否意味着我应该将给定的“color_map”和给定的“imrgb”一起输入方程? @rayryeng,我应该这样做:[X, color_map] = rgb2ind(imrgb, 256)?或者还有什么我不知道的。 试试[X, map] = rgb2ind(imrgb, color_map); @rayryeng,我只想请你写一个答案,以便我投票!做吧,拜托! 【参考方案1】:

使用rgb2ind 对图像进行颜色量化(默认是直接在 RGB 空间中均匀量化,我们还将dithering 应用于图像)到一定数量的颜色(在您的情况下为 256),如果您不要指定输入颜色图。 map 输出提供了一个颜色映射,它使用您的图像 imrgb 的量化来最好地分割颜色。变量X 为您提供了每个像素从map 变量映射到颜色图中的位置的索引。这实际上是一个颜色查找表。

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

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

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

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

【讨论】:

以上是关于如何将生成的“地图”与给定的“color_map”匹配?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 WGET 生成给定 URL 的网站的站点地图吗?

如何生成给定列表的幂集?

如何找到给定纬度/经度以北 x 公里的纬度/经度?

BGL 中的 color_map 定义在哪里?

如何找到给定纬度/长度以北x km的纬度/经度?

如何将地图划分为给定半径的圆圈?