
Всё началось в тот самый злополучный день, когда мне понадобилось написать приложение, работающее с массивами цветовых данных. Забравшись с головой в ответы на Stack Overflow и исходники различных библиотек, я понял, что попал в ад совершенно незнакомой мне терминологии. Примеры кода пестрили ошибками, а в определениях путались даже солидные гуру форумов о цвете.
Мир цвета оказался наполнен такими вещами, как цветовые модели, цветовые пространства и модели представления цвета. Разложив у себя в голове полученные знания по полочкам, я решил поделиться ими, попутно объясняя, зачем и в каких случаях они могут пригодиться.
Предлагаю окунуться в волшебный мир цвета, выходящий за рамки RGB-триады.
Определения. Цвет.
Цвет — штука весьма сложная, поэтому просто сказать, что определенный набор цифр — это какой-то цвет — будет самой большой глупостью на свете.
Почему? Вспомните недавно нашумевший феномен с платьем. Весь парадокс сводится к тому, что два разных человека могут путаться в цвете, глядя на одно и то же изображение, в одних и тех же условиях просмотра. Более того, один и тот же человек может видеть сначала один цвет платья, а потом другой.
Так давайте начнем с простого, с определения того, чем же на самом деле является цвет?
Одно из лучших определений цвета, встреченных мною на просторах интернета:
На вопрос: «Что такое цвет?» — чаще всего отвечают: «Цвет — это длина волны», «Цвет — это свойство поверхности», «Цвет — это спектральный состав электромагнитного излучения». Ответы эти неточны или, как минимум, неполны. Рассмотрим их подробнее.
- «Цвет — это длина волны». Но электромагнитное излучение с длиной волны, к примеру, 675 нМ в зависимости от интенсивности воспринимается либо как красно-коричневый, либо как алый цвет.
- «Цвет — это свойство поверхности». Но серые стены домов, освещенные закатным солнцем, кажутся нам оранжевыми.
- «Цвет — это спектральный состав электромагнитного излучения». Но электромагнитное излучение различного спектрального состава может восприниматься как один и тот же цвет.
Более того, когда мы в полной темноте ударимся о дверной косяк, в нашем сознании появится цветное изображение без всякого электромагнитного излучения. Во сне или в воспоминаниях также возникают самые настоящие цветовые ощущения.
Итак, ключевыми словами в исследовании данного вопроса являются: «восприниматься», «казаться», «выглядеть», «сознание», «ощущение». То есть никакого «цвета» не существует, если нет «сознания», если некому испытывать «ощущения». Исходя из этого мы даем такое определение:
Цвет — это ощущение, которое возникает в сознании человека при воздействии на его зрительный аппарат электромагнитного излучения с длиной волны в диапазоне от 380 до 760 нм. Эти ощущения могут быть вызваны и другими причинами: болезнь, удар, мысленная ассоциация, галлюцинации, и др.
Т.е. цвет — это, прежде всего, ощущение. «Цвет» не существует без наблюдателя. Цветовые ощущения могут существовать без объекта, но не могут существовать без субъекта.
Андрей Френкель, Алексей Шадрин
Уточнение.
- Сразу оговорюсь, что в дальнейшем под цветом будет подразумеваться именно ощущения, вызываемые только электромагнитным излучением видимой части спектра.
- Также я исключу рассмотрение таких явлений, как дальтонизм, цветовые иллюзии. В качестве наблюдателя будет выступать некий «усреднённый» человек, пока что нам этого достаточно.
Стандартный наблюдатель.
В научных экспериментах, изучавших особенности цветовосприятия, используется понятие стандартного наблюдателя.
Всё дело в том, что глаз имеет так называемую центральную ямку — небольшое углубление, находящееся в центре желтого пятна — места наибольшей остроты зрения в сетчатке глаза позвоночных животных, в том числе человека.
Причем тут какие-то ямки и жёлтые пятна? Говоря простым языком, мы ощущаем цвет в зависимости от углового размера источника излучения.
Тут природа сделала нам небольшой подарок, и мы имеем всего два случая:
- Угловой размер какого-либо цветового стимула меньше 4 градусов. Усредненные характеристики человеческого глаза, которые приняты в качестве основы для определения цветовых ощущений были получены при исследовании цветовых стимулов с угловым размером в 2 градуса, а в 1931 году предложены и приняты в качестве стандарта наблюдателя. В литературе вы встретите следующие названия:
- Стандартный наблюдатель
- Стандартный наблюдатель 1931
- CIE 1931
- CIE 1931 Стандартный наблюдатель
- Двухградусный наблюдатель
- CIE 1931 2°
- Стандартный колориметрический наблюдатель
- Стандартный колориметрический наблюдатель CIE 1931
- Угловой размер какого-либо цветового стимула больше 4 градусов. Такие данные стандартизированы в 1964 году Международной комиссией по освещению (CIE) при изучении цветовых стимулов с угловым размером в 10 градусов. Десятиградусный наблюдатель именуется аналогично двухградусному, за исключением угла и года.
Я не буду вдаваться в детали, желающим ознакомиться с сутью экспериментов CIE советую замечательную статью на Хабре. Итак, в результате различных наблюдений, исследований, нашедших отражение в стандартах CIE, было выяснено, что наше зрение трехкомпонентно, проще говоря — цвет можно описать минимум тремя числами.
Определения. Цветовая модель
Первыми математическими моделями, связывавшими спектр излучения определенного цветового стимула с тремя числовыми значениями, стали CIE RGB, LMS и XYZ. И каждая из них обладает своими интересными особенностями.
CIE RGB
Первая RGB цветовая модель, одна из великого множества RGB моделей. Её главным недостатком является необходимость использования отрицательных значений для кодирования некоторых цветов, поэтому её нельзя назвать аддитивной, что и стало причиной её забвения. Сейчас она практически нигде не используется и не упоминается, за исключением статей научного и исторического характера.
LMS
LMS — модель, представляющая описание реакции трех типов колбочек человеческого глаза, её название происходит от Long, Middle, Short wavelength. Используется она в основном в медицине и научных работах, на практике не применяется.
CIE XYZ
Одна из первых цветовых моделей, спроектированная настолько удачно, что используется и по сей день.
Сразу после появления LMS и CIE RGB моделей стало ясно, что они не очень удобны в практическом применении, так как их координаты не несут в себе какого-то определенного физического смысла или полезной информации. Благодаря тому факту, что яркость какого-то цветового пятна есть линейная комбинация компонент LMS или CIE RGB, взятых с определенными коэффициентами, было принято решение трансформировать их путем матричного преобразования в более понятный вид.
Так появилась модель CIE XYZ. Коэффициенты матрицы преобразования LMS в XYZ были выбраны таким образом, чтобы изменение Y координаты давало лишь ощущение изменения яркости, Z-координата зависела бы в основном от синей составляющей, а для X подобраны такие коэффициенты, чтобы X не принимала неотрицательных значений. Таким образом за яркость стала отвечать координата Y, а за цветность — плоскость X-Z. Такое разделение стало первым шажком на пути от абстрактных значений к осмысленным, понимаемым человеком интуитивно.
Теперь, ознакомившись с базовыми цветовыми моделями можно попытаться дать определение.
Цветовая модель — абстрактная математическая модель, описывающая способ представления цвета в виде набора чисел, чаще всего трёх.
Определения. Цветовое пространство.
Пусть у нас есть два абсолютно одинаковых RGB-дисплея, за одним исключением. Во втором мы заменим цветовые фильтры на такие, которые по сравнению с оригиналом будут более прозрачными, явно пропускающими понемногу все части спектра, но в то же время красный фильтр останется красным, синий — синим, зелёный — зелёным.
Что произойдёт с картинкой на втором мониторе? Она станет блеклой, ненасыщенной. Мы не сможем воспроизвести на втором дисплее такой же вкусный, сочный красный, как на первом. Тут от цветовой модели мы плавно переходим к понятию цветового пространства:
Цветовое пространство — это множество цветов, которое способна представить цветовая модель.
Уместной будет аналогия цветовых моделей с типами данных в языках программирования. Целое число — такое же абстрактное понятие, как и модель RGB, до тех пор, пока мы не уточним конкретную реализацию. Целое может покрывать значения от 0 до 255, или же от -128 до 127, в зависимости от спецификации. Аналогично ведет себя и цветовая модель, когда мы узнаём её спецификацию, мы можем понять, какие цвета могут быть представлены этой моделью, а какие — нет. Множество представимых цветов и есть цветовое пространство.
Во всей этой чехарде не хватает еще пары маленьких деталей, поехали дальше.
Определения. Стандартный осветитель.
В мире цвета есть такое понятие, как цветовая адаптация. Говоря человеческим языком — это способность видеть цвета приблизительно одинаковыми вне зависимости от изменения условий освещения. И действительно, лист белой бумаги остается нейтральным как в свете полуденного солнца, так и при комнатном освещении от лампы накаливания.
Любой источник освещения характеризуется в первую очередь спектром.
Стандартный осветитель — источник видимого света с заранее определённой (стандартизированной) спектральной плотностью распределения.
В расчетах механизмов цветовой адаптации используется не спектральная плотность, а производная от неё — цветовые координаты так называемой точки белого, представленные чаще всего в XYZ или xyY. Также существует несколько моделей расчета цветовой адаптации. Наш мозг делает всё автоматически, выбирая точку белого самостоятельно исходя из условий окружения, но цветовая модель не предназначена для самостоятельного определения точки белого, ей необходимо явно указать какое-то значение.
Цветовой профиль.
Итак, для воспроизведения на принтере, дисплее, на любом другом устройстве вывода (логично предположить, что мы «оцифровываем» цвет в большинстве случаев именно с этой целью), либо для сохранения для последующего анализа мы должны обязательно сохранить значение точки белого. Если к цвету применялись еще какие-либо преобразования, например преобразование гаммы, табличные преобразования, это также необходимо записать.
Набор данных, характеризующий устройство цветного ввода или вывода или цветовое пространство согласно стандартам, провозглашенным Международным Консорциумом по Цвету (ICC). Профили описывают цветовые атрибуты некоторого устройства или требования к внешнему виду путём определения соответствий между пространством цветов, воспринимаемым или воспроизводимым устройством, и пространством связи профиля (profile connection space, PCS). Это PCS может быть LAB или XYZ. Соответствия могут определяться таблицами, к которым применяется интерполяция, или через ряд параметров для преобразования.
Wikipedia.
Так в чем же сложности?
Основные используемые на практике цветовые модели и пути, по которым из одной модели цвет может быть преобразован в другую, приведены на следующей схеме.

Есть уйма вариантов того, как это сделать в зависимости от того, из какой модели в какую мы делаем преобразование.
Существует множество, к примеру, RGB-моделей, в зависимости от выбора координат опорных R, G и B векторов, хроматических координат точки белого, способа гамма преобразования. Каждое отличается своими особенностями, такими как цветовой охват, эффективность кодирования, удобство использования в прикладных задачах. В некоторых случаях необходимо учесть более сложные явления, такие как адаптация к общему уровню освещения, а возможно и другие особенности восприятия цвета человеком.
Что дальше?
Я сознательно избегал использования в статье каких-либо формул и математики вообще, поставив себе одну цель — донести до читателя степень сложности корректной работы с цветовыми данными и бездумного копирования каких-либо формул из сети, научить разбираться в базовых понятиях, которые обязательно потребуются нам в дальнейшем.
В следующих статьях я начну описывать математику работы с цветом и различными моделями, попутно касаясь плюсов и минусов каждой, особенностей применения.