Применение цветовой карты к изображению в градациях серого для эффективной генерации изображений RGB - PullRequest
0 голосов
/ 02 февраля 2020

Существует ли эффективный способ применения словаря цветовой карты к изображению в градациях серого для преобразования в изображение RGB с использованием функций numpy?

Например. У меня есть изображение в градациях серого как массив 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.]]])

1 Ответ

1 голос
/ 02 февраля 2020

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