Я пытаюсь написать фрагмент кода, который должен отображать данные в значения 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)
Существуют ли какие-либо предлагаемые алгоритмы для использования вместо этого, или это нормально взломанная кусочная функция?
Это изображение, сгенерированное этим текущим алгоритмом.
Я думаю, что вы должны использовать полосу для проверки своей функции, так как было бы легче увидеть «скорость» перехода в линейных данных.
Вот действительно хорошая статья об использовании расходящихся цветовых карт: http://www.sandia.gov/~kmorel/documents/ColorMaps/
Это описывает математику позади этого. Я знаю, что для такой простой задачи использование цветовых пространств Lab и MSH кажется излишним, но если вам нужны цветные карты хорошего качества, это действительно того стоит.
Кроме этого, я не знаю какой-либо «ручной» реализации функции (то есть не использовал уже сложные функции из matlab или R)
Я думаю, что это может быть более полезным для использования Цветовое пространство HSV в отличие от RGB, и показать ваши данные, используя оттенок составная часть. Таким образом, все значения вашей функции отобразятся в красивый цвет радуги и будут равномерно насыщены.
В приведенных ссылках вы сможете найти формулу для преобразования значения Hue в RGB.