Вы можете воспользоваться очень удобной индексацией 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]]])