【问题标题】:Reading data from colour terrain map从彩色地形图读取数据
【发布时间】:2015-07-27 13:15:23
【问题描述】:

我有一个关于将彩色高度图转换为矩阵的问题 - 请查看 here 以查看此类地图的示例。如果我要绘制地形图并使用imagesc 绘制它,那么我会将其视为彩色地图。我想知道如何将看起来像这样的图像转换为相应的矩阵。

这似乎应该是一个非常基本的过程,但我自己既无法弄清楚如何做,也无法在网上找到如何做(包括查看 SO)。

换句话说,有问题的图像是 jpeg;我想要的是能够将 .jpg 文件转换为矩阵,M 说,这样imagesc(M)surf(M),相机看着(x,y)平面(从上方) , 和查看图片一样,比如imshow(imread('Picture.jpg')).

【问题讨论】:

  • 您是否在问如何获取将某个colormap 应用于灰度矩阵后创建的RGB 矩阵?如果是这样,那么您可能只需要 ind2rgb 函数。
  • 实际上并不完全。让我更新一下。
  • 那为什么不M=imread('Picture.jpg)呢?你的Picture.jpg 是彩色还是灰度?
  • 这是颜色。这就是我所说的“彩色地形图”的意思。如果单击第一行的链接,您将看到示例。 imread 给了我一个 MxNx3 矩阵 - 每个颜色 R、G 和 B 的 MxN - 而我想要一个高度图,所以 one MxN 矩阵这样从上面绘制和查看时,它给出了相同的图片。
  • 如果您要从某个进程中获取高度图,那么您可以导出为彩色图,例如“surf() view from above”。

标签: image matlab terrain color-mapping


【解决方案1】:

您可以为此使用 Matlab 的 rbg2ind 函数。您需要选择的只是您想要的输出颜色图的“分辨率”,即第二个参数n。因此,例如,如果您将n 指定为8,那么您的颜色图将只有8 值,并且您的输出索引图像也应该只有8 值。

【讨论】:

  • 优秀。所以我可以把它改成rgb2ind(RGB,64),这只是给了我更详细的信息。
  • @SmileySam 正确。还有不同的抖动算法(即它如何降低 color 分辨率)和用于映射强度的不同算法,即均匀或最小方差。文档(在答案中链接)解释了差异。
  • 我不确定这在数学上是否非常准确。 rgb2ind 将尝试在图像中找到 n 个最不同的颜色,但除非颜色映射以相同的方式定义,否则结果不会很好地分割(除非选择了非常多的 n)。基本上,使用jet 颜色图,您可以获得n 不同的高度,但每个n 索引的真实“高度”范围将完全不同!如果数据意味着准确,这一点非常重要。
  • @SmileySam 如果你有像你展示的图片这样的数据,你将找不到获取真实数据的好方法。在第一张图片中,地图上有一个“二进制掩码”。在第二个中,有阴影和光反射。在这两种情况下,一个高度都会有不同的 RGB 值。
  • 很抱歉,到头来,这一切都是徒劳的。
【解决方案2】:

根据所使用的颜色编码方案,您可以先尝试将 RGB 值转换为 HSL or HSV 并使用地形高度的色调值。

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2013-09-13
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多