Российский государственный гуманитарный университет
Опубликован: 13.07.2022 | Доступ: свободный | Студентов: 282 / 10 | Длительность: 11:54:00
Специальности: Программист
Лекция 3:

Представление графической информации

Когда графическое изображение выводится на цветной принтер, выполняется преобразование представления цвета из модели RGB в модель CMYK. Рассмотрим формулы преобразования координат цвета между моделями RGB и CMYK.

Пусть r, g и b - компоненты цвета в модели RGB, и 0 \le r, g, b \le 1.

Если, в частности, R, G, B - целые компоненты красного, зеленого и синего цвета, соответственно, такие что 0 \le R, G, B \le 255, то положим r=\frac{R}{255}, g=\frac{G}{255}, b=\frac{B}{255}.

Обозначим K = max(r, g, b). Пусть K \ne 0. Тогда цвет rgb(r, g, b) имеет в цветовой модели CMYK следующие компоненты:

c=1-\frac{r}{K}; m=1-\frac{g}{K}; y=1-\frac{b}{K}; k=1-K

Если K = 0, то полагают rgb(0, 0, 0) = cmyk(0, 0, 0, 1).

Соответственно, формулы преобразования цветовых компонент из модели CMYK в модель RGB имеют вид: r = (1 - c)(1 - k); g = (1 - m)(1 - k); b = (1 - y)(1 - k).

Для 24-битного представления компоненты цвета в модели RGB равны округлениям до целых значений R = 255r, G = 255g и B = 255b.

Пример 5. Найдем компоненты цвета rgb(202, 124, 50) (оттенок коричневого цвета) в модели CMYK. Имеем: r =\frac{202}{255} = 0,792, g = 0,486, b = 0,196. Поэтому K = 0,792. Следовательно, c = 0, m = 0,386, y = 0,752, k = 0,208. Таким образом, rgb(202, 124, 50) = rgb(0,79, 0,49, 0,2) = cmyk(0, 0,39, 0,75, 0,21) = cmyk(0%, 39%, 75%, 21%).

Обратное преобразование цвета cmyk(0, 0,386, 0,752, 0,208) в модель RGB приведет к исходному результату.

Пример 6. Пусть цвет в модели CMYK имеет компоненты cmyk(0,3, 0,15, 0,2, 0,45). Тогда 1 - k = 0,55, поэтому компоненты цвета в модели RGB имеют вид: r = 0,7 * 0,55 = 0,385; g = 0,85 * 0,55 = 0,4675; b = 0,8 * 0,55 = 0,44. Для 24-битного представления получаем: R = 98, G = 119, B = 112.

Обратное преобразование из модели RGB в модель CMYK приведет к представлению, которое будет отличаться от исходного: c = 0,176, m = 0, y = 0,059, k = 0,533. Таким образом, один и тот же цвет в модели CMYK может иметь различные представления. Последовательные преобразования из одной модели в другую будут приводить к тем же результатам, если хотя бы одна из компонент c, m и y - нулевая.

Цветовая модель HSV

Цветовая модель HSV (или HSB) представляет цветовое пространство в виде компонент тона, насыщенности и яркости. Модель соответствует субъективному восприятию цвета человеком.

Цветовое пространство модели HSV представляется в виде вертикального конуса с вершиной внизу ( рис. 3.4 (a)). Вершина конуса соответствует черному цвету. Ось яркости направлена вверх, тону соответствует направление вдоль окружности основания конуса, а насыщенность определяется углом между осью яркости и лучом, соединяющим вершину конуса и заданную точку ( рис. 3.4 (b)). Точки оси конуса соответствуют цветам с нулевой насыщенностью - оттенкам серого, от черного до белого.

На окружности основания конуса отмечаются цвета спектра, от красного до фиолетового, к которым добавлены красно-фиолетовые тона. Чистый красный цвет соответствует нулю. Основные цвета моделей RGB и CMYK располагаются в вершинах правильных треугольников, при этом их дополнительные цвета попадают на концы диагоналей. Тон цвета измеряется в углах, от 0^\circ до 360^\circ, либо от 0 до 1, в направлении против часовой стрелки. Цвета этой окружности имеют максимальные насыщенность и яркость. Показатели насыщенности и яркости имеют значения от 0 до 1, также они могут указываться в процентах от 1.

 Модель HSV: (a) цветовой конус; (b) система координат

Рис. 3.4. Модель HSV: (a) цветовой конус; (b) система координат

Пример 7. В таблице 3.1 представлены компоненты некоторых цветов в моделях HSV и RGB. Параметр тона указан в градусах, а параметры насыщенности и яркости - в процентах.

Таблица 3.1. Основные цвета в моделях HSV и RGB
Название HSV RGB
красный (0, 100, 100) (255, 0, 0)
оранжевый (30, 100, 100) (255, 127, 0)
желтый (60, 100, 100) (255, 255, 0)
зеленый (120, 100, 100) (0, 255, 0)
голубой (180, 100, 100) (0, 255, 255)
синий (240, 100, 100) (0, 0, 255)
фиолетовый (270, 100, 100) (127, 0, 255)
пурпурный (300, 100, 100) (255, 0, 255)
черный (0, 0, 0) (0, 0, 0)
белый (0, 0, 100) (255, 255, 255)

Рассмотрим формулы преобразования цветовых компонент из модели RGB в модель HSV. Пусть компоненты цвета rgb(r, g, b) находятся в пределах от 0 до 1. Обозначим компоненты цвета в модели HSV через H, S и V, соответственно, где S и V принадлежат отрезку [0; 1], а H измеряется в градусах от 0 до 360.

Параметр яркости имеет вид: V = max(r, g, b).

Положим \Delta = V - min(r, g, b) и \delta=\frac{60}{\Delta}, для \Delta \ne 0. Параметры насыщенности (S) и тона (H) находятся следующим образом:

s=\begin{cases}
0, & V=0\\
\frac{\Delta}{V}, & V \ne 0
\end{cases}\\
H=(H'+360) \quad \mod \quad 360,

где

 H'=\begin{cases}
0, & \Delta=0\\
(g-b)\delta, & V=r\\
(b-r)\delta+120, & V = g\\
(r-g)\delta+240, & V=b
\end{cases}

Пример 8. Пусть цвет в 24-битном представлении имеет компоненты rgb(38, 200, 172) (оттенок бирюзового). После деления составляющих на 255 получим: r = 0,149, g = 0,784, b = 0,6745. Следовательно, V = 0,784, ,math>\Delta = 0,635,/math>, \delta = 94,488. Значит, S = 0,81, H = 169,653. Поэтому rgb(38, 200, 172) = rgb(0,15, 0,78, 0,67) = hsv(170^\circ, 81\%, 78\%).

Пример 9. Пусть цвет имеет компоненты rgb(255, 20, 150) (темно-розовый). Имеем: r = 1, g = 0,078, b = 0,588. Следовательно, V = 1, S = 0,922, H = - 33,189 + 360 = 326,811. Итак, rgb(255, 20, 150) = rgb(1, 0,08, 0,59) = hsv(327^\circ, 92\%, 100\%).

Теперь рассмотрим формулы преобразования из модели HSV в модель RGB. Обозначим компоненты цвета в модели HSV через H, S и V, где H измеряется в градусах от 0 до 360, а S и V имеют значения в пределах от 0 до 1. Пусть r, g и b - компоненты цвета в модели RGB из [0; 1].

ПоложимH_i=[H/60] \mod 6 и f=H/60-H_i.

Обозначим p = (1 - S)V, q = (1 - fS)V и t = (1 - (1 - f)S)V.

Значения r, g и b определяются значением H_i (табл. 3.2) - номера одного из шести секторов круга - красно-желтого (0), желто-зеленого (1), зелено-голубого (2), сине-голубого (3), сине-фиолетового (4) и фиолетово-красного (5).