Визуализируйте значения в массиве numpy как цвета в растровом - PullRequest
0 голосов
/ 28 ноября 2018

Мне была дана маска сегментации: массивный массив HxW, в котором каждое местоположение представляет пиксель.Однако значение в каждом месте не RGB;это произвольное целое число в диапазоне 0-60, где целое число представляет собой просто код, представляющий тип содержимого изображения.

Например, местоположения массива, значение которых равно 12, указывают пиксели, классифицированные как «таблица»;местоположения, значение которых равно 34, указывают пиксели, классифицированные как «ковер».

Я хочу загрузить эту маску сегментации в холст, используя tkinter, поэтому мне нужно сделать из нее изображение, и мне нужен каждый иззначения 0-60 соответствуют цветам, оттенки которых настолько различны, насколько это возможно.

Как выбрать эти цвета?Как мне преобразовать мой массив HxW в изображение RGB?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вам не нужно конвертировать в RGB.Просто используйте pcolor с соответствующей картой цветов.

Это может быть что-то простое:

import matplotlib.pyplot as plt
import numpy

M = numpy.array([[1,2,3,4,5,6,7,8,9,10], [11,12,13,14,15,16,17,18,19,20]])
plt.pcolor( M , cmap = 'hsv' )
plt.show()

Добавлено Марком Сетчеллом:

image

0 голосов
/ 28 ноября 2018

ИМХО, очевидная вещь, которую нужно сделать, - создать палитризованное изображение, в котором у вас есть палитра из 60 цветов и указатель на палитру в каждом месте.С PIL / Pillow это очень просто.

Теперь вы можете выбрать эти 60 цветов.Я бы подумал об использовании цветового пространства HSL (Hue, Saturation and Lightness).Теперь вам нужно 60 разных значений.Таким образом, вы можете использовать полную насыщенность и яркость для всех пикселей и распределить доступные 360 градусов оттенка на куски 6 градусов для 60 цветов.Или вы можете использовать 100% легкость и 50% легкость плюс 100% насыщенность и 50% насыщенность, чтобы дать вам в 4 раза больше комбинаций легкость / насыщенность, что означает, что вы можете повернуть 24 степени оттенка для большего разделения.

См. здесь например, как сделать изображение из массива Numpy, добавить палитру к изображению, превратить его в изображение подушки и сохранить.

Я в основном предлагаю палитру с 60 записями, сследующие значения:

Hue, Saturation, Lightness
0    50%         50%
0    50%         100%
0    100%        50%
0    100%        100%
23   50%         50%
23   50%         100%
23   100%        50%
23   100%        100%
47   50%         50%
47   50%         100%
47   100%        50%
47   100%        100%
61   ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...