добавление / смешивание цветов в HSV Space - PullRequest
6 голосов
/ 12 сентября 2011

Я пытался запустить визуализацию в течение нескольких дней. Я генерирую дифракционное изображение и хочу покрасить его в зависимости от длины волны света.
Самый простой способ получить правильный цвет - использовать пространство HSV, где H изменяется в зависимости от длины волны, а S, V устанавливается на 1,0
. Увы, я не могу найти формулу / алгоритм / способ смешивания разных цветов в пространстве HSV.

Есть ли формула для смешивания в HSV или, может быть, другим понятным способом?

Ответы [ 2 ]

6 голосов
/ 12 сентября 2011

Честно говоря, я бы конвертировал RGB, усреднил компоненты и преобразовал обратно в HSV.

Это не самый эффективный способ, но вам, вероятно, понадобится или потребуется код RGB <-> HSV иРасчет RGB, вероятно, будет намного проще.

5 голосов
/ 12 сентября 2011

Одна из стандартных ссылок Компьютерная графика: принципы и практика , автор Foley et al.Об этом говорится в разделе 13.3.7 «Интерполяция в цветовом пространстве»:

«Когда два изображения смешаны [...], цвета могут быть довольно отдаленными, и аддитивная модель, такая какRGB подходит. Если, с другой стороны, цель состоит в том, чтобы интерполировать между двумя цветами фиксированного оттенка (или насыщенности) и поддерживать фиксированный оттенок (или насыщенность) для всех интерполированных цветов, тогда HSV или HLS предпочтительнее.обратите внимание, что интерполяция с фиксированной насыщенностью в HSV или HSL имеет значение , а не , которое зритель видит с фиксированной насыщенностью [...] "

Так что они согласны с предложением @andrewmuчто кажется лучшим предложением в целом.

...