首页 > 解决方案 > 将颜色图应用于灰度图像以高效生成 RGB 图像

问题描述

有没有一种有效的方法将颜色映射字典应用于灰度图像以使用 numpy 函数转换为 RGB 图像?

例如。我有一个灰度图像作为 numpy array 。

grayscale_image = array([[0., 0., 3.],
       [0., 2., 0.]])

和一个像

color_map = {3: (1,2,3), 2: (4,5,6)}

如何生成 RGB 图像

rgb_image = 
array([[[0., 0., 0.],
        [0., 0., 0.],
        [1., 2., 3.]],
       [[0., 0., 0.],
        [4., 5., 6.],
        [0., 0., 0.]]])

标签: pythonperformancenumpy

解决方案


如果您将颜色图设为数组而不是字典,则可以利用 numpy 非常方便的索引。如果您有 256 种灰度,您将获得 shape 的颜色图[256, 3]。然后可以直接索引:

import numpy as np

gray = np.array([
    [0, 0, 3],
    [0, 2, 0]
])

color_map = np.array([
    [0,0,0],
    [0,0,0],
    [4,5,6],
    [1,2,3], 
    # ... remaining color map values
])

rgb = color_map[gray]

结果:

array([[[0, 0, 0],
        [0, 0, 0],
        [1, 2, 3]],

       [[0, 0, 0],
        [4, 5, 6],
        [0, 0, 0]]])

推荐阅读