如何从 rgb 地图构建高程比例尺?
How to build an elevation scale from an rgb map?
为了挑战,我需要建立一个颜色和高度之间的对应关系图(见下图)。
高程文件的海洋颜色为蓝色,高程颜色为 green/yellow/brown。
挑战给出的建议是:找到勃朗峰的像素(4810米)
我正在与 python 合作。
我完全不知道如何解决这个问题。我已将地图转换为具有 RGB 值的形状为 (2860,4490,3) 的 numpy 数组,我想将此数组转换为具有以米为单位的高程值的 (2860,4490)。如果您有任何建议或建议,我会非常喜欢!
此处最低 (min_value) 的 RGB 颜色为蓝色,最高 (max_value) 的颜色为棕色。
如果我们采用所有可能的不同颜色并使用 R、G、B 作为特征,我们应该将它们投影到一维 space 中。
所以如果R,G,B被认为是X,Y,Z 3D space,蓝色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
该颜色的像素位置就是您的答案!
以防同一个 class 的另一个学生偶然发现这个问题。关键字是 colorspace HSV。将 RGB 图像转换为 HSV space 并看到 'Hue' 陆地可以线性映射。单独处理水。
有用的资源:
- 在此处阅读幻灯片 13:http://www.inf.ed.ac.uk/teaching/courses/vis/lecture_notes/lecture5-2x2.pdf
- 这里的最后一个答案给出了更多直觉:https://forum.image.sc/t/topography-calibrated-from-color-scale/2363/2
- 最后,您可以使用 scikit 图像进行处理:
from skimage.color import rgb2hsv
rgb_img = np.array(your_image)
hsv_img = rgb2hsv(rgb_img)
hue_img = hsv_img[:, :, 0]
取自:https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_rgb_to_hsv.html
为了挑战,我需要建立一个颜色和高度之间的对应关系图(见下图)。 高程文件的海洋颜色为蓝色,高程颜色为 green/yellow/brown。 挑战给出的建议是:找到勃朗峰的像素(4810米)
我正在与 python 合作。 我完全不知道如何解决这个问题。我已将地图转换为具有 RGB 值的形状为 (2860,4490,3) 的 numpy 数组,我想将此数组转换为具有以米为单位的高程值的 (2860,4490)。如果您有任何建议或建议,我会非常喜欢!
此处最低 (min_value) 的 RGB 颜色为蓝色,最高 (max_value) 的颜色为棕色。 如果我们采用所有可能的不同颜色并使用 R、G、B 作为特征,我们应该将它们投影到一维 space 中。
所以如果R,G,B被认为是X,Y,Z 3D space,蓝色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 该颜色的像素位置就是您的答案!
以防同一个 class 的另一个学生偶然发现这个问题。关键字是 colorspace HSV。将 RGB 图像转换为 HSV space 并看到 'Hue' 陆地可以线性映射。单独处理水。
有用的资源:
- 在此处阅读幻灯片 13:http://www.inf.ed.ac.uk/teaching/courses/vis/lecture_notes/lecture5-2x2.pdf
- 这里的最后一个答案给出了更多直觉:https://forum.image.sc/t/topography-calibrated-from-color-scale/2363/2
- 最后,您可以使用 scikit 图像进行处理:
from skimage.color import rgb2hsv
rgb_img = np.array(your_image)
hsv_img = rgb2hsv(rgb_img)
hue_img = hsv_img[:, :, 0]
取自:https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_rgb_to_hsv.html