Важным аспектом для работающим с какой бы то ни было графикой кодера является работа с цветом. Как известно любая информация, включая цвет, храниться в виде чисел. Преобразовать цвет в число можно, выделив какие-то отличительные характеристики, в зависимости от этого выбора изменяется точность передаваемого цвета, то есть общее число возможных закодированных оттенков. А выбор зависит от цели использования цвета. Ничего нового программисту придумать не придется, ибо цветовых моделей (пространств) придумано уже не мало. Нужно только научиться переводить цвет из одной модели в другую, чем и займемся. Для чего это надо? Допустим нам надо изменить какую-то характеристику цвета, скажем яркость, тогда цвет удобно перегнать в HLS, изменить соответствующую характеристику и перегнать снова в рабочее пространство. Если же мы хотим сделать рисунок краснее, то тут удобно использовать RGB и так далее. Таким образом можно будет добавить стили, эффекты или что-то еще.
Итак, поговорим об представлениях цвета. В Delphi обычно используют тип TColor, являющейся BGR цветом, веб-дизайнерам ближе HTML-color и LAB. Игроделы наверняка сталкивались с GLColor и D3DColor, по сути это RGB модель с прозрачностью, в первом случае это вещественное представление, во втором целочисленное.
1. RGB
Red, Green, Blue - красный, зеленый, синий. Цвет разбит на 3 характеристики, выражающие содержание основных цветов в данном. Модель является аддитивной, так как эти компоненты суммируются. Данное цветовое пространство используется при выводе на экран монитора. Это означает что модель аппаратно зависима, на разных мониторах одинаковые цвета будут выглядеть различно. RGB цвет используется с разной точностью: 8-битный RGB дает 256 цветов, 16-битный 65536 (схема 5-6-5), 24-битный 16777216 (8-8-8). В скобках указаны биты на канал.
2. CMYK
Cyan, Magenta, Yellow, Key - голубой, пурпурный, желтый, ключ (черный). Излюбленный формат всех принтеров. Позволяет экономить чернила. К сожалению, нельзя создать красок, аналогичных RGB для печати. Все дело в том, что эти цвета работают только "на просвет", т.е. через пленку-фильтр или люминофор монитора. Цвета словно вырезаются соответствующими фильтрами из сплошного спектра. В печати все происходит с точностью до наоборот, т. е. бумага поглощает весь спектр за исключением того цвета, в который она покрашена. Создать краски, являющиеся абсолютно точно "противоположными" (дополнительными) к цветам RGB, не удается, поэтому приходится вводить четвертую дополнительную краску - черную. Ее задача - усилить поглощение света в темных областях, сделать их максимально черными, т. е. увеличить тоновый диапазон печати. Четырехканальный CMYK весомее RGB и обрабатывается медленнее, занимая больше памяти.
3. HLS
Hue, Lightness, Space - оттенок, яркость, насыщенность. Довольно распространенный формат, удобен для применения различных эффектов. В отличие от двух предыдущих кубический спектров RGB и CMYK, HLS является коническим. Очень сходны с ней модели HSB (Hue, Space, Brightness) и HSV (Hue, Space, Value), так же конические. Эти модели наиболее близки к восприятию цвета человеком. Кроме того наиболее удобна для оптических и фотометрических расчетов: оттенок соответсвует длине волны, яркость - количеству света, насыщенность - интенсивности. Так что эта модель будет удобна при работе с источникмами света и материалами.
4. CIE XYZ
Нормальная цветовая схема – плоская модель цветопередачи. Красные компоненты цвета вытянуты вдоль оси Х координатной плоскости (горизонтально), а зеленые компоненты цвета вытянуты вдоль оси Y (вертикально). При таком способе представления каждому цвету соответствует определенная точка на координатной плоскости. Спектральная чистота цветов уменьшается по мере того, как вы перемещаетесь по координатной плоскости влево. Но в этой модели не учитывается яркость. Данная модель аппаратно независима, поддерживает намного больше цветов, чем способны различать современные устройства (сканеры, мониторы, принтеры) CIE XYZ построено на основе зрительных возможностей так называемого “Стандартного Наблюдателя”, то есть гипотетического зрителя, возможности которого были тщательно изучены и зафиксированы в ходе проведенных комитетом CIE длительных исследований человеческого зрения. Комитет CIE провел множество экспериментов с огромным количеством людей, предлагая им сравнивать различные цвета, а затем с помощью совокупных данных этих экспериментов построил так называемые функции соответствия цветов (color matching functions) и универсальное цветовое пространство (universal color space), в котором был представлен диапазон видимых цветов, характерный для среднестатистического человека. Функции соответствия цветов — это значения каждой первичной составляющей света, которые должны присутствовать, чтобы человек со средним зрением мог воспринимать все цвета видимого спектра
5. CIE Lab
Усовершенствованная XYZ. Конечной целью комитета CIE была разработка повторяемой системы стандартов цветопередачи для производителей красок, чернил, пигментов и других красителей. Самая важная функция этих стандартов — предоставить универсальную схему, в рамках которой можно было бы устанавливать соответствие цветов. В основу этой схемы легли Стандартный Наблюдатель и цветовое пространство XYZ, однако несбалансированная природа пространства XYZ, вызванная тем, что человек различает разницу между оттенками зелёного и жёлтого гораздо лучше, чем между оттенками красного и пурпурного, сделала эти стандарты трудными для четкой реализации. В результате CIE разработал более однородные цветовые шкалы – CIE Lab и CIE Luv. Из этих двух моделей более широко применяется модель CIE Lab. Хорошо сбалансированная структура цветового пространства Lab основана на той теории, что цвет не может быть одновременно зеленым и красным или желтым и синим. Следовательно, для описания красно-зеленого и желто-синего атрибутов можно воспользоваться одними и теми же значениями. Когда цвет представляется в пространстве CIE Lab, величина L обозначает яркость (luminosity), a - величину красно-зеленой составляющей, а b - величину желто-синей составляющей.
Конечно есть еще множество цветовых моделей, таких как CCY, Luv, модели Манселла и Оствальда, но они используются реже.