HSV (цветовая модель)

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Значения Шаблон:Много внутренних ссылок HSV (Шаблон:Lang-en — тон, насыщенность, значение) или HSB (Шаблон:Lang-en — тон, насыщенность, яркость) — цветовая модель, в которой координатами цвета являются:

ьукн
Шкала оттенков — Hue
  • Hue — цветовой тон, например, красный, зелёный или синий. H<360, однако иногда приводится к H<100 или H<1.
  • Saturation — насыщенность. S100 или S1. Чем больше этот параметр, тем «чище» цвет, поэтому этот параметр иногда называют чистотой цвета. А чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому.
  • Value — значение цвета, или Brightness — яркость. Также, как и в насыщенности, V100 или V1.

Модель была создана Шаблон:Нп3, одним из будущих сооснователей Pixar, в середине 1970-х. Она является нелинейным преобразованием модели RGB.

Цвет, представленный в HSV, зависит от устройства, на которое он будет выведен, так как HSV — преобразование модели RGB, которая тоже зависит от устройства. Для получения кода цвета, не зависящего от устройства, используется модель Lab.

HSV (HSB) и HSL — две разные цветовые модели.

Трёхмерные визуализации пространства HSV

Цилиндр

Цилиндр

Простейший способ отобразить HSV в трёхмерное пространство — воспользоваться цилиндрической системой координат. Здесь координата H определяется полярным углом, S — радиус-вектором, а VZ-координатой. То есть, оттенок изменяется при движении вдоль окружности цилиндра, насыщенность — вдоль радиуса, а яркость — вдоль высоты. Несмотря на «математическую» точность, у такой модели есть существенный недостаток: на практике количество различимых глазом уровней насыщенности и оттенков уменьшается при приближении яркости (V) к нулю (то есть, на оттенках, близких к чёрному). Также на малых S и V появляются существенные ошибки округления при переводе RGB в HSV и наоборот. Поэтому чаще применяется коническая модель. Шаблон:Clear

Конус

Коническое представление модели

Другой способ визуализации цветового пространства — конус. Как и в цилиндре, оттенок изменяется по окружности конуса. Насыщенность цвета возрастает с отдалением от оси конуса, а яркость — с приближением к его основанию. Иногда вместо конуса используется шестиугольная правильная пирамида.

Шаблон:Clear

Оба этих способа являются удобной трёхмерной иллюстрацией пространства HSV. Но из-за трёхмерности они в прикладном ПО не применяются.

Визуализация HSV в прикладном ПО

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

Цветовой круг

Файл:HSV-Slider.png
Цветовой круг в прикладном ПО

Эта визуализация состоит из цветового круга (поперечного сечения цилиндра) и движка яркости (высоты цилиндра). Эта визуализация получила широкую известность по первым версиям ПО компании Corel. На данный момент применяется чрезвычайно редко, чаще используют кольцевую модель («а-ля Macromedia»)

Шаблон:Clear

Цветовое кольцо

Цветовое кольцо с осями H, S и V
Поворачивающееся кольцо

Оттенок представляется в виде радужного кольца, а насыщенность и значение цвета выбираются при помощи вписанного в это кольцо треугольника. Его вертикальная ось, как правило, регулирует насыщенность, а горизонтальная позволяет изменять значение цвета. Таким образом, для выбора цвета нужно сначала указать оттенок, а потом выбрать нужный цвет из треугольника. Шаблон:Clear

Изменение одной компоненты

Три уровня яркости при неизменной насыщенности
Три уровня насыщенности при неизменной яркости

На этих двух диаграммах показываются цвета, различающиеся только одной компонентой. Шаблон:Clear

Матрица соседних оттенков

3×3×3

Различие близких цветов можно отобразить другим путём — показать рядом несколько цветов, ненамного отличающихся своими компонентами. На рисунке справа показано 27 близких оттенков оранжевого, отсортированных по яркости и располагающихся по спирали. Квадратики в центре показывают те же цвета, но отсортированные в более линейном порядке.

HSV и восприятие цвета

Изображение и его отдельные компоненты — H, S, V. На разных участках изображения можно проследить изменения компонент

Часто художники предпочитают использовать HSV вместо других моделей, таких как RGB и CMYK, потому что они считают, что устройство HSV ближе к человеческому восприятию цветов. RGB и CMYK определяют цвет как комбинацию основных цветов (красного, зелёного и синего или жёлтого, пурпурного, бирюзового и чёрного соответственно), в то время как компоненты цвета в HSV отображают информацию о цвете в более привычной человеку форме: Что это за цвет? Насколько он насыщенный? Насколько он светлый или тёмный? Цветовое пространство HSL представляет цвет похожим и даже, возможно, более интуитивно понятным образом, чем HSV.

Преобразования цветовых компонент между моделями

RGB → HSV

Иллюстрация, демонстрирующая отношение между RGB и HSV

Файл:RGB 2 HSV conversion with grid.ogg Считаем, что:

H[0,360]S,V,R,G,B[0,1]

Пусть MAX — максимальное значение из R, G и B, а MIN — минимальное из них.

H={ не определено, если MAX=MIN
60×GBMAXMIN+0, если MAX=R и GB
60×GBMAXMIN+360, если MAX=R и G<B
60×BRMAXMIN+120, если MAX=G
60×RGMAXMIN+240, если MAX=B
S={ 0, если MAX=0;
1MINMAX, иначе

V=MAX

HSV → RGB

Для любых оттенков H[0,360], насыщенности S[0,100] и яркости V[0,100]:

Hi=H60mod6Vmin=(100S)*V100a=(VVmin)*Hmod6060Vinc=Vmin+aVdec=Va

Hi R G B
0 V Vinc Vmin
1 Vdec V Vmin
2 Vmin V Vinc
3 Vmin Vdec V
4 Vinc Vmin V
5 V Vmin Vdec

Полученные значения красного, зелёного и синего каналов RGB исчисляются в процентах. Чтобы привести их в соответствие распространённому представлению COLORREF необходимо умножить каждое из них на 255100.

При целочисленном кодировании для каждого цвета в HSV есть соответствующий цвет в RGB. Однако обратное утверждение не является верным: некоторые цвета в RGB нельзя выразить в HSV так, чтобы значение каждого компонента было целым. Фактически, при таком кодировании доступна только 1256 часть цветового пространства RGB.

Дополнительные цвета

Шаблон:Main Два цвета называются дополнительными, если при смешивании их в равной пропорции получается чистый серый цвет. Если задан один цвет (H,S,V), то обязательно существует дополнительный ему цвет (H,S,V). Поскольку результирующий цвет должен быть серым, его насыщенность (S) должна быть равна 0. Таким образом,

H= {H180,if H180H+180,if H<180
S= VSV(S1)+1
V= V(S1)+1

См. также

Ссылки

Шаблон:Цветовые модели