HSL

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

HSL, HLS или HSI (от англ. Hue, Saturation, Lightness (Intensity)) — цветовая модель, в которой цветовыми координатами являются тон, насыщенность и светлота. Следует отметить, что HSV и HSL — две разные цветовые модели (Lightness — светлота, что отличается от яркости).

Изображение, разложенное на составляющие H, S и L

Соотношения с другими моделями[править | править исходный текст]

Конвертация из RGB[править | править исходный текст]

Выбор цвета фигуры в модели HSL (c альфа-каналом) в векторном графическом редакторе Inkscape


H =
\begin{cases}
\mbox{undefined} & \mbox{if } MAX = MIN \\
60^\circ \times \frac{G - B}{MAX - MIN} + 0^\circ,   & \mbox{if } MAX = R  \\ &\mbox{and } G \ge B \\
60^\circ \times \frac{G - B}{MAX - MIN} + 360^\circ,   & \mbox{if } MAX = R \\ &\mbox{and } G < B \\
60^\circ \times \frac{B - R}{MAX - MIN} + 120^\circ, & \mbox{if } MAX = G \\
60^\circ \times \frac{R - G}{MAX - MIN} + 240^\circ, & \mbox{if } MAX = B
\end{cases}
, 
S = 
\begin{cases}
0 & \mbox{if } L = 0 \mbox{ or } MAX = MIN \\
\frac{MAX-MIN}{MAX+MIN} = \frac{MAX-MIN}{2L}, & \mbox{if } 0 < L \leq \frac{1}{2} \\
\frac{MAX-MIN}{2-(MAX+MIN)} = \frac{MAX-MIN}{2-2L}, & \mbox{if } \frac{1}{2} < L < 1  \\
\end{cases}
, или, в общем случае, 
S = \frac{MAX-MIN}{1-|1-(MAX+MIN)|}
,

L = \begin{matrix} \frac{1}{2} \end{matrix} (MAX + MIN), где:

  • R, G, B — значения цвета в цветовой модели RGB, значения в диапазоне [0; 1] (R - красный, G - зелёный, B - синий).
  • MAX — максимум из трёх значений (R, G, B)
  • MIN — минимум из трёх значений (R, G, B)
  • H — тон [0; 360]
  • S — насыщенность [0; 1]
  • L — светлота [0; 1]

Конвертация в RGB[править | править исходный текст]

Q=
\begin{cases}
L \times (1.0+S), & \mbox{if } L<0.5 \\
L+S-(L \times S), & \mbox{if } L \ge 0.5
\end{cases}

P = 2.0 \times L - Q \,

H_k = {H \over 360} \, (приведение к интервалу [0,1])

T_R = H_k+\frac{1}{3} \,

T_G = H_k \,

T_B = H_k-\frac{1}{3} \,

\mbox{if } T_c < 0 \rightarrow T_c = T_c + 1.0 \quad \mbox{for each}\,c=R,G,B \,

\mbox{if } T_c > 1 \rightarrow T_c = T_c - 1.0 \quad \mbox{for each}\,c=R,G,B \,

Для каждого цвета c=R,G,B:

\qquad \mathrm{color}_c=
\begin{cases}
P+ \left((Q-P) \times 6.0 \times T_c\right), & \mbox{if } T_c < \frac{1}{6}  \\
Q, & \mbox{if } \frac{1}{6} \le T_c < \frac{1}{2}  \\
P+\left((Q-P) \times (\frac{2}{3}-T_c) \times 6.0 \right), & \mbox{if } \frac{1}{2} \le T_c < \frac{2}{3} \\
P, & \mbox{otherwise }
\end{cases}