如何从 RGB 地图构建高程比例尺?

问题描述 投票:0回答:2

我需要建立颜色和海拔之间的对应图。高程文件的海洋颜色为蓝色,高程文件为绿色/黄色/棕色。建议说:

找到勃朗峰 (4810 m) 的像素。

Text

我正在使用Python。我不知道如何解决这个问题。我将地图转换为具有 RGB 值的形状为 (2860,4490,3) 的 NumPy 数组,并希望转换为具有以米为单位的高程值的 (2860,4490)。

python rgb data-conversion
2个回答
1
投票

将 RGB 图像转换为 HSV 色彩空间,以查看使用“Hue”陆地可以线性映射。单独处理水。

  • 请阅读幻灯片 13 此处
  • 最后一个答案这里说明了这一点。
  • 您可以使用scikit图像进行处理:
from skimage.color import rgb2hsv

rgb_img = np.array(your_image)
hsv_img = rgb2hsv(rgb_img)
hue_img = hsv_img[:, :, 0]

取自此处


1
投票

此处最低值 (min_value) 的 RGB 颜色为蓝色,最高值 (max_value) 的 RGB 颜色为棕色。 如果我们采用所有可能的不同颜色并使用 R、G、B 作为特征,我们应该将它们投影到一维空间中。

因此,如果将 R、G、B 视为 X、Y、Z 3D 空间,则蓝色 min_value (x1, y1, z1) 和棕色 max_value (x2, y2,z2) 之间存在一条直线

您可以将 x1 y1, z1 设为 0, 0, 0 并变换 (x2,y2,z2) -> (x2-x1, y2-y1, z2-z1) 这将为您提供更简单的线性映射,您可以使用它来映射到任何中间点 (x3,y3,z3),前提是您知道该点距海平面的高度。这样获得的 (x3,y3,z3) 点只不过是您的 RGB 颜色,其中 R=x3、G=y3 和 B=z3 该颜色的像素位置就是你的答案!

© www.soinside.com 2019 - 2024. All rights reserved.