Как то раз меня занесло на семинар
zhur74 по
режимам наложения. Во многих рецептах Андрей предлагает решение в стиле "возьмем этот канал, смешаем его с другим каналом, а результат будем использовать в качестве маски для корректирующего слоя" (см. пример с
апельсином или
созданием маски для плятья). Если повернуть мозги в нужную сторону, то рецепт понятен и действительно решает поставленую задачу хорошо и легко. Вот только реализация алгоритма в фотошопе оставляет желать лучшего.
Хотя опытные цветокорректоры/дизайнеры продвигают мысль о неразрушающем редактировании, на самом деле в фотошопе это не всегда работает. Если нужно сделать маску на основе нескольких каналов, то, как правило, нужно скопировать изображение или его каналы на отдельные слои, проделать несколько (часто разрушающих) манипулящий, а результат поместить на отдельный слой. Ну или скопировать в маску нужного нам корректирующего слоя. Вроде как обработка основного изображения производится в неразрушающем стиле, а создание маски - это так, вспомогательный процесс, можно и закрыть глаза.
Но на практике это приводит к нескольким неудобным нюансам:
- Если нужно что нибудь в маске изменить, то как минимум часть шагов прийдется повторить (если, конечно, Вы их еще помните)
- Пока вы не доделаете все шаги до конца результат не виден. Если результат не устраивает - приходится начинать все сначала.
- Необходимо в проекте иметь несколько копий изображения или его каналов, что существенно увеличивает размеры файла проекта
Тогда у меня возникла мысль, а нельзя ли проще, компактнее и понятнее? Ведь это все можно выразить в виде некоторого графа что откуда взять , какие манипуляции сделать, какие эффекты применить и куда положить результат. Мысль, на самом деле, далеко не нова - в профессиональных видео редакторах (так называемых compositing tools) это уже давно есть.
Например Blackmagic Design DaVinci
Или вот Avid DS (над которым мне даже как то довелось трудится)
Даже для Autodesk 3Ds Max чтото подобное анонсировали
А вот для фотографий подобного не попадалось. Впрочем я не гуглил особо. Моя мысль застряла на уровне идеи, а потом похоронилась под грузом более насущных проблем. Но вот недавно мне кинули ролик редактора
Photo Reactor. В качестве примеров на сайте показан какой то ЛДП, но в целом этот редактор оказался в точности тем что крутилось у меня в голове почти 1.5 года.
Click to view
Я решил побаловаться с этой зверюшкой и посмотреть насколько его можно использовать в реальной жизни. Что бы далеко не ходить я воспользовался многочислеными примерами Андрея. За объяснениями почему мы делаем ту или иную операцию - велкам к нему, а тут я покажу как это можно сделать с помощью Photo Reactor. Вот например так выглядит
пример с апельсином и режимом Darken Глядя на граф внизу даже без дополнительных пояснений видно, что из исходного изображения взяли зеленый канал, применили к нему кривую, положили результат в красный канал и, наконец, смешали то что получилось с оригиналом в режиме Darken.
В принципе, на таком простом примере в фотошопе это тоже видно, но для этого как минимум пришлось бы потыкать по слоям и их настройкам. Но даже тут есть нетривиальный нюанс - глядя на палитру слоев не догадаешься, что у группы отключены два из трех каналов (я вообще не подозревал о такой возможности до посещения семинара!). Так же в фотошопе нужно зеленый канал копировать на отдельный слой (да еще его называть слой вразумительным образом, что бы не забыть что к чему). В итоге файл вырос на ровном месте в 2 раза.
А что если пример чуть более сложный? Например,
девушка в красном платье из того же урока.
В случае с фотошопом нам пришлось делать копию красного канала, а потом еще одну копию оригинального изображения. Таким образом в файле проекта у нас хранится не одна а целых 3 картинки. В случае же Фото Реактора размер файла проекта занимает всего лишь 18кб (независимо от размера картинки) + сам исходный файл. При этом у нас есть возможность покрутить настройки проекта (режимы наложения, кривые) и сразу увидеть результат - редактор просчитывает выходное изображение на лету.
Вот пример с той же
теткой леди из урока по режиму Multiply.
Это тот самый пример который я упоминал в начале статьи, когда заготовки из каналов обрабатываются и кладутся в маску слоя. Тут граф уже намного сложнее, но разобраться в нем по прежнему не составляет труда (особенно с детально разжеваным алгоритмом от Андрея). В отличие от фотошопа тут мы можем на лету изменять параметры кривых и блура и сразу же наблюдать результат. Нет необходимости руками повторять процедуру смешивания каналов и копирования результата в маску.
В интерфейсе программы Вы видете сверху 2 монитора. Парвый всегда показывает результат (то что приходит на вход узла Output Image). Левый показывает результат текущего выбраного узла. Таким образом если мы хотим посмотреть на вид нашей маски можно просто ткнуть на последний узел Curves (ну или Blur).
Очень удобно то, что формы кривых сразу видны в окне проекта. Параметры размытия в общем случае не видны, но до них легко доступиться. Во-первых параметры выбраного узла появляются в окне справа (в данном случае там только один ползунок радиуса размытия). А во-вторых можно воспользоваться добавочным узлом Knob (крутилка) и настроить его на показывание нужного параметра (его его и крутить можно!)
Помимо обычной гистограммы, которая выводится в правом верзхнем углу, в фотореакторе есть и несколько видов других средств анализа - vectorscope, waveforms и RGB Parade. На самом деле это основные инструменты для цветокоррекции в видео, но почему то в фотосреде они практически не представлены.
В Vectorscope по кругу отложен цвет (Hue), а точками обозначается насыщеность, при чем расстояние от центра указывает на степень насыщености. Так видно, что большая часть точек сосредоточена возле центра (ненасыщеные цвета) с небольшим уклоном в зеленый (стена) или желто-красный (кожа). Есть так же часть точек в районе красного у самого края круга - это платье. С цветом у фотореактора, к сожалению, есть проблема (о ней ниже) и красный на этой картинке выбился (Saturation=100).
Waveforms это вариация гистограммы, только с одной дополнительной размерностью. Координата по горизонтали тут соответствуют координате по горизонтали входного изображения. Яркость (та которая в обычной гистограмме отсчитывается по горизонтали) тут отсчитывается по вертикали - внизу самые темные участки входного изображения, вверху самые светлые. Количество пикселей той или иной интенсивности отмечается яркостью точек на вейвформе. Так видно, что изображение с девушкой по яркости чуть ниже средней, при чем в середине изображения (по горизонтали) есть часть пикселей которые чуть ярче. RGB Parade это тоже самое, только отдельно по каналам.
Но вернемся к примерам. Ну раз пошла такая пьянка, то я прошелся по всему циклу статей и попробовал все примеры. Ну хорошо, не все. Разумеется ФотоРеактор это не панацея, он не заменяет фотошоп. Многие вещи по прежнему легче/удобнее/привычнее делать в ФШ. Я прошелся только по тем примерам, в которых фотореактор выигрывает у фотошопа по workflow.
Пример с
цветоком и режимом Color Burn Пример с
самолетом Zero и режимами Overlay и Soft Light Пример с
той же дамой и режимом Difference Порадовало то, что это все можно делать не только в пространстве RGB, но и использовать другие цветовые пространства тоже. Пример ниже не имеет никакого смысла, просто показывает то, что можно закручивать RGB, Lab, HSL, HSV и CMYK в одном проекте (весьма кстати при создании сложных масок)
Если бы в фотошопе пришлось использовать, например, RGB и Lab одновременно, то нужно было бы схлопывать слои в отдельный слой, делать его смарт объектом и нем уже делать манипуляции в Lab. При этом если нужно что нибудь поправить на слоях ниже смарт объекта, то нужно все начинать заново.
Большая плюшка в том, что можно писать даже свои фильтры и плагины на С++. При чем фильтры можно писать прямо в реакторе! Так мне всегда было интересно посмотреть на картинку в пространстве
CIEXYZ. Написание функции конвертации у меня заняло всего 10 минут, из них
5 на поиск формулы. Впрочем, оказалось ничего интересного
На этом плюшки не заканчиваются. В программе так же имеются:
- целая куча стандартных эффектов (всевозможные Blur'ы, Sharp'ы, Find Edges, Desaturate, Noise reduction), а так же целая толпа эффектов с непонятными названиями (типа Dramatic или Harmonics). Есть так же несколько типов тонмапперов.
- всевозможные генераторы, как простые (типа градиента или геометрических фигур), так и сложных (фракталы, шум, спектры, настроечные таблицы)
- маски можно так же рисовать кисточкой
- есть возможность задавать преобразования в виде формул
- доступна куча вспомогательных блоков (мониторы, крутилки, выключатели, ресайз). Есть даже преобразования координат (например полярные)
- титровалка
- возможность объединять блоки в группы, задавать им внешние параметры
- Можно создавать свои эффекты и запоминать их в библиотеке для быстрого доступа
- наверняка есть еще несколько плюшек, которые я еще не накопал
К сожалению редактор не идеален. Я бы даже сказал ему еще расти и расти. В частности меня удивило наличие отсутствия хоткеев. Вообще! В свете этого не очень понятна целевая аудитория. Как правило профессионалы, которые понимают что к чему очень часто пользуются хоткеями.
Так же абсолютно не представлены средства обработки по числам. Ну есть гистограмма, всякие векторскоупы, но обычной пипетки и окна info - нет. Цвет можно задать только в стандартном виндовом окошке выбора цвета, но там нет hex (пофигу) и Lab (важно). Неплохо было бы иметь отдельную гистограмму в окне Flow что бы хоть как то контролировать коррекцию в нужной точке графа (врочем, можно заменить Waveform или RGB Parade). Так же было бы круто что бы размер этих вспомогательных мониторов можно было менять.
Кривые это отдельная песня. Они абсолютно не предназначены для точной цветокоррекции. Там банально нет масштабной сетки, окошка значений, гистограммы и режима show clipping. Ну хорошо, сетка есть, но ей можно пользоваться только по горизонтали. А по вертикали масштаб будет как прийдется. Размер окошка кривых регулируется только по горизонтали, а по вертикали он всегда маленький. Так же невозможно поставить 2 точки рядом (ближе чем процентов 10) - оно думает, что мы хоти тыкнуть на ту точку, которая уже есть. В одной кривой можно регулировать только один канал (или композит). Соответственно если нужно подкорректировать 3 канала независимо, то это уже 3 кривых. Но это мелочи. Зато есть плюшка - можно прямо в окне графа даблкликнуть на кривую и подредактировать прямо там.
В целом по интерфейсу замечаний нет. Но хотелось бы пару улучшений. Так мне например удобнее было бы работать не с двумя мониторами, а с одним, но большим. Я согласен, если мой граф будет ютиться в углу. Было бы классно вынести его на второй монитор. Сейчас же взаимное расположение окон поменять нельзя. Так же правый монитор _всегда_ показывает выходное изображение. А мне например удобнее мою коррекцию сравнивать с исходной картинкой, или с некоторым промежуточным результатом.
В отличие от фотошопа где можно себе легко организовать промигивание картинки для сравнения ее с другой картинкой, тут прийдется поставить несколько дополнительных блоков. Кое что есть из коробки (Comparision A-B, Original PIP), но оно умеет промигивать только с исходным изображением.
Но все вышеперечисленое это фигня. Я согласен продолжать жрать кактус с этими ограничениями, если бы не один фундаментальный баг - фотореактор вообще не поддерживает Color Management System. Он показывает картинку так же как и все остальные программы, абсолютно игнорируя профиль, который зашит в картинку. У меня wide-gamut монитор, в программах без CMS все картинки выглядят более насыщеными, а те которые изначально насыщены выбивает нафиг. Так например платье у девушки в красном превратилось в одно красное пятно без деталей. При том, что фотошоп в красном канале показывает значения меньше 250, в фотореакторе они почти все выпыдают за 255.
Резюмируя все вышесказаное, могу сказать что первое знакомство оказалось вполне приятным. Из всех проблем я не вижу таких которые нельзя было бы решить в ближайшие несколько версий. Так что глядишь через годик этим уже можно будет пользоваться. Я пока думаю как прикрутить этот редактор в свой workflow. Здается мне, что многие вещи можно будет делать гораздо проще и быстрее, чем в ФШ. Кстати, цена удовольствия всего $80, я даже смотрю в сторону покупки.
Update: В камментах спрашивают нет ли удобных блоков по разбиранию изображения на каналы и собиранию назад. Из коробки нет, но их очень просто сделать самостоятельно. Для этого даже инструкцию открывать не нужно - весь процесс описан в ознакомительном видео. Нужно просто сделать нужные операции, объеденить кусочки в группу и обозначить пинами входы и выходы. Полученую группу можно сохранить как свой компонент для повторного использования.
И развернутый вариант
Я сделал это для РГБ, но для остальных цветовых пространств это сделать не сложно.