Разумное устранение дефектов кожи на фото при помощи вейвлетов

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

Как этот вопрос решают грамотные фотографы? Правильно: аренда фотостудии, правильный свет, софт-фильтр, тональный крем или даже комбинация всего перечисленного. Гениальныефотографы, в свою очередь, надеются на фотошоп.

Специально для гениальных фотографов другие гениальные люди, программисты по профессии, написали целую пачку фильтров, которые как бы разглаживают кожу, не трогая лишнее. Однако отсутствие интеллекта у фильтров обычно приводит к тому, что гениальные фотографы, посмотрев на кожу, но не посмотрев на всё остальное, запускают пакетную обработку полусотни-другой фотографий и результат в чистом виде сдают заказчику. Наиболее вменяемые сначала рисуют масочку, а потом уже применяют свои KODAK DIGITAL GEM Airbrush, Alien Skin Image Doctor и прочие Surface Blur. Но и в этом случае кожа часто выглядит как у манекена.

Давайте посмотрим на замечательный своей неприкрытой чудовищностью пример обработки фильтром Portraiture, приведённый на сайте продукта. Заранее просим прощения у авторов фильтра за невольный чёрный пиар, но именно эта картинка промотивировала написание статьи.

Вот исходное фото и предлагаемая авторами плагина Portraiture обработка:

Ужасная оригинальная обработка

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

Ещё раз посмотрим на исходную картинку и отметим для себя основные недочеты:

  • шероховатая кожа;
  • пигментация;
  • общая блеклость картинки;
  • активный фон, особенно в правом верхнем углу.

Вместо замороченных фильтров в GIMP за неимением лучшего для косметической обработки кожи обычно используют выборочное гауссово размывание. Мы считаем эту практику в корне порочной и призываем немедленно от неё отказаться и покаяться.

В то время как наличие неплохого фильтра а-ля Alien Skin Image Doctor не помешало бы, для ретуши при этом хочется иметь под рукой инструмент из серии «отрада параноика», дающий полный контроль над изображением. Таким инструментом является расширение «Вейвлетный разбор» для GIMP.

Фильтр работает очень просто: он разбирает изображение на слои, содержащие разные уровни детализации оригинала — от самых мелких, однопиксельных элементов до наиболее крупных. Чтобы полученное многослойное изображение выглядело как оригинал, режим слоев с уровнями детализации меняется на «Объединение зерна». У каждого изображения в зависимости от размера есть свой разумный предел числа уровней детализации. Расширение определяет его само и не дает ввести большее значение слоев-уровней. Все, что не попадает в тот или иной уровнь детализации, уходит в слой под названием «Вейвлетный остаток» (Wavelet residual).

У авторов Portraiture, надо полагать, было преимущество в виде полноразмерной фотографии, с которой можно работать более точно. Мы же, пользователи GIMP, традиционно удовольствуемся малым.

Устанавливаем расширение. Открываем изображение. Запускаем «Фильтры — Общие — Вейвлетный разбор…». Пяти уровней будет достаточно, а больше восьми тут сделать уже не дадут. Галочку «Добавить альфа-канал в слои уровней детализации» лучше сразу включить, чтобы потом не делать это для каждого слоя ручками.

Давайте последовательно посмотрим на три верхних уровня детализации:

Оригинал

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

Возвращаем видимость всем слоям, вооружаемся стеркой и проходимся по всем участкам кожи, молившим о ниспослании тональника и не получившим его. У стерки есть параметр «Непрозрачность», поэтому если производимый эффект кажется вам слишком сильным, вы всегда можете отменить стирание, скорректировать непрозрачность и попробовать еще раз.

Оригинал

Работы на полминуты, а результат, согласитесь, более чем приличный — от шероховатости кожи и несимаптичных (в данном случае) веснушек мы девушку излечили. Кстати, по глазам можно немножко пройтись инструментом Резкость или размывание.

Теперь надо что-то сделать с блеклостью. Скопируйте слой вейвлетного остатка и поместите его поверх стопки слоёв, поменяйте режим на «Перекрытие» или «Рассеянный свет» и сбейте непрозрачность до 60%:

Оригинал

Лицо стало заметно румянее, а волосы приобрели приятный золотистый цвет. Если есть желание добавить девушке загара, можно использовать и «Направленный свет», дающий более тёмное и насыщенное изображение.

Полученный эффект, на самом деле, с технической точки зрения похож на эффект Ортона. Если вы посмотрите на слой вейвлетного остатка, то увидите очень размытую копию:

Оригинал

В нашем случае эта размытость примерно соответствует Гауссову размыванию на 35 пикселов в обе стороны. Это и объясняет лёгонькое свечение а-ля Ортон.

С этим слоем тоже можно сделать много интересного. Например, вооружившись полупрозрачной кистью с цветом вроде фиолетового (R:60,G:71,B:116) и режимом «Насыщенность» можно добавить щекам румян. А поменяв режим исходного слоя вейвлетного остатка и его копии на «Экран», вы получите что-то вроде фотографии в высоком ключе.

Остаётся активный фон. Здесь всё просто. Как видите, скопированный слой вейвлетного остатка уже немного приглушил его. Теперь остается лишь вооружиться стеркой и протереть четыре верхних слоя детализации (мы бы всё-таки рекомендовали маски):

Без активного фона

В принципе, можно упростить выполнение этого шага. Оставьте видимыми только те слои, в которых хотите протереть дырку, и воспользуйтесь командой «Изображение > Объединить видимые слои…», не забыв поменять режим результирующего слоя обратно на «Объединение зерна». Затем при необходимости вы всегда можете свести изображение и повторно выполнить вейвлетный разбор. Маски при этом, разумеется, будут потеряны.

Увлекаться стиранием сразу в нескольких слоях детализации всё же не стоит. При выборочном затирании и более сложном фоне сквозное стирание приводит к появлению «провалов» и затуманенности. Перед автором лежит специально сделанный пробный отпечаток 20×30 со сквозным стиранием участков кожи в трёх слоях. Никакие слова не могут передать всю чудовищность результата.

В принципе, этот фон можно убрать совсем и заменить его на что-либо более подходящее. Результатом будет нормальное студийное фото с пятном подсветки на фоне. Только маленькое.

Еще пара моментов. Как вы понимаете, подобный оживляж при помощи вейвлетного остатка легко может стоить детализации в тенях. Эта проблема в ряде случаев легко решается применением маски. Рассмотрим это на примере эпической картины «Мальчик, покажи пальчик». А чтобы вы в полной мере ощутили любовь редакции GIMP.ru к хождению по граблям, мы эту картинку уменьшим до размера 400×600 пикселов:

Исходная картинка в Raw примерно такая:

Оригинал

Корректируем экспозицию в UFRaw:

С коррекцией эспозиции

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

Стопка слоев

И получаем:

Результат 2 с масочкой

Как видите, волосы и колоритный национальный костюм дяденьки уже не исчезают во мраке.

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

Оригинал

Стирание границ вместе с удалением шума даёт на выходе вполне приятную картинку, ну а свет можно и перекрасить. В оригинале это, задумайтесь на минуточку, было ISO1600 в исполнении Canon 10D.

Результат 3

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

Вы наверняка найдете немало иных применений этому замечательному расширению. Как написал редакции сам Марко, «You know, I kinda fucked up photography, because from now on you will never see any real pictures any more, since it takes only 5 mins to retouch them (without the knowledge of a professional). Especially since the plugin is open source.»

И немного рекламы. Марко Россини также является автором следующих полезных расширений:

  1. Вейвлетное подавление шума (Wavelet denoise). Умеет работать не только в YCbCr, но и в CIELAB. Именно его ковыряние с последующим чтением статьи о Surface blur заставило автора этой статьи настолько задолбать Марко вопросами, что тот просто сел и написал расширение для вейвлетного разбора.
  2. Вейвлетное повышение резкости (Wavelet sharpen). Автоматически выполняет разбор и повышает резкость в верхнем уровне детализации (1 пиксел).
  3. Генератор шума (Noise generator). Умеет создавать шум при помощи различных алгоритмов.

Материал был впервые опубликован на linuxgrahics.ru и затем с изменениями перенесён на GIMP.ru. О лицензии на фото с сайта Portraiture спрашивайте его разработчиков.

Comments

  1. wrote on Август 23rd, 2016 at 4:40 пп

    Andrey

    А где все картинки то?

    • wrote on Август 23rd, 2016 at 4:50 пп

      prokoudine

      Все картинки на месте.

Add a comment