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

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

HSV (англ. Hue, Saturation, Value — тон, насыщенность, значение) или HSB (англ. Hue, Saturation, Brightness — оттенок, насыщенность, яркость) — цветовая модель, в которой координатами цвета являются:

Шкала оттенков — Hue
  • Hue — цветовой тон, (например, красный, зелёный или сине-голубой). Варьируется в пределах 0—360°, однако иногда приводится к диапазону 0—100 или 0—1.
  • Saturation — насыщенность. Варьируется в пределах 0—100 или 0—1. Чем больше этот параметр, тем «чище» цвет, поэтому этот параметр иногда называют чистотой цвета. А чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому.
  • Value (значение цвета) или Brightness — яркость. Также задаётся в пределах 0—100 и 0—1.

Модель была создана Элви Реем Смитом, одним из основателей Pixar, в 1978 году. Она является нелинейным преобразованием модели RGB.

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

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

Трёхмерные визуализации пространства HSV[править | править код]

Цилиндр[править | править код]

Цилиндр
HSV cyclinder.gif

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

Конус[править | править код]

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

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

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

Визуализация HSV в прикладном ПО[править | править код]

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

Цветовой круг[править | править код]

Цветовой круг в прикладном ПО

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

Цветовое кольцо[править | править код]

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

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

Изменение одного компонента[править | править код]

Три уровня яркости при увеличивающейся насыщенности
Три уровня насыщенности при увеличивающейся яркости

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

Матрица соседних оттенков[править | править код]

3×3×3

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

HSV и восприятие цвета[править | править код]

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

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

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

RGB → HSV[править | править код]

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

Считаем, что: (1) H [ 0 , 360 ) (2) S , V , R , G , B [ 0 , 1 ] \begin{align} H & \in \left[ 0, 360 \right) \\ S,V,R,G,B & \in \left[ 0, 1 \right] \end{align}

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

H = { H = \begin{cases} \\ \\ \\ \\ \\ \\ \\ \\ \end{cases} 0 , 0, если M A X = M I N MAX = MIN
60 × G B M A X M I N + 0 , 60 \times \frac{G - B}{MAX - MIN} + 0, если M A X = R   MAX = R~ и G B G \ge B
60 × G B M A X M I N + 360 , 60 \times \frac{G - B}{MAX - MIN} + 360, если M A X = R   MAX = R~ и G < B G < B
60 × B R M A X M I N + 120 , 60 \times \frac{B - R}{MAX - MIN} + 120, если M A X = G MAX = G
60 × R G M A X M I N + 240 , 60 \times \frac{R - G}{MAX - MIN} + 240, если M A X = B MAX = B
S = { S = \begin{cases} \\ \\ \end{cases} 0 , 0, если M A X = 0 , MAX = 0,
иначе 1 M I N M A X 1 - \frac {MIN} {MAX}

V = M A X V = MAX \,

HSV → RGB[править | править код]

H i = H_i = H 60 mod 6 \left\lfloor { H \over 60 } \right\rfloor\mod 6
f = f = H 60 H 60 { H \over 60 } - \left\lfloor { H \over 60 } \right\rfloor
p = p = V ( 1 S ) V ( 1 - S ) \,
q = q = V ( 1 f S ) V ( 1 - f S ) \,
t = t = V ( 1 ( 1 f ) S ) V ( 1 - ( 1 - f ) S ) \,
если H i = 0 H_i = 0 \rightarrow R = V , R = V, G = t , G = t, B = p B = p
если H i = 1 H_i = 1 \rightarrow R = q , R = q, G = V , G = V, B = p B = p
если H i = 2 H_i = 2 \rightarrow R = p , R = p, G = V , G = V, B = t B = t
если H i = 3 H_i = 3 \rightarrow R = p , R = p, G = q , G = q, B = V B = V
если H i = 4 H_i = 4 \rightarrow R = t , R = t, G = p , G = p, B = V B = V
если H i = 5 H_i = 5 \rightarrow R = V , R = V, G = p , G = p, B = q B = q

В компьютерной графике компоненты S и V принято представлять целым числом от 0 до 255 (в окне выбора цветов в Microsoft Windows — от 0 до 240) вместо вещественного от 0 до 1. При целочисленном кодировании для каждого цвета в HSV есть соответствующий цвет в RGB. Однако обратное утверждение не является верным: некоторые цвета в RGB нельзя выразить в HSV так, чтобы значение каждого компонента было целым. Фактически, при таком кодировании доступна только 1 256 \frac{1}{256} часть цветового пространства RGB.

Комплементарные цвета[править | править код]

Icons-mini-icon 2main.png Основная статья: Комплементарные цвета

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

H = H^\prime = { H 180 , if  H 180 H + 180 , if  H < 180 \begin{cases}H - 180, & \mbox{if } H \ge 180 \\H + 180, & \mbox{if } H < 180 \end{cases}
S = S^\prime = V S V ( S 1 ) + 1 {VS \over V(S - 1) + 1}
V = V^\prime = V ( S 1 ) + 1 V(S - 1) + 1

См. также[править | править код]

Образцы цветовых моделей[править | править код]

При помощи подвода «мыши» к образчикам таблицы цветов и в случае действующих ниже образчиков, можно видеть значения R, G и B, которые заложены в каждом из них в «tooltip». [1]

HSV[править | править код]

  • Таблицы цветов HSV:
H = 180°
(Cyan)
H = 0°
(Red)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  
H = 210°
(Blue-Cyan)
H = 30°
(Yellow-Red)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  
H = 240°
(Blue)
H = 60°
(Yellow)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  
H = 270°
(Magenta-Blue)
H = 90°
(Green-Yellow)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  
H = 300°
(Magenta)
H = 120°
(Green)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  
H = 330°
(Red-Magenta)
H = 150°
(Cyan-Green)
V \ S 1 ¾ ½ ¼ 0 ¼ ½ ¾ 1
1                  
                 
¾                  
                 
½                  
                 
¼                  
                 
0                  

Примечания[править | править код]