Частотное разложение 2. Проблема High Pass

Nov 14, 2011 05:14

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



Кто-то просто перепечатал мою статью.

Кто-то написал сам, пытаясь объяснить проще и понятнее чем я:
http://live13.livejournal.com/202975.html
http://telesh.livejournal.com/4516.html

Кто-то включил этот прием в более комплексную последовательность обработки:
http://podakuni.livejournal.com/600689.html#cutid1
http://www.computerarts.co.uk/tutorials/retouch-images-frequency-separation

Кто-то записал бесплатное видео:
http://www.biosigner.net/?p=66
http://eugenekartashov.com/video/videotutorialps/16-videourok-bystraya-retush-kozhi.html

А кто-то проводит на эту тему платные семинары:
http://www.mywed.ru/forum/news/view/15890/
http://www.photo-eclipse.ru/masterclass.html

И даже выпускает учебные диски:
http://eugenekartashov.com/video/videocourses/12-videokurs-photoshop-dlya-fotografa.html

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

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

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

UPD (апрель 2014):
Если данная статья покажется вам не удачной и/или не очень подробной, или вы просто предпочитаете «посмотреть», а не «почитать», предлагаю ознакомиться с постом «Частотное разложение. Ultimate. Конспект и видео». В нем представлен конспект одноименного онлайн мастер-класса и видеозапись МК (общей продолжительностью 5 часов 13 минут), нарезанная на части соответствующие разделам конспекта.

В прошлой статье я привел ссылку на форум сайта www.modelmayhem.com и пост с милым названием «HighPass курит взатяг (+решение)», содеражащий описание альтернативной методики. А так же свою оценку, что все это глупости и результат будет одинаковый. Большинство читателей попались на удочку «авторитетности» автора и не пошли спорить в комментарии. Но нашелся человек, который не поленился проверить и опровергнуть мое утверждение.

Благодаря nikitos_r и его посту «О частотном разложении» мы можем более подробно разобраться: в чем состоит проблема High Pass, насколько она велика и стоит ли ее бояться.





Давайте я вкратце напомню о чем идет речь.

High Pass выполняет очень простую операцию: находит разницу яркости исходной и размытой по гауссу картинок и показывает ее в виде отклонения яркости от средней (тон 128). Если исходник светлее размытой версии - результат будет светлее средне-серого, если исходник темнее - и результат темнее средне серого. Мы получаем средне-серое изображение в области однотонных полей исходника с ореолами вдоль его контрастных контуров. При работе с цветным изображением эта операция выполняется для каждого канала в отдельности.

Все идет хорошо до тех пор, пока яркость исходного и размытого изображения отличаются меньше чем на 128 тоновых уровней. Как только разница становится больше 128 High Pass не может ее отобразить. Возникает погрешность округления. Именно ее nikitos_r и показал на приведенной выше картинке.

В качестве альтернативы High Pass надо:
  • 1. cделать две копии слоя с исходным изображением
  • 2. применить к нижней Gaussian Blur с желаемым радиусом
  • 3. к верхнему слою применить команду Apply Image, выбрав в качестве накладываемого изображения размытый слой, режим наложения - Subtract, в поле Offset ввести 128, в поле Scale ввести 2.


В режиме Subtract из яркости исходника вычитается яркость размытой версии (находится разница между ними с учетом знака). При помощи поля Offset задается средняя яркость финальной картинки вокруг которой будут плясать ореолы. Поле Scale позволяет отдать команду сразу разделить разницу яркости пополам.

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

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



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

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



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



Их ширина (10 px) существенно ниже радиуса размытия (50 px), поэтому после размытия они просто исчезнут. А вот как выглядят вычисления ВЧ составляющей. Вверху вычитание размытой картинки из исходной при помощи Apply Image, внизу применение у исходному изображению High Pass и поснижение контраста в два раза относительно среднего тона.



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

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



Давайте подсчитывать убытки.

То, что High Pass ошибается, конечно плохо. Но, не надо забывать, что показанная здесь разница здорово усилена. При взгляде на обычную картинку (без промигивания), а тем более на отпечаток разглядеть ее будет практически невозможно. Для желающих самостоятельно все проверить я выложил послойный файл (14,9 мБ) в котором оба метода реализованы с тремя радиусами: 3, 5 и 10 пикселей.

При использовании малых радиусов (3-5 пикселей) характерных для отделения фактуры кожи, различия настолько малы, что ими можно принебречь. Более того, легкое «гашение» маленьких бликов автоматически защитит вас от пробоев и упреков: «А вот там у вас есть три пикселя выбитые в 255».

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

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

Если вам лень писать самостоятельно, можете перейти в статью «Частотное разложение Ultimate. Конспект плюс видео» и скачать набор из четырех экшенов по ссылке в начале статьи.

P.S.
Выяснилось, что у пользователей GIMP таже проблема. Но мы теперь можем вздохнуть с облегчением и сказать: "Ну, у нас-то все в порядке!" А они не могут. Кстати, мужики то (читай Журавлев и пр.) знали, им просто писать было некогда. :-)

UPD. На редкость элегантное и просто решение данной проблемы предложил Евгений Карташов. Применить кривую понижающую в два раза контраст ДО применения High Pass.

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

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

Для коммерческого использования или перепечатки с внесением изменений необходимо согласование с автором. Связаться со мной можно по электронной почте zhur74@livejournal.com

© Андрей Журавлев (aka zhur74), ноябрь 2011 г.
Первая публикация http://zhur74.livejournal.com/26003.html

Теория, action, Частотное разложение, Ретушь, high pass, Практика

Previous post Next post
Up