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 удобно использовать в графических редакторах при коррекции оттенка, насыщенности, яркости и контрастности изображения.