Считается, что глаз человека способен различать около $16$ млн. оттенков цвета. Но как объяснить, к примеру, компьютеру, что один объект красного цвета, а другой розового? В чем между этими двумя цветами разница, которую мы в отличие от устройства хорошо различаем на глаз. Для формального описания цвета разработали несколько цветовых моделей и соответствующих им способов кодирования.
Цветовая модель RGB
Название данной модели происходит от названий трех базовых цветов, используемых в модели — Red, Green, Blue, а точнее их первых букв. Эта цветовая модель описывает способ получения цвета на экране монитора или телевизора, т.е. устройства, содержащего электронно-лучевую трубку. Модель аддитивная (цвет получается при сложении точек трех базовых цветов, каждая своей яркости). Причем яркость каждого базового цвета может принимать значения от $0$ до $255$ ($256$ значений), таким образом, модель позволяет кодировать $2563$ или около $16,7$ млн. цветов. Эти тройки базовых цветов (светящиеся точки) расположены очень близко друг к другу, так, когда мы смотрим на эти триады из светящихся точек, то каждая тройка сливается для нас в большую точку определенного цвета. Чем выше яркость цветной точки, тем большее количество этого цвета добавится к результирующей (тройной) точке.
Рисунок 1.
При минимальной совокупной яркости базовых точек, а точнее равной нулю, получим черную точку. В противном случае, когда яркость максимальна ($255$), при сложении базовых точек получим белую точку. Когда все яркости базовых цветов одинаковы, получаем серую точку (чем выше значение яркостей, тем светлее точка). Точку любого красивого насыщенного цвета можно получить, если при смешении базовых цветов одного цвета гораздо меньше, чем двух других. Например, сиреневый цвет получается, если при этом взять максимальное равное количество красного и синего цветов и не станем брать зеленого, а желтый цвет — достигается смешением красного и зеленого.
Устройства ввода графической информации такие, как сканер, цифровая камера, и устройство вывода (монитор) работают в этой модели. RGB-кодирование лучше всего помогает описать цвет, излучаемый некоторым устройством, например, монитором. Когда же мы смотрим на изображение, отпечатанное на бумаге, ситуация совершенно иная. Мы воспринимаем не прямые лучи источника, которые попадают нам в глаза, а лучи, отраженные от поверхности. Белый свет, излучаемый определенным источником (например, солнцем или лампочкой) и содержащий волны всего видимого спектра, попадает на бумагу с нанесенной на нее краской. Краска при этом словно впитывает часть лучей (их энергия уходит на нагрев), а оставшиеся воспринимают наши глаза, это и есть тот цвет, который мы видим.
Рисунок 2.
Например, если краска поглотит красные лучи, при этом останутся только синие и зеленые – мы, в свою очередь, порадуем себя созерцанием голубого цвета. В этом случае красный и голубой цвета дополнят друг друга, так же, как и зеленый с фиолетовым и синий с желтым. Действительно, если из белого цвета (его RGB - код #FFFFFF) удалить зеленую составляющую, то получим цвет #FF00FF (фиолетовый, пурпурный), а если удалить синюю составляющую, то получим цвет #FFFF00 (желтый).
Цветовая модель CMY
Данная модель строится при использовании 3 дополнительных цветов – голубого, фиолетового и желтого (англ. Cyan – голубой, Magenta – фиолетовый,Yellow – желтый), и применяется при выводе изображения на печать. Значения $C=M=Y=0$ соответствуют белому цвету, так как на белую бумагу не наносится никакая краска и все лучи при этом отражаются.
Рисунок 3.
Когда будем добавлять голубой цвет, красные лучи станут поглощаться, останутся лишь синие и зеленые. А если сверху все покроем еще и желтой краской, она, в свою очередь, поглотит синие лучи, останется только зеленый.
При смешении голубой, фиолетовой и желтой красок теоретически должен получить черный цвет, поскольку все лучи поглотятся. Но на практике так не получается. Краски по своей структуре не всегда идеальны, возможно небольшое наличие некоторых примесей, поэтому вместо черного цвета зачастую получается грязно-коричневый. Кроме того, при печати черных областей увеличивается расход краски. Нужно также учитывать, что обычно на принтерах часто распечатывают черный текст, а цветные чернила более дорогостоящие, чем черные.
Чтобы разрешить эту проблему, в набор красок добавили черный, так называемый ключевой цвет (англ. Key color), поэтому получившуюся модель обозначили CMYK. Изображение, которое печатает большинство принтеров, состоит из точек этих $4$ цветов, которые расположены в виде узора очень близко друг к другу. Это позволяет создать зрительное ощущение того, что рисунок состоит из разных цветов.
Окрашенные несветящиеся объекты поглощают часть спектра белого света, освещающего их, и отражают оставшееся излучение. В зависимости от области спектра, в которой происходит поглощение, объекты отражают разные цвета (окрашены в них). Цвета, которые используют белый свет, удаляя из него определенные участки спектра, называются субтрактивными. Для их описания используется субтрактивная модель CMY (Cyan, Magenta, Yellow). В этой модели основные цвета образуются путем вычитания из белого цвета основных аддитивных цветов модели RGB. То есть основных субтрактивных цветов будет три: голубой (белый минус красный), пурпурный (белый минус зеленый), желтый (белый минус синий). При смешении двух субтрактивных составляющих результирующий цвет затемняется (поглощено больше света, положено больше краски). Таким образом, при смешении максимальных значений всех трех компонентов должен получиться черный цвет. При полном отсутствии краски (нулевые значения составляющих) получится белый цвет (белая бумага). Смещение равных значений трех компонентов позволит получить нам оттенки серого цвета.
Данная модель используется в полиграфии и является там основной. Пурпурный, голубой, желтый цвета составляют так называемую полиграфическую триаду, и при печати красками этих цветов большая часть видимого цветового спектра воспроизводится на бумаге. Однако реальные краски имеют примеси, их цвет может быть не идеальным, и смешение трех основных красок, которое должно давать черный цвет, дат в результате неопределенный грязно-коричневый. Кроме того, для получения интенсивного черного цвета необходимо увеличить количество краски каждого цвета, поступающей в процессе печати на бумагу, что приведет к переувлажнению бумаги, которое повлечет за собой снижение качества печати. К тому же использовать много краски – это достаточно неэкономно.
Для повышения качества отпечатка в число основных полиграфических красок (и в модель) внесена черная. Именно это позволило добавить последнюю букву в название модели CMYK, хотя и не совсем обычно: $C$ - это Cyan (Голубой), $M$ - это Magenta (Пурпурный), $Y$ - Yellow (Желтый). Черный компонент сокращается до буквы $K$, ведь эта краска является основной, ключевой (Key) в процессе цветной печати. Таким образом, число компонентов увеличилось до $4$. Как и для модели RGB, количество каждого компонента может быть выражено в процентах или градациях от $0$ до $255$, но для кодирования цвета одного пикселя потребуется $32$ бита ($4$ байта).
Любое компьютерное изображение характеризуется помимо геометрических размеров и разрешения (количество точек на один дюйм), максимальным числом вероятных относительно использования цветов. Максимальное количество цветов, которое может быть использовано в изображении данного типа, называется глубиной цвета. Кроме полноцветных, существуют типы изображений с различной глубиной цвета — черно-белые штриховые, в оттенках серого, с индексированным цветом. Некоторые типы изображений имеют одинаковую глубину цвета, но различаются по цветовой модели. Для описания черно-белого штрихового рисунка достаточно всего $1$ бита на каждый пиксель изображения.
Растровая и векторная графика
Описанная выше техника формирования изображений из точек различных цветов является наиболее распространенной и называется растровой. Но кроме растровой графики, в компьютерах используется еще и так называемая векторная графика.
Векторные изображения создаются только при помощи компьютера и формируются не из пикселей, а из графических примитивов (линий, многоугольников, окружностей и др.).
Векторная графика - это чертежная графика. Она очень удобна для компьютерного «рисования» и широко используется дизайнерами при графическом оформлении печатной продукции, в том числе создании огромных рекламных баннеров.
Векторное изображение в двоичном коде записывается как совокупность примитивов с указанием их размеров, цвета заливки, места расположения на холсте и некоторых других свойств.
Например, чтобы записать на запоминающем устройстве векторное изображение круга, компьютеру достаточно в двоичный код закодировать тип объекта (окружность), координаты его центра на холсте, длину радиуса, толщину и цвет линии, цвет заливки.
В растровой системе пришлось бы кодировать цвет каждого пикселя. И если размер изображения большой, для его хранения понадобилось бы значительно больше места на запоминающем устройстве.
Тем не менее, векторный способ кодирования не позволяет записывать в двоичном коде реалистичные фото. Поэтому все фотокамеры работают только по принципу растровой графики. Рядовому пользователю иметь дело с векторной графикой в повседневной жизни приходится не часто.