Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将颜色映射应用于灰度图像以高效生成RGB图像_Python_Performance_Numpy - Fatal编程技术网

Python 将颜色映射应用于灰度图像以高效生成RGB图像

Python 将颜色映射应用于灰度图像以高效生成RGB图像,python,performance,numpy,Python,Performance,Numpy,是否有一种有效的方法将彩色地图字典应用于灰度图像,以使用numpy函数转换为RGB图像 例如。 我有一个灰度图像作为numpy数组 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.],

是否有一种有效的方法将彩色地图字典应用于灰度图像,以使用numpy函数转换为RGB图像

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

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.]]])

如果将颜色贴图设置为数组而不是字典,则可以利用numpy非常方便的索引。如果您有256个灰度,您将有一个形状的颜色贴图
[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]]])

目前还不清楚您是如何为最终结果编制索引的。您的灰度图像宽3像素,高2像素。您位于
[0,0]
的像素是
0
。那么,为什么您的RGB像素位于
[0,0]
=
[0,0,1]
?@MarkMeyer指出了这一点。我已经更新了问题。