March 12, 2011

Правда и неправда о цветовом восприятии

Так сложилось, что среди компьютерных людей укоренилась мнение, что цвет синтезируется исключительно тремя компонентами, светящимися красным, зеленым и синим, RGB. Которые, вроде, соответствуют цветам, на которые реагируют рецепторы глаза. Более продвинутые еще знают про субтрактивную систему красок голубой-пурпурный-желтый, CMY (в которую еще зачем-то входит черный К).

Color Pickerы графических редакторов равномерно расставляют эти цвета по кругу, после чего начинает казаться, что выбирать цветовые сочетания можно просто по отношению углов на этом круге, а сами цвета достаточно произвольны.

В действительности, у глаза есть четыре типа рецепторов. Пики их чувствительности приходятся на длины волн 460, 507, 535 и 560 нм, что на спектре означает сине-фиолетовый, сине-зеленый, зеленый и желто-зеленый. Да, никакого красного.

Датчики на 507 нм — это палочки, наше ночное зрение, оно именно синевато-зеленое. Поэтому в фильмах ночь делают затемняя изображение и подкрашивая тени синим. Палочки включаются на таких уровнях яркости, когда остальные датчики, колбочки, уже не работают. Зона пересечения, когда есть отклик от обоих типов рецепторов, невелика.

При нормальном освещении мы получаем ряд длин волн в 460, 535 и 560. Обратите внимание, что дистанция между первыми двумя 75нм, а между вторыми всего 25нм, в три раза меньше. Более того, физически последние два датчика устроены очень похоже и захватывают широкие полосы частот (они и ближний инфракрасныйультрафиолет захватывают, только в глазу фильтры встроены, а вот люди с удаленным хрусталиком видят чуть более широкий спектр, афакическое зрение), первый же сравнительно узкополосный. Сине-зеленые тоже узкополосные и не цепляют, например, красный цвет. Поэтому красный фонарь их не ослепляет, они продолжают работать. Это позволяет делать ярко-красную подсветку у шкал приборов, которая не сбивает ночное зрение. Можно делать и сине-фиолетовую, казалось бы, но тут другая загвоздка.

Если посмотреть, как сенсоры распределены по сетчатке, то оказывается, что синих колбочек в зоне высокого разрешения очень-очень мало. А сине-зеленых, высокочувствительных, вообще нет. То есть, в темноте работает только периферийное зрение.А синий на черном будет различаться плохо.

Степень реакции на свет (электрический сигнал на выходе) у колбочек тоже разная. "Синие" — самые малочувствительные (не сами по себе, а интегрально, из-за малочисленности), зеленые гораздо лучше, а желто-зеленые еще более мощные. Сигнал после датчиков постобрабатывается в голове, но все равно, при одинаковой энергии излучения синий цвет относительно желтого будет всегда восприниматься более темным. Также получается, что за восприятие яркости отвечают только зеленые и желто-зеленые колбочки.

Так что там с тремя компонентами? А вот что. У многих животных глаз снабжен датчиками только двух цветов. И этого вполне хватает, чтобы видеть часть спектра. Загвоздка возникает только с цветами, которые лежат вне интервала между пиками этих датчиков. Там возникают фантомные цвета. Аналогичная проблема у дальтоников, как правило, у таких людей отсутствует либо зеленый, либо желто-зеленый компонент зрения. При этом они видят практически нормальный цвет, за исключением того, что цвета на краю видимого диапазона путаются с другими, например, трудно или невозможно отличить красный (а это крайний цвет) от зеленого.

С двумя компонентами также невозможно увидеть внеспектральные цвета, от фиолетового до темно-красного. А остальные — пожалуйста. Более того, первая широко популярная цветная кинопленка Technicolor работала именно на двукомпонентной модели, причем, эта пленка включала только красный и зеленый, что давало довольно короткий отрезок воспроизводимых тонов, и все равно, все важные для глаза оттенки — тоны кожи, например — туда укладывались. В замечательном фильме "Авиатор" каждый изображаемый период времени обработан под доступную на тот момент технологию и начало сделано именно под двухкомпонентную модель.

Три компонента позволяют получить "обманные" цвета, которым не соответствует ни одна длина волны, когда задействуются только "крайние" рецепторы (сине-фиолетовый и желто-зеленый). Так мы видим гамму фиолетовых тонов. Что еще более важно, с тремя датчиками мы получаем возможность различать не только оттенок и яркость, но и насыщенность цвета, отделенность его от соотвествующего по яркости серого или белого.

Возвращаясь к цветовому кругу, с которого все началось. Этот круг — всего лишь сильно упрощенная модель восприятия цвета глазом. Точных моделей несколько, но они непригодны для быстрых и неправильных действий по подбору цвета.

Вот, слева - CIEXYZ. На ней хорошо видно, какие цвета — чистые, спектральные (лежат на криволинейной границе), какие — внеспектральные (на прямой границе). Видно, какие насыщенные (дальше от белого пятна), какие белесые. Но как получить определенный цвет из смеси других по такой диаграмме понять тяжело. Вот и приходится использовать изобретенный еще 200 лет назад круг. Он как темперированный звукоряд, плохо соотносится с физикой, зато позволяет не задумываясь выставлять соотношения между любыми оттенками.

И это хорошо. Надо только не забывать, что все-таки, разныецвета воспринимаются физиологически по-разному.

P.S. У "Авиатора" интересный сайт про видеоэффекты: http://www.aviatorvfx.com/ . О стилизации под старую пленку там говорится в разделе "Color Process".