Цветокоррекция по числам

В прошлый раз я обещал поговорить о коррекции по числам. Это достаточно простой приём: наводим пипетку на интересующую область, ориентируясь на числа из палитры Info, представляем себе цвет этой области, делаем вывод о его достоверности или недостоверности. Если данная область не может быть окрашена в такой цвет, значит, в изображении есть проблемы и его надо корректировать. Самое сложное в этом процессе — представит цвет.

Первый вопрос: что такое цвет? Я всегда задаю его на занятиях. Попробуйте и вы ответить на него самостоятельно, а потом сравнить свой вариант ответа с ответами слушателей и с правильным ответом.

Чаще всего встречающиеся варианты ответа аудитории:
Цвет — это длинна волны;
Цвет — это спектр излучения;
Цвет — это свойство поверхности;
Цвет — это способность объекта отражать определённые лучи.

Правильный ответ: Цвет — это ощущение, возникающее в сознании наблюдателя как отклик на стимуляцию зрительных рецепторов.

А попадающее в глаз излучение — это стимул, который запускает непростую цепочку взаимодействий, приводящую в итоге к возникновению некоего цветового ощущения. Желающие узнать, как происходят эти взаимодействия и какие особенности имеет наш зрительный аппарат, могут почитать книгу Дэвида Хьюбела «Глаз, мозг, зрение».

Для нас же сейчас важно другое. Если цвет — это ощущение наблюдателя, то как его можно измерить, оценить или задать? Ведь мы с вами не можем носить в кармане стандартного наблюдателя и каждый раз показывать ему изображение, чтобы он оценил цвета. Да и в компьютере такой наблюдатель не живёт. Мы можем лишь задать в файле различные значения яркостей красного, зелёного и синего источников света, то есть стимулы, но не цвет.

Связать между собой стимулы (яркости RGB) и цвет (ощущение наблюдателя) позволили опыты, которые провели в двадцатых годах прошлого века Джон Гилд и Дэвид Райт. Краткое описание этих опытов можно найти в статье Андрея Френкеля и Алексея Шадрина «Color Management System (CMS) в логике цветовых координатных систем», а более полное — в книге тех же авторов «Колориметрическая настройка монитора. Теория и практика».

Результатом опытов (а точнее, их наглядной визуализацией) является изображённое выше тело, напоминающее астероид — полный цветовой охват человеческого зрения или, как его иногда называют, цветовое тело человека. Это не монолит, а облако точек. За каждой точкой скрывается цвет — ощущение наблюдателя. Если знать, как устроено это тело и как относительно него сориентированы оси Red, Green и Blue, не составит проблем оценить, какой цвет скрывается за набором значений RGB.

Разберёмся с устройством тела. По вертикали меняется яркость, возрастая снизу вверх. Внизу — чёрный, вверху белый. На центральной вертикальной оси находятся нейтральные (серые цвета). Чем дальше мы отходим в сторону от этой оси, тем выше цветовая насыщенность. Насыщенность — это отклонение цвета от аналогичного ему по яркости нейтрального серого. Или как часто говорят люди: «насколько цвет сочный».

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

«Крутить» в голове трёхмерную фигуру сложной формы не очень удобно.
Чтобы облегчить задачу, можно использовать упрощённую модель: цветовой цилиндр (изображён справа в виде нескольких горизонтальных сечений). Цветовое тело просто растянуто до более простой формы.

Параметры цвета при этом меняются так же. По вертикали снизу вверх возрастает яркость. На центральной оси лежат нейтральные цвета. При уходе от центральной оси в сторону возрастает цветовая насыщенность. При движении по кругу меняется цветовой тон.

Теперь давайте сориентируем относительно цветового тела и цилиндра оси Red, Green и Blue, чтобы понимать, куда приведёт смещение по каждой из них. Сразу оговорюсь, что такой подход очень условен, не претендует на точность и подходит только для наглядной визуализации. Но для мысленной оценки цвета именно это и нужно.

Представьте себе обычную прямоугольную декартову систему координат. Давайте отложим на каждой оси единичный отрезок, обозначающий изменение яркости в соответствующем канале от нуля до максимума. Таким образом, все возможные комбинации яркостей Red, Green и Blue будут лежать внутри кубика, изображённого на иллюстрации слева.

Угол, находящийся на пересечении осей, будет соответствовать чёрному цвету (яркости во всех каналах нулевые), а противоположный ему — белому (яркости во всех каналах максимальные). Теперь развернём кубик и поставим его на «чёрный» угол.

Готово: по вертикали меняется яркость, на центральной оси лежит нейтраль, а оси Red, Green, Blue расходятся тремя лучами вверх и в стороны из чёрной точки. Можно начинать сдвигаться по ним в соответствии с данными из палитры Info и оценивать цвет.

Яркость меняется по вертикали, и её просто оценить, прикинув сдвиг по вертикальной оси. Каналы вносят различный вклад в общую яркость изображения, но для примерной оценки можно считать его примерно одинаковым. Сумма поканальных яркостей для чёрной точки будет равна нулю, а для белой 765 (три раза по 255). Поскольку все эти прикидки очень приблизительные, можно смело округлить 765 до 750. Чтобы оценить яркость интересующего цвета, достаточно сложить числа из всех каналов и прикинуть, какая часть от 750 получилась.

Предположим, в палитре Info имеются значения: R(200) G(100) B(50). Сумма всех яркостей равна 350, что чуть меньше половины от 750. Таким образом, интересующий нас цвет имеет яркость чуть ниже средней.

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

Оси Red, Green, Blue проецируются на него в виде трёх лучей, расходящихся из центра. По традиции красная ось направлена вверх, зелёная вправо-вниз, а синяя влево-вниз. Все отсчёты начинаются из центра, а максимальный сдвиг по каждой оси составляет 255. Для простоты также округлим это значение до 250.

Давайте продолжим оценку нашего цвета R(200) G(100) B(50). Удобнее всего начинать с самого светлого канала: он сильнее всего уводит нас от центра круга и позволяет сразу оценить, какой цветовой тон может получиться. Сдвигаемся по красной оси примерно на четыре пятых (200/250) от максимума.

Далее берём средний по яркости канал, в нашем случае — зелёный. Из точки, в которой мы находимся, необходимо сдвинуться в направлении зелёной оси примерно на две пятых (100/250) от максимума. Оказываемся в области оранжевых тонов.

Последним рассматриваем самый тёмный канал, у нас это синий. Сдвигаемся в направлении синей оси примерно на одну пятую (50/250) от максимума. Теперь можно на словах описать искомый цвет: это достаточно насыщенный красновато-оранжевый цвет яркостью чуть ниже средней.

Если замер делался по фотографии тыквы или дыни, я легко поверю в адекватность такого цвета; помидора — прежде чем давать оценку, внимательно присмотрюсь к его сорту и степени зрелости; огурца — начну бить тревогу. Конечно, если это не семенной огурец.

Условием нейтральности (серости) цвета в модели RGB является равенство яркостей во всех каналах. На круге это выглядит как равносторонний треугольник: пройдя вдоль каждой из осей одинаковое расстояние мы вновь окажемся в центре круга. Это очень важное для практической работы условие, поскольку большинство приёмов установки хроматического баланса состоит в приведении к нейтрали на изображении объектов, бывших нейтральными в жизни.



Для дальнейших упражнений мы воспользуемся приведенной выше моделью. По цветовому кругу будем оценивать хроматическую составляющую, а по правой шкале яркость, как сумму трёх каналов. Как и в устном счёте, в коррекции по числам существуют приёмы оптимизации, позволяющие быстрее и проще произвести оценку цвета. Мы пойдём от простого к более сложному и на пяти примерах посмотрим, как упростить и ускорить размышления.


Пример первый. Самый простой, ненулевая яркость есть только в одном канале: R(160) G(0) B(0).


Оцениваем яркость. 160 составляет примерно одну пятую часть от 750. Учитывая, что цвет достаточно чистый, можно мысленно ещё немного прибавить яркости до одной четверти. Таким образом, этот цвет лежит примерно в три четверть тонах. Слишком тёмный, чтобы быть сильно насыщенным, но ещё достаточно светлый, чтобы не попасть в глухие и очень тёмные цвета.

Оцениваем хроматику. Сдвигаемся по красной оси примерно на три пятых (160/250).

Цветовой тон: чистый красный.
Насыщенность: средняя. Учитывая яркость можно сказать, что это уже не ярко-алый, но ещё и не коричневый.

Итог: средне насыщенный достаточно тёмный красный.

Если бы в такой цвет на фотографии были окрашены некоторые участки кирпичной стены, красного перца или клубники, я мог бы поверить в достоверность этой фотографии.

Пример второй. Появляется ненулевая яркость во втором канале: R(220) G(90) B(0).

Оцениваем яркость. 310 (220+90) составляет немного меньше половины от 750. Цвет достаточно чистый, поэтому мысленно прибавим яркости до средней.

Оцениваем хроматику. Сдвигаемся по красной оси почти до конца. Сдвиг по зелёной оси будет проходить практически по касательной, как бы поворачивая по часовой стрелке направление в котором будет лежать цвет. Если бы в зелёном канале яркость была нулевой, мы остались бы на красной оси. Если бы она равнялась яркости красного канала, мы попали бы на жёлтую ось.

Насколько произойдёт поворот от красной оси к жёлтой, определяется соотношением яркостей зелёного и красного каналов. 90 — это больше трети, но меньше половины от 220. Таким образом, поворачиваемся от красной оси к желтой примерно на две пятых.

Цветовой тон: слегка красноватый оранжевый.
Насыщенность: высокая.

Итог: насыщенный оранжевый цвет средней яркости.

В такой цвет может быть окрашен апельсин, мандарин, и даже морковка. Хотя есть такую морковку я бы всё-таки поостерёгся.

Пример третий. Ненулевая яркость во всех трёх каналах, и все эти яркости отличаются: R(220) G(170) B(140).

Оцениваем яркость. 530 (220+170+140) составляет почти три четверти от 750. Это достаточно высокая яркость. Цвет такой яркости ещё не будет близок к белому, но уже не сможет быть сильно насыщенным.

Оцениваем хроматику. При движении по кругу нас интересуют не абсолютные значения яркости в каналах, а их соотношения. А коли так, мы можем взять яркость самого тёмного канала (в данном случае это синий) и вычесть её из всех каналов одновременно. Ведь сдвиг по всем каналам на 140 приведет нас обратно в центр, поэтому нет смысла заниматься лишней беготнёй.

После вычитания 140 получаем новую раскладку R(80) G(30) B(0). Сдвигаемся по красной оси примерно на треть. Яркость в зелёном канале составляет примерно две пятых от яркости красного, поэтому поворачиваемся в сторону жёлтой оси примерно на две пятых. Оказываемся в тех же цветовых тонах, что и в прошлом примере.

Цветовой тон: слегка красноватый оранжевый.
Насыщенность: низкая.

Итог: слабо насыщенный оранжевый цвет достаточно большой яркости.

Перед нами цвет кожи среднестатистического европеоида. С точки зрения цвета человек отличается от апельсина только большей яркостью и меньшей насыщенностью.

Пример четвертый. Яркости в двух каналах близки друг к другу, а в третьем заметно меньше: R(50) G(200) B(200).

Оцениваем яркость. 450 (50+200+200) составляет примерно три пятых 750. Этот цвет уже заметно светлее среднего, но ещё не выходит из зоны средних тонов, поэтому может иметь достаточно высокую насыщенность.

Оцениваем хроматику. Можно было бы, как в предыдущем примере, вычесть из всех каналов по 50 и после этого бегать по двум осям, но мы поступим проще. До цвета R(200) G(200) B(200) имеющемуся не хватает 150 в красном канале. Сдвигаемся по красной оси на три пятых, только в обратную сторону.

Цветовой тон: циановый.
Насыщенность: средняя.

Итог: средне насыщенный достаточно светлый циановый.

Примерно так выглядит раствор медного купороса. А если вернуться к более распространённым в практической работе случаям, то приведя к такому цвету воду в бассейне, вы скорее всего встретите одобрение и радость со стороны заказчика.

Пример пятый. Наверное, наиболее часто встречающийся в работе. Яркости во всех каналах незначительно отличаются: R(150) G(140) B(130).

В этом случае даже нет необходимости отдельно оценивать разные характеристики цвета. Достаточно взять средний по яркости канал и представить себе нейтральный серый с такой яркостью во всех каналах: R(140) G(140) B(140). В нашем цвете на 10 больше красного и на 10 меньше синего (больше жёлтого).

Итог: серый цвет яркостью чуть выше средней с явным тёплым оттенком.

Такого цвета может иметь мех волка или крысы, асфальт.

P.S.

И напоследок небольшое домашнее задание. Перед вами фото с десятью отметками и десять палитр Info. Попробуйте определить, какая палитра какой точке соответствует.

Ответы с кратким анализом можно найти в конспектах ко второму занятию курса, скачать которые можно в моей группе вконтакте. Кстати, там же есть ссылки на скачивание аудиозаписей занятий. А в следующий раз мы рассмотрим некоторые особенности нашего цветовосприятия и поговорим об установке хроматического баланса.