Предложенный алгоритм для отображения расходящихся цветовых карт

Я пытаюсь написать фрагмент кода, который должен отображать данные в значения RGB, и один из типов визуализаций, которые я пытаюсь использовать, — это расходящаяся карта цветов.

Я не совсем уверен, что лучше всего применять цвета. Текущий алгоритм, который я использую:
// F — проверяемая точка данных

if(F <= .5){
RGB[0] = F*510;
RGB[1] = F*510;
RGB[2] = F*254 + 128;
}else{
RGB[0] = 255 - (F-.5)*254;
RGB[1] = 255 - (F-.5)*510;
RGB[2] = 255 - (F-.5)*510;
}

Где ключевые точки для кривой:

      F=0: (0,0,128)
F=0.5: (255,255,255)
F=1: (128, 0, 0)

Существуют ли какие-либо предлагаемые алгоритмы для использования вместо этого, или это нормально взломанная кусочная функция?
Это изображение, сгенерированное этим текущим алгоритмом.
Цветовая кривая: расходящаяся

1

Решение

Я думаю, что вы должны использовать полосу для проверки своей функции, так как было бы легче увидеть «скорость» перехода в линейных данных.

Вот действительно хорошая статья об использовании расходящихся цветовых карт: http://www.sandia.gov/~kmorel/documents/ColorMaps/

Это описывает математику позади этого. Я знаю, что для такой простой задачи использование цветовых пространств Lab и MSH кажется излишним, но если вам нужны цветные карты хорошего качества, это действительно того стоит.

Кроме этого, я не знаю какой-либо «ручной» реализации функции (то есть не использовал уже сложные функции из matlab или R)

1

Другие решения

Я думаю, что это может быть более полезным для использования Цветовое пространство HSV в отличие от RGB, и показать ваши данные, используя оттенок составная часть. Таким образом, все значения вашей функции отобразятся в красивый цвет радуги и будут равномерно насыщены.

В приведенных ссылках вы сможете найти формулу для преобразования значения Hue в RGB.

0

По вопросам рекламы [email protected]