AHSL

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Цветовая модель AHSL

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

  • Alternative — альтернативная версия цветовой модели HSL.
  • Hue — оттенок от 0° до 360° (красный, оранжевый, жёлтый, зелёный, голубой, синий, фиолетовый). 0° и 360° соответствуют красному цвету #f00.
  • Saturation — насыщенность цвета от 0 до 255. Практически характеристика S соответствует «уровню прозрачности» слоя с данным цветом (заданным оттенком H и светлотой L), когда под ним находится слой с соответствующим заданному чёрно-белым цветом, который определяется как присваивание каналам RGB среднеарифметического значения. Например для цвета #f00 (R:255 G:0 b:0) будет соответствовать чёрно-белый цвет #555555 (R:85 G:85 B:85), а для #ff0 (R:255 G:255 B:0) — #aaaaaa (R:170 G:170 B:170).
  • Lightness — светлота от −100 до 100. Значению −100 соответствует чёрный цвет, а значению 100 — белый. Соответствует уровню прозрачности белого (если L>0) или чёрного (если L<0) цвета в процентах, «находящегося над заданным».

Конвертация

из RGB в AHSL

[math]\displaystyle{ H = \begin{cases} 0 & \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 \lt 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} }[/math]
[math]\displaystyle{ GRAY = \frac{R+G+B}{3} }[/math]
[math]\displaystyle{ R_0=0,~G_0=0,~B_0=0 }[/math]
[math]\displaystyle{ \mbox{if (} H\gt =0 \mbox{ and } H\lt =60 \mbox{) } R_0=255,~G_0=4.25 \times H }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 60 \mbox{ and } H\lt =120 \mbox{) } G_0=255,~R_0=255-4.25 \times (H-60) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 120 \mbox{ and } H\lt =180 \mbox{) } G_0=255,~B_0=4.25 \times (H-120) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 180 \mbox{ and } H\lt =240 \mbox{) } B_0=255,~G_0=255-4.25 \times (H-180) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 240 \mbox{ and } H\lt =300 \mbox{) } B_0=255,~R_0=4.25 \times (H-240) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 300 \mbox{ and } H\lt =360 \mbox{) } R_0=255,~B_0=255-4.25 \times (H-300) }[/math]
[math]\displaystyle{ GRAY_0 = \frac{R_0+G_0+B_0}{3} }[/math]
[math]\displaystyle{ L = \begin{cases} 0 & \mbox{if } GRAY = GRAY_0 \\ \frac{100 \times (GRAY-GRAY_0)}{255-GRAY_0}, & \mbox{if } GRAY \gt GRAY_0 \\ \frac{100 \times (GRAY-GRAY_0)}{GRAY_0}, & \mbox{if } GRAY \lt GRAY_0 \\ \end{cases} }[/math]
[math]\displaystyle{ \mbox{if (} L\gt 0 \mbox{) }R_0=R_0+\frac{L \times (255-R_0)}{100} }[/math]
[math]\displaystyle{ \mbox{if (} L\lt 0 \mbox{) }R_0=R_0+\frac{L \times R_0}{100} }[/math]
[math]\displaystyle{ S = \begin{cases} 0, & \mbox{if } R = GRAY \\ \frac{255 \times \left |R-GRAY\right |}{\left |R_0-GRAY\right |}, & \mbox{if } R \ne GRAY \\ \end{cases} }[/math]

из AHSL в RGB

[math]\displaystyle{ R=0,~G=0,~B=0 }[/math]
[math]\displaystyle{ \mbox{if (} H\gt =0 \mbox{ and } H\lt =60 \mbox{) } R=255,~G=4.25 \times H }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 60 \mbox{ and } H\lt =120 \mbox{) } G=255,~R=255-4.25 \times (H-60) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 120 \mbox{ and } H\lt =180 \mbox{) } G=255,~B=4.25 \times (H-120) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 180 \mbox{ and } H\lt =240 \mbox{) } B=255,~G=255-4.25 \times (H-180) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 240 \mbox{ and } H\lt =300 \mbox{) } B=255,~R=4.25 \times (H-240) }[/math]
[math]\displaystyle{ \mbox{if (} H\gt 300 \mbox{ and } H\lt =360 \mbox{) } R=255,~B=255-4.25 \times (H-300) }[/math]
[math]\displaystyle{ \mbox{if } L\gt 0 \mbox{, } \begin{cases} R=R+\frac{L \times (255-R)}{100} \\ G=G+\frac{L \times (255-G)}{100} \\ B=B+\frac{L \times (255-B)}{100} \\ \end{cases} }[/math]
[math]\displaystyle{ \mbox{if } L\lt 0 \mbox{, } \begin{cases} R=R+\frac{L \times R}{100} \\ G=G+\frac{L \times G}{100} \\ B=B+\frac{L \times B}{100} \\ \end{cases} }[/math]
[math]\displaystyle{ GRAY=\frac{R+G+B}{3} }[/math]
[math]\displaystyle{ R=GRAY+\frac{S\times(R-GRAY)}{255} }[/math]
[math]\displaystyle{ G=GRAY+\frac{S\times(G-GRAY)}{255} }[/math]
[math]\displaystyle{ B=GRAY+\frac{S\times(B-GRAY)}{255} }[/math]

Отличие AHSL от HSL

В цветовой модели AHSL каждому цвету соответствует «свой» чёрно-белый цвет, который определяется среднеарифметическими значениями каналов RGB. Когда в модели HSL цвету любого тона с одной светлотой соответствует один и тот же чёрно-белый цвет. Таким образом, чёрно-белое изображение, полученное из цветного путём изменения характеристики отвечающей за насыщенность в модели AHSL, будет «правильным» чёрно-белым изображением, в отличие от изображения полученного тем же способом с использованием модели HSL.

Получение цвета заданного моделью AHSL

Рассмотрим получение цвета, заданного его характеристиками по модели AHSL, в графическом редакторе. У нас есть тон цвета (H), насыщенность (S) и светлота (L). Создадим 3 слоя, которые будут отвечать за характеристики H, L, S. Средний слой зальём чистым цветом, оттенок которого равен H (H=0 — #ff0000; H=60 — #ffff00; H=120 — #00ff00; H=180 — #00ffff; H=240 — #0000ff; H=300 — #ff00ff; H=360 — #ff0000). Если L>0 верхний слой заливаем белым цветом (#ffffff), если L<0 — чёрным (#000000), если L=0 — верхний слой можно оставить пустым. Прозрачность верхнего слоя устанавливаем соответственно абсолютному значению L, считая что |L| - прозрачность верхнего слоя заданная в процентах. Теперь объединяем верхний и средний слои в один. Определяем получившийся цвет и рассчитываем соответствующий ему чёрно-белый: каналам RGB задаём их среднеарифметическое значение (например для красного цвета #ff0000 соответствующий чёрно-белый R:85; G:85; B:85). Нижний слой заливаем чёрно-белым цветом. Для верхнего слоя устанавливаем прозрачность равную характеристики S (насыщенность), считаем что S=255 это полностью непрозрачный слой, S=0 — полностью прозрачный. Объединив слои, мы получим заданный нам цвет по AHSL.

Преимущества

  • Цветовая модель AHSL близка к человеческому восприятию цветов. Характеристики модели AHSL дают явное представление о заданном цвете и отвечают на вопросы: «Какой это цвет?», «На сколько он насыщен?», «На сколько он светлый или тёмный?». В отличие от модели HSL, характеристика S модели AHSL даёт более корректное представление о насыщенности цвета.
  • AHSL предоставляет возможность изменения оттенка, насыщенности, яркости путём непосредственного изменения соответствующих характеристик H,S,L

Недостатки

  • Каждому цвету, с насыщенностью 0 соответствует 360 или более различных способов представления данного цвета.

Применение

Благодаря разложению цвета на его основные характеристики (оттенок, насыщенность, светлота) цветовую модель AHSL удобно использовать в графических редакторах при коррекции оттенка, насыщенности, яркости и контрастности изображения.

См. также

Ссылки