Ложное / псевдоцветовое кодирование температуры
У меня есть некоторые значения температуры в данном диапазоне, скажем, от 0 до 100 по Цельсию. Теперь я хочу сопоставить эти значения с цветами, поэтому синий =RGB(0,0,255) означает 0°C, красный =RGB(255,0,0) означает 100°C, а цвета между ними означают некоторые температуры между ними.
Matlab на самом деле имеет функцию под названием colormap. Мои вещи реализованы в OpenCV & C++. Есть ли кто-нибудь, кто уже имеет некоторый опыт цветового кодирования или знает какой-нибудь хороший математический способ сделать это?
3 ответа
Цветовое пространство HSV может быть полезным здесь.
Однако оттенок периодический, то есть, если вы перейдете от красного до другого конца спектра, вы вернетесь к красному, что не очень полезно в вашем случае. Что вы, вероятно, захотите сделать, - это выбрать подмножество спектра оттенков, которое идет от красного, желтого и зеленого до синего (исключая розовый / фиолетовый). В разделе RGB-HSV есть изображение, которое должно показать вам, что я имею в виду.
Обновление: фактически, этот предыдущий ответ говорит вам, как реализовать именно ту палитру MATLAB Jet, которую вы описываете.
Кажется, что Jet на самом деле является вариацией цветового пространства HSV!
Для температуры (t) от 0 до 100 вы можете рассчитать каждый цвет:
Pseudocode:
Col(t)=( 0+INT(2.55*t), // Red
0, // Green
255-INT(2.55*t)) // Blue
Col(0) =(0,0,255)
Col(100)=(255,0,0)
Коэффициент 2,55 получается из приведенных максимальных / минимальных значений 0° и 100° Цельсия. Вам просто нужно выбрать интервалы сейчас.
Надеюсь, это поможет.
Звучит так, будто вам нужна цветовая карта JET, которая начинается с темно-синего цвета и заканчивается темно-красным.
Предполагая, что у вас есть набор температур от 0 до 100, с шагом в один:
temps = 0:1:100;
Используйте функцию JET, чтобы создать набор цветов по N точкам, где N - длина вашего температурного вектора:
colors = jet(length(temps));
Теперь, чтобы получить доступ к цвету для первой температуры (это даст синий):
colors(1,:)
Или цвета для последней температуры (это будет красный):
colors(end,:)