Взято из книги Д. Роджерс "Алгоритмические основы машинной графики"
Смит предложил построить модель субъективного восприятия в виде объемного
тела HSV (цветовой тон, насыщенность, светлота).
Hасыщенность меняется от 0 до 1. Отметим, что насыщенность зависит от
цветового охвата те от расстояния от оси до границы для каждого V. При S=1
цвета или их дополнения полностью насыщенны. Hенулевая линейная комбинация 3
основных цветов не может быть полностью насыщенна. Если S=0, то тон H
неопределен, те на центральной оси находятся ахроматические, серые цвета.
Модель HSV соотвествует тому, как составляют цвета художники. Чистым
пигментам отвечают значения S=1, V=1; разбелам - цвета с увеличенным
содержанием белого, те с меньшим S; оттенкам - цвета с уменьшенным V, к-рые
получаются при добавлении черного. Тон изменяется при уменьшении как V так и
S.
Преобразование из цветового пространства RGB->HSV проводиться по
данному ниже алгоритму, также взятому у Смита:
RGB - остновные цвета (0-1),
H - цветовой тон (0-360ш), 0ш - красный
S - насыщенность (0-1)
V - светлота (0-1)
MAX - функция определения максимума
MIN - функция определения минимума
/Определение светлоты/
V=MAX(R, G, B)
/Определение насыщенности/
TEMP=MIN(R, G, B)
if V=0 then S=0 else S=(V-TEMP)/V end if
/Определение цветового тона/
if S=0 then
H=Hеопределенность
else
Cr=(V-R)/(V-TEMP)
Cg=(V-G)/(V-TEMP)
Cb=(V-B)/(V-TEMP)
/Цвет между желтым и пурпурным/
if R=V then H=Cb-Cg
/Цвет между голубым и желтым/
if G=V then H=2+Gr-Cb
/Цвет между пурпурным и голубым/
if B=V then H=4+Cg-Cr
H=H*60
/Приведение к положительным величинам/
if H<0 then H=H+360 end if
finish
|