2013-04-02 2 views
1

У меня есть необработанные пиксельные данные (640x480 пикселей) от инфракрасной камеры, которые обозначают определенную измеренную температуру. Эти значения пикселей имеют 16-битный диапазон от 0 до 65535.Создайте ложную цветовую палитру и сопоставите значения пикселей с ней

Я могу отображать значения пикселей как 8-битные оттенки серого, что очень хорошо работает.

Но теперь я хочу отобразить эти пиксели с помощью ложной цветовой палитры.

Я заметил 2 проблемы здесь:
1.) Создание ложной цветовой палитры. Это означает не просто простую палитру RGB или HSV ... Я думаю о переходе от черного к желтому, к оранжевому, к красному и, наконец, к фиолетовому
2.) Связывание значений пикселей с цветом на моей палитре (например, 0 = черный, 65535 = фиолетовый, но 31521 = ???)

У вас есть идея, как мне подойти к этой проблеме? Я использую Qt4 и Python (PyQt), но также буду очень рад, если вы просто разделите путь решения.

ответ

0

Один простой способ - определить цвета в определенных точках вашего диапазона - как в вашем примере, 0 - черный, 65535 фиолетовый, может быть, 10000 - красный, что бы вы ни делали. Настройте таблицу с этими ключевыми значениями rgb, а затем просто интерполируйте между значениями rgb значений ключа выше и ниже вашего входного значения, чтобы найти цвет rgb для любого заданного значения.

например. если вы ищете цвет для значения 1000, и ваша таблица имеет

value=0, color=(0,0,0) 
value=5000, color=(255, 0, 255) 

Тогда вы интерполировать между этими значениями, чтобы получить цвет (51, 0, 51)

+0

Да, это похоже на хороший способ сделать это. Другой способ - определить цвета для определенных точек и сделать заливку цвета (с линейными градиентами) на 1x65536 pixmap. Затем я могу создать словарь на python и присвоить значение пикселя объекту QRgb с определенным цветом из pixmap. – tjack

0

Самый простой способ следующим образом: Скопируйте без знака short в тип QRgb и используйте его в конструкторе QColor.

unsigned short my_temp=...; 
QColor my_clr((QRgb)my_temp); 

Это сделает ваши значения цветами между черным и голубым.

+0

Похоже, что это очень простой способ, но невозможно было бы покрасить мой пиксель так, как я хочу, и не создать полезную цветовую палитру. Или я ошибаюсь? – tjack

Смежные вопросы