История в слоях

Фотошоп и история… Казалось бы, слабо связанные друг с другом понятия. Однако это не совсем так. Или, даже, совсем не так. С этим согласится любой, кому приходилось осуществлять хоть сколько-нибудь сложное редактирование изображений.

При обработке нередко возникает желание изменить уже совершенные коррекции. А редактирование «на заказ», когда вы реализуете желания клиента, у которого, как известно, семь пятниц на неделе — это и вовсе тяжёлый случай. В описанной ситуации и возникает интерес к истории: а что же я там делал и как теперь это изменить?

И что же в ответ предлагает нам Adobe? — палитру History и инструмент History Brush.

Меня долго занимал вопрос: из-за кого появился этот странный и уродливый нарост на теле фотошопа? Ответ пришел неожиданно, когда я уже совсем на него не рассчитывал. В очередной книге Мартина Ивнинга встретился рассказ о выступлении его давнего друга и соавтора Джефа Шеве перед программистами Adobe.

Джеф показал процесс создания одного из своих коллажей. И именно после этой демонстрации у разработчиков родилась идея сделать пару не просто самых ненужных, но откровенно вредительских инструментов: палитру History и инструмент History Brush.

Путь History.

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

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

Но сейчас хочу обратить ваше внимание не на отдельные операции, а на процесс в целом и на возможность сохранения истории обработки, дабы впоследствии внесение изменений в проделанную работу не вызывало ни малейших затруднений. Сначала посмотрим, как это выглядит при применении History и History Brush.

Имеется фотография бобслейной гонки. Попробуем аккуратно откорректировать ее, поправив цветовой баланс и сделав боб более объемным. На старте имеем изображение в одном слое (Source).

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

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

Вызываем кривые, и повышаем контраст в соответствующих диапазонах красного и зеленого каналов. И снова мы применим кривые непосредственно к слою Source.

Пусть вас не расстраивает посиневшая трасса, сейчас нас интересует только боб, а все остальные проблемы будем решать потом, с помощью History Brush. Для дальнейшего усиления объема я применю один фокус, связанный с усилением средних пространственных частот.

Не пугайтесь последней фразы, это вариант повышения резкости с большим радиусом и малой степенью воздействия (так называемый НiRaLoAm), только более гибкий.

Для этого нам понадобится ч/б заготовка, на которой максимально выражены все интересующие нас детали. Чтобы сделать ее, сдублируем исходный слой и применим к нему инструмент Channel Mixer с установленным ключом Monochrome. Я смешал ч/б из 60% красного канала (в нем боб наиболее детализирован), 30% зеленого канала (в нем содержатся детали желтых участков боба) и 10% синего канала (а просто за компанию).

Теперь применяем к этому слою фильтр High Pass с таким радиусом, чтобы общие плавные перепады яркости исчезли, а интересующие нас детали сохранились. На полноразмерной картинке (2160х1440 px) разумным оказался радиус 50 пикселей.

Переключаем режим наложения на Soft Light и схлопываем видимые слои (команда Merge Visible из выпадающего списка палитры Layers). В результате мы имеем один слой, содержащий вот такую картинку.

А вся история работы с файлом живет в палитре History. Самое время избавить трассу от ужасной синевы. Для этого можно щелкнуть по полю слева от той операции, к которой мы хотим откатиться (Set the source for the history brush), и начать махать этой-самой History Brush, убирая изменения с фона.

Обратите внимание на то, сколь малоинформативно содержание палитры History. Например, мы можем несколько раз применять Curves для самых разных целей. Но все эти операции будут отображены в палитре History совершенно одинаково: Curves. Увы — но краткость ¬— не всегда сестра таланта!

В нашем случае возвращаться надо к первому применению кривых (с их помощью ставились белая, черная и серая точки). Вот тут-то и начинаются неприятности.

Подсчитываем убытки

Неприятность первая: фактически, нас вынуждают кисточкой рисовать маску для отделения боба от фона. Я легко могу сделать эту маску из каналов, или даже еще быстрее, создать ее при помощи Hue/Saturation. Но фотошоп не имеет инструмента «History Mask», только «History Brush», а значит придется рисовать.

Неприятность вторая: невозможность прервать работу. История в палитре History живет до тех пор пока открыт файл. Необходимость отложить обработку именно этой картинки, пожелание заказчика (высказанное через неделю) чуть поправить обработку, банальный сбой фотошопа или питания, и все — History пуста, а History Brush сиротливо жмется в уголочке.

Неприятность третья: ограничения нелинейности истории. Конечно, я знаю, что с помощью этой сладкой парочки можно создать нелинейную историю (разные выборочные отмены коррекций). И есть маньяки, творящие в этой области чудеса.

Но попробуйте при помощи History решить очень простую, на мой взгляд, задачу: в полтора раза усилить повышение контраста боба в красном канале; поменять радиус High Pass на 80 пикселей; поменять режим наложения получившейся заготовки на Overlay.

Нет, не вернуться и переделать все заново, а именно быстро поменять. А ведь я оперировал только общими параметрами, а если я попрошу локально ослабить воздействие некоторых операций?

Неприятность четвертая: малая емкость истории. По умолчанию фотошоп запоминает 20 операций. Искушенный читатель воскликнет: «Но ведь можно поставить больше! Целую тысячу!»

Согласен, можно. Но только не забывайте, что всю эту историю компьютер должен помнить. А следовательно – расходовать на это свою память. То есть , хранить в ней не только текущее состояние картинки, но и множество её предшествующих состояний. Насколько такой расход памяти замедлит работу компьютера, особенно на крупных файлах, вы учли?

Но не это главное. При ручном редактировании каждый клик мышкой — это отдельная операция. Представляете, за какое время оператор сделает 1000 кликов, ретушируя картинку? 5-10 минут активной ретуши гарантировано выберут даже такую длинную историю.

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

Путь Layers

Это путь недеструктивной обработки. Во времена 3-й и 4-й версии фотошопа приходилось дублировать слои, а настройки примененных к ним инструментов сохранять в отдельных файлах. С появлением корректирующих слоев и смарт-объектов жизнь сильно упростилась. Посмотрим, как наш пример будет выглядеть в этом случае.

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

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

Для повышения яркостного контраста боба создаем еще один корректирующий слой кривых (Bob_Contrast) и повышаем контраст в соответствующих диапазонах красного и зеленого каналов.

Чтобы повысить локальные контрасты, схлопываем на отдельный слой текущую версию изображения (команда Merge Visible при зажатой клавише Alt) и смешиваем ч/б версию при помощи корректирующего слоя Channel Mixer.

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

И ещё одно важное свойство: любой фильтр, применённый к смарт-объекту, становится смарт-фильтром, параметры которого могут быть подкорректированы в любой момент.

Применяем к этому смарт-объекту фильтр High Pass с радиусом 50 пикселей и заодно переименовываем его в HighPass_50.

Переключаем режим наложения слоя HighPass_50 на Soft Light и объединяем наши упражнения по повышению контраста боба в отдельную группу слоев (Contrast_&_Volume).

Вся история обработки живет в слоях. В любой момент мы можем изменить настройки кривых; открыть смарт-объект и поменять рецепт смешивания ч/б; поменять радиус High Pass, поскольку он применен как смарт-фильтр; изменить режим наложения получившейся заготовки; применить маску к любому из слоев, чтобы локально ослабить коррекцию.

Это можно сделать сегодня, а завтра открыть файл еще раз и поправить все настройки. А через год переделать их еще раз… Но, для начала, давайте создадим маску, которая защитит трассу.

Для этого временно выключим операции усиливавшие объем боба (отключим видимость группы Contrast_&_Volume). А из картинки с установленным цветовым балансом выделим боб. Интересующие нас объекты окрашены в красно-желтые цвета.

Чтобы выделить их создаем корректирующий слой Hue/Saturation (Hue/Saturation_Difference), в отдельном диапазоне цветовых тонов (Edit: Reds) выбираем красно-оранжево-желтые цветовые тона (положение четырех указателей на цветном градиенте) и изменяем их на противоположные (Hue: -180).

Изменяем режим наложения слоя Hue/Saturation_Difference на Difference. Таким образом подсветятся только измененные с его помощью объекты. Имеем светлый боб на черном фоне.

В более сложных случаях можно смешать финальную заготовку маски из нескольких каналов, но сейчас нам достаточно содержимого красного канала. Чтобы сделать из него ч/б картинку, ставим корректирующий слой Channel Mixer (Gray_from_Red), устанавливаем ключ Monochrome, и задаем рецепт смешивания: Red 100%, Green 0%, Blue 0%.

Поднимаем контраст маски и “подчищаем” ее при помощи кривых (Mask_Contrast).

Мы создали маску, используя только корректирующие слои. Это значит, что при любом изменении исходного изображения маска для него пересчитается автоматически! Приятно, не правда ли? Но чтобы дальше удобнее было работать схлопываем получившуюся маску на отдельный слой Mask_from_H/S (команда Merge Visible при зажатой клавише Alt).

Объединяем все создающие маску слои в группу (Mask_from_Hue/Saturation), выключаем ее видимость, а полученную маску цепляем к группе Contrast_&_Volume, усиливающей объем боба.

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

Желающие взглянуть на вышеприведенную послойную структуру «вживую», могут скачать файл (30.3 мб)
Ссылка:
http://narod.ru/disk/36906971001/zhur74_History_vs_Layers.zip.html.

Грамотная организация послойной структуры позволяет сохранить всю историю обработки изображения в слоях, и в любой момент времени внести в нее любые нужные корректору правки. Основное слово здесь «грамотная», поэтому на закуску главный вопрос.

Принципы организации послойной структуры файла

Говоря о послойной структуре файла не совсем корректно будет употреблять термины «хорошая» или «плохая». Изображение может выглядеть хорошо вне зависимости от того что находится в палитре Layers. Более уместно охарактеризовать послойную структуру как грамотную или безграмотную.

Грамотное построение структуры существенно облегчает работу, позволяет быстрее ориентироваться и находить нужный слой, экономит место на экране за счет меньшего размера палитры Layers. Приведенная ниже картинка — это простенький монтаж, который я сделал из трех фотографий. Зачем? Пока не буду рассказывать, мы с ним еще встретимся в одной из следующих статей.

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

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

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

Осмысленные названия слоев и их групп.
Позволяют быстро ориентироваться в послойной структуре и в том, какую именно коррекцию вносит каждый слой, что особенно важно при применении «слепых» инструментов (Apply Image, Calculations, выбор слоя при помощи инструмента Move Tool с зажатой клавишей Ctrl и т.п.).

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

Отсутствие пустых слоев, групп слоев и масок.
Упрощает восприятие послойной структуры и экономит место на экране за счет меньшего размера палитры Layers.

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

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

Что приносит еще один бонус. Объединив слои в группы, можно открывать только те из них с элементами которых мы в данный момент работаем. Это делает структуру слоев более компактной и позволяет уместить ее на один экран. По моему опыту, восприятие послойной структуры резко ухудшается если ее нельзя окинуть одним взглядом без прокрутки.

Слева: все группы слоев свернуты. Справа: развернута только одна из групп.

Использование масок вместо вытирания части слоя ластиком.
Сохраняет возможность последующего восстановления «стертой» части изображения и позволяет переносить маску со слоя на группу слоев.

Объединение слоев в группу с переносом на нее маски слоя вместо применения команды Create Clipping Mask.
В дополнение к уже перечисленным плюсам уменьшает количество ошибок при геометрических трансформациях.

Использование корректирующих слоев (в том числе слоев-заливок).
Минимизирует размер файла и сохраняет возможность изменения настроек коррекции.

Указание названия фильтра и его настроек в имени слоя к которому он был применен.
Позволяет легко повторить операцию после изменения нижележащих слоев.

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

При коллажировании смарт-обекты имеют еще один плюс — они допускают любое количество геометрических трансформаций без потери качества.

Создание отключенных векторных масок для обтравленных при помощи пути объектов.
Сохраняет обтравочный контур при геометрической трансформации объекта;

Цветовое обозначение слоев в соответствии с вашей личной схемой кодирования.
Облегчает ориентацию в послойной структуре.

P.S.

Желающие взглянуть на вышеприведенную послойную структуру поближе, могут скачать файл (25.6 мб)
ссылка: http://narod.ru/disk/36810799001/zhur74_Layer_Structure_Good.zip.html.

Автор: Андрей Журавлев (aka zhur74)

  • Oleg Ivanenko

    спасибо, Андрей!

  • Dreamaks

    Огромное спасибо!

  • Игорь

    после того, как вы повысили контраст на масках (Mask_Contrast), как вы создали маску для всех видимых слоев? я нажимал alt + merge visible, но у меня просто скадываються все слои в один, но маски никакой нету.

    • Правильно, таким образом получается слой Mask_from_H/S.
      Дальше надо изображение с него перетащить на маску группы Contrast_&_Volume. Это можно сделать двумя способами:

      1. Пока включена видимость группы с изображением маски щелкнуть по композитному каналу с зажатой клавишей Ctr (на маке Cmd). Изображение загрузитсся как яркостное выделение. Теперь создаем маску для группы Contrast_&_Volume через команду Reveal Selection.

      2. Выключить видимость группы с маской, создать на группе Contrast_&_Volume пустую маску, и закинуть в нее содержимое слоя Mask_from_H/S при помощи команды Apply Image. Собственно, ради такой возможности я и схлопывал маску на отдельный растровый слой.

    • Правильно, таким образом получается слой Mask_from_H/S.
      Дальше надо изображение с него перетащить на маску группы Contrast_&_Volume. Это можно сделать двумя способами:

      1. Пока включена видимость группы с изображением маски щелкнуть по композитному каналу с зажатой клавишей Ctr (на маке Cmd). Изображение загрузитсся как яркостное выделение. Теперь создаем маску для группы Contrast_&_Volume через команду Reveal Selection.

      2. Выключить видимость группы с маской, создать на группе Contrast_&_Volume пустую маску, и закинуть в нее содержимое слоя Mask_from_H/S при помощи команды Apply Image. Собственно, ради такой возможности я и схлопывал маску на отдельный растровый слой.

      • Игорь

        так я не понял, как получить слой Mask_from_H/S, командой Cmd+ merge visible у меня схлопываются все слои и получается новый слой, а не маска, как у вас.

        • Только Alt+ merge visible

          А потом содержимое этого слоя надо превратить в маску. Как это сделать я написал выше (2 способа)

  • Lenikuz

    очень интересно, спасибо!

  • Василий

    Классно растусовано 😉
    когда можно ожидать выход Вашей книги по цветокоррекции ?

    • Не хочу ничего загадывать, но постараюсь успеть до лета.

      • Василий

        Ув. Андрей, хочу Вас спросить о вопросе, не совсем касающимся данной статьи. В ЖЖ не зарегистрирован, по-этому пишу сюда. 
        Есть исходное изображение и скорректированное с помощью цветового профиля. Хочу построить кривые, которые будут производить с произвольными изображениями похожую коррекцию, что и цветовой профиль. 
        Как это удобнее всего сделать? посоветуйте, какое должно быть исходное/скорректированное изображение, что бы было удобнее воспроизвести подобную коррекцию?

  • dim

    Большое спасибо за статью. 

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

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

    Кроме того, начиная прочтение статьи, я ожидал от вас более подробного изучения вопроса. Например сравнить размеры файлов, измерить скорость работы. А так получилась статья в духе “как мне нравится работать”.

    Считаю что специалистам из Adobe стоить продолжить работать над палитрой history, а пользователям не поливать её грязью.

    • Спасибо за комментарий. Ждал, когда напишут что-то такое, без вредной оглядки “на авторитеты”.

      Согласен, рассматривать History и послойную структуру как инструменты одного уровня неразумно. Но, именно к этому я подталкивал читателя. Это инструменты разного уровня, и хорошая структура слоев на порядок круче.

      Чтобы наглядно показать это пришлось их противопоставлять. Хотя, в повседневной работе они дополняют друг друга. Я вообще не пользуюсь History Brush, потому что мне это не удобно. Если хотите — противоестественно.

      Но я активно использую палитру History для отмены нескольких последних операций при ручном редактировании. Работая штампом увлекаешся и нередко успеваешь сделать несколько неправильных кликов подряд. Вот их-то очень удобно отменить в History.

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

      «Как мне нравится» — это возможность в люброй момент поменять настройки любой из ранее совершенных коррекций. То есть, реально изменить историю обработки.

      А «как мне не нравится»… живет в палитре History.

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

  • Dmitry

    Спасибо большое Андрей

  • Алексей

    Андрей, спасибо!

    Вы не помните, когда в арсенале PS появились корректирующие слои? В тексте вы упоминаете, что во времена 3-й и 4-й версии приходилось все делать дублированием слоев. Означает ли это, что в 5-й версии они уже были? 
    Я начинал знакомиться с PS с версии CS2 (когда уже были выпущены CS3 и CS4), и насколько я помню, все коррекции обычно выполнялись на дублированных слоях. Так что мне всегда казалось, что корректирующие слои появились в CS3, а в CS4 – панель Adjustments..

    По поводу возросшей мощности компьютеров – я как владелец камеры с 24МП могу сказать, что даже с 20 этапами, записывающимися в историю по умолчанию, после ряда относительно серьезных коррекций быстродействие серьезно снижается, я даже не говорю о том, что бы применить что-то наподобие Liquify, скормив ему всю картинку, а не фрагмент. Приходится вычищать историю. Так что даже мысль дерзнуть увеличить количество запоминаемых шагов кажется мне не просто странной, а утопичной.     

  • Alex Ionov

    Методом дядки маргулиса можно обойтись одним набором кривых. Пример не очень показателен. Хотя саму методику возьму на заметку

  • 124

    Бесполезная статья, начиная со слов “Теперь применяем к этому слою фильтр High Pass” мне перестало вообще что либо понятно, таких функций в 6 фотошопе нет, я их не нашёл. Автор, попробуй китайскими иероглифами обозначать функционал фотошопа, ты либо всё по русски пиши, либо всё по английски. Ужас.