Маска цветовой насыщенности в Photoshop

Автор статьи Дмитрий Наумов.

 

Далее насыщенностью буду называть обычную фотошоповскую цветовую насыщенность, saturation. При обработке иногда хочется увеличить или уменьшить диапазон насыщенностей разных мест картинки. Например, на тусклом зимнем пейзаже каким-то цветным объектам насыщенность добавить, а окружающим снежным просторам снизить, а то ведь снег часто слишком синий. Подобные вещи нетрудно сделать, если суметь выделить наши объекты. Нынче модны и часто встречаются сюжеты, где автор успешно делает цветовую операцию с единственным чётко обособленным объектом - делает его насыщенным, а остальное десатурирует; но лассо - не наш путь. Ведь мы хотим суметь сделать что-то подобное и, например, с синеньким домиком, проглядывающим сквозь густое сплетение слабоокрашенных заснеженных веток.

В таких (и наверное в каких-нибудь ещё) случаях хотелось бы уметь создать маску для выделения насыщенных областей, полученную не ручным инструментом выделения, а автоматически из самого исходного изображения. Разумеется, потом эту маску можно как угодно подчищать и, например, регулировать кривыми. Вот собственно и вся постановка вопроса. Далее предлагается конкретный вариант такой автоматизации. Мне ни разу не встречались в книжках или интернете ни этот вариант, ни другие; но вероятно они существуют. Было бы интересно увидеть ссылки, сравнить.

Буду говорить только для RGB. Итак, мы хотим выделить цветонасыщенные области на картинке. Будем исходить из такой трактовки: насыщенные области - это места, где велики разности цветовых каналов. Эту трактовку предлагаю без доказательства, просто потому, что в ненасыщенных серых точках все три канала равны. Поэтому заслуживает проверки такой алгоритм: составить все попарные разности каналов и сложить их модули. Отмечу, что попарных разностей всего три; знаки в ФШ неразличимы, т.е. в качестве разностей каналов сразу и получаются модули. Сами разности легко реализуются режимом "разница" для слоёв, после копирования содержимого цветовых каналов RGB в отдельные слои. Последующее их суммирование нужно делать на чёрный нижележащий слой в режиме screen, в переводе его именуют иногда "экран", иногда "осветление".

Можно сказать и так: мы попытаемся создать картину, которую выдал бы нам ФШ в канале S, если бы смог перевести наше изображение в цветовую модель HSB.

Приведенные соображения не являются научным изысканием, имеют чисто практическую направленность и конечно же требуют проверки реальностью - будет ли возникать слой, содержащий более или менее яркие области в зависимости от насыщенности исходного изображения в этих областях . Проверка была сделана, и результат показался мне весьма успешным. Составив в ФШ указанные разности и соответственно их сложив, лично и многократно убедился, что уверенно получаю карту насыщенности для любой картинки; её-то и следует далее использовать в качестве желаемой маски выделения. Для использования её можно поместить в альфа-канал или слой-маску. Подгонка этой карты уровнями или кривыми - большое удовольствие, можно акцентировать нужные области весьма гибко. Ну а потом раздельно регулировать насыщенные и ненасыщенные области действительно очень удобно.

Разумеется, для удобного систематического употребления предлагаемой операции нужно сделать соответствующую макрокоманду. Буду называть макрокомандой то, что в конкретных версиях ФШ называется либо action, либо действие, либо операция. Через меню Oкно в палитре (специальном окне) макрокоманд получаем доступ к разнообразным манипуляциям с ними. В том числе, имеется возможность самому создать (записать) макрокоманду; в результате этого она будет присутствовать в палитре с возможностью её выполнить. Всегда можно и сохранить макрокоманду в отдельном файле с расширением ATN. И также всегда можно загрузить макрокоманду из подобного файла; это и предлагается сделать читателю данной статьи, скачав предварительно к себе файл satur_nabor.atn. В этом файле сохранена в двух вариантах (для ФШ_CS2rus и для ФШ_7rus) макрокоманда создания маски насыщенности по намеченному ранее алгоритму. Для желающих вникнуть подробнее привожу комментарии к отдельным шагам макрокоманды, для варианта CS2.

Пошаговое описание фотошоп экшена

При практическом опробовании обоих вариантов нашей макрокоманды они давали, естественно, одинаковый результат. При этом вариант, подготовленный для ФШ_7rus, успешно работал и в среде ФШ_CS2rus; а вот вариант для CS2 был работоспособен только в среде CS2. При успешном прохождении процесса возникает один новый слой black в оттенках серого; на нём более светлые области соответствуют более цветонасыщенным областям исходного изображения, независимо от самих цветовых оттенков.

Итак, скачайте файл satur_nabor.atn и примените к нему команду Загрузить в Палитре макрокоманд. Станут доступными наши макрокоманды, и для любой картинки можете выполнить тот или другой вариант; они названы satur_CS2 и satur_PS7.

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

Результат применения маски, полученной с помощью экшена

Уточним цепочку выполненных действий.

На Рис.1 отображена ситуация, когда мы только что дали команду Выполнить для операции satur_CS2. В результате в палитре слоёв наблюдаем появление слоя black, где более светлые области соответствуют более окрашенным частям исходной картинки.

Результат выполнения экшена - слой black

Мы хотим использовать содержимое слоя black в качестве маски для выделения этих самых областей. Один из вариантов - поместить содержимое слоя black в отдельный канал и затем загрузить выделенную область именно из этого канала. Так мы и поступим; но предварительно сделаем нашу маску более контрастной. Рис.2 иллюстрирует наш следующий шаг, где с помощью настройки кривых мы заставили нужные области ярко светиться на тёмном фоне. Это уже реальная заготовка для маски, причём возможна и подчистка её кистью, да и вообще любыми инструментами.

Коррекция маски

После этого забираем содержимое слоя black в буфер обмена, а сам слой black удаляем.

Теперь наша задача - поместить изображение из буфера в отдельный канал. На Рис.3 видим ситуацию после того, как в палитре каналов выполнена команда создания нового канала и сделана вставка из буфера обмена. Наша маска разместилась в канале с шаблонным названием по умолчанию Альфа1. Нам важно то, что теперь в меню Выделение будет доступна команда загрузки выделенной области из этого канала.

Маску поместили в отдельный канал

Итак, слой black удалён, в документе снова только исходная картинка. Рис.4 показывает наш следующий шаг - загрузка выделенной области из нашего канала Альфа1. Светлым областям маски будут соответствовать выделенные области картинки.

Загрузка выделения из канала

После этого они в нашей власти. Рис.5 отображает акцию повышения насыщенности. А если мы пожелаем уменьшить насыщенность остальной части картинки, то легко перейдём к её выделению, применив к нашей выделенной области команду инверсии. На этом наша обработка успешно завершена.

Изменение насыщенности выделенных областей

Разумеется, это был всего лишь схематический пример.