?

Log in

No account? Create an account
Интеллигентная резкость 2.1 - Фотокузница [entries|archive|friends|userinfo]
Фотокузница

[ userinfo | информация о сообществе ]
[ archive | архив публикаций ]

Links
[Links:| Правила Теги Избранное Полезное Сокращения ]

Интеллигентная резкость 2.1 [Nov. 7th, 2009|01:11 am]
Фотокузница

fotoforge

[stanleykirsh]


Друзья, хочу поделиться с вами методом улучшения экшна intelligent_sharpen Павла Косенко.

Экшн intelligent_sharpen 2.0 работает за счет повышения локального контраста. Повышением локального контраста достигается визуальный эффект повышения резкости и проявление деталей после ресайза.
Но беда в том что экшн повышает локальный контраст не только там где его недостаточно но и там где локальный контраст изначально в избытке. В результате работы экшна создаются два корректирующих слоя с масками. Сам Павел предлагает использовать рисование по маскам чтобы скорректировать те участки, где применение экшна нежелательно и его надо уменьшить. Этот вариант и хоть и действенный, но нам - ленивым, не подходит. Хочется чтобы все делалось само, не так ли? ;) Особенно это актуально при массовой обработке фотографий, при подготовке фотоотчетов и т.п..
Можно еще увеличивать прозрачность корректирующих слоев, но в этом случае мы уменьшаем влияние экшна как сильно контрастных так и в слабо контрастных областях в равной мере. А это тоже не подходит.

Что же, давайте для начала определимся и сформулируем то что нас конкретно не устраивает в работе экшна. На основании личного опыта применения этого экшна я для себя выявил следующие недостатки:

1. Появление лесенки на участках более менее прямых наклонных линий с выраженным локальным контрастом.
2. Излишнее повышение детализации на участках с сильной детализацией и так же выраженным локальным контрастом.

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

Поиск решения

Как уже ясно из вводной части, проблема экшна intelligent_sharpen 2.0 в том, что он повышает локальный контраст и там где это действительно необходимо и там где локальный контраст и без того достаточен. То есть по всему кадру. Следовательно решением должен быть метод который уменьшает влияние экшна там где исходный контраст достаточен, а там где контраста недостаточно он не препятствует работе фильтра. Идея с автоматическим создаем масок для корректирующих слоев в данном случае мне кажется наиболее предпочтительной.

Немного поразмыслив я сформулировал для себя следующие нехитрые шаги воплощающие данное решение:

1. Найти участки исходного изображения с сильно выраженным локальным контрастом.
2. Сформировать на основе полученного шаблона маску локального контраста;
3. Применить полученную маску для каждого корректирующего слоя intelligent_sharpen 2.0. Что ж, начнем с теоретической проверки.

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

Итак немного теории

Для проверки данного алгоритма я использовал следующее тестовое изображение (Рисунок 1. Для примера оно увеличено в 4 раза.).


Рисунок 1.

Видим что в левой части локальный контраст стремится к нулю, и о субъективной резкости там остается только мечтать, а в правой части локальный контраст зашкаливает. В данном изображении контрастная область проходит по контуру круга. Можем считать что внутри круга и на градиенте локальный контраст отсутствует. Там действие экшна ограничивать не будем, может вылезет чего полезное кроме шума :) Идеальным решением будет если полученная маска пройдет по контуру круга и в левой части она станет максимально прозрачной (белой) а в правой части максимально непрозрачной (черной) в той мере как меняется локальный контраст по границе круга. Т.е. после наложения такой маски на корректирующие слои intelligent_sharpen 2.0 в левой части изображения действие экшна должно быть максимальным, в правой должно быть сведено к минимуму, желательно плавно - по мере проявления локального контраста на данном изображении. Для получения такой маски идеально подходит фильтр Find Edges. С принципом его работы рекомендую ознакомиться самостоятельно. Скажу лишь что он отображает линии вдоль контрастных границ, если совсем просто. Чем больше выражен локальный контраст тем ярче и толще получается линия. Чем локальный контраст меньше тем меньше влияние фильтра и там имеем нейтральный фон.


Рисунок 2.

На результате дейсвтия фильтра (Рисунок 2) видим, что в полученном изображении по правой границе круга проходит ярко выраженная линия, а вдоль левой она практически невидна. Т.е. это как раз то что нам надо. Применительно к маскам intelligent_sharpen 2.0 это означает что там где контраста на изображении изначально недостаточно экшн будет его беспрепятственно повышать. Там где локальный контраст изначально высок маска будет приглушать его увеличения, вплоть до полного запрета в особо выраженных случаях. Немного подкорректируем уровнями чтобы избавиться от ненужных артефактов фона и маска готова (Рисунок 3).


Рисунок 3.

Параметры уровней я получи опытным путем. В моем примере используются следующие настройки (Рисунок 4):

Рисунок 4.

Беспорно можно придумать более аккуратный способ получания маски локального контраста, но меня устроил этот самый простой.

Таким образом в "лабораторных условиях" удалось получить необходимую маску. Теперь на реальных примерах проверим как ее использование в экшне повлияет на окончательный результат.

От теории к практике

1. Ресайзим фотографию до 900px по большей стороне и применяем экшн intelligent_sharpen 2.0. В результате работы экшна получаем интеллигентно отшарпленную картинку с двумя корректирующими слоями.


2. Теперь на основе исходного изображения надо создать маску контрастности. Создаем копию исходного слоя (Ctrl + J). Обесцвечиваем его (Ctrl + Shift + U).


3. Применяем к слою фильтр Find Edges. В результате черным цветом обведены все границы с максимальным контрастом. Причем чем контраст сильнее тем более черным цветом обведена граница.


4. Теперь надо сделать маску немного аккуратнее. С помощью уровней делаем более мягкий переход между светлыми и темными частями маски. Теперь самым черным цветом выделены области с наиболее выраженным локальным контрастом. Остальные участки с локальным контрастом выделены полутенями. Таким образом получили маску распределения локального контраста исходного изображения. Можно установить движок уровней не в положение 5, а например в 7 или 9. На этом этапе возможны вариации.


5. Дальше остается только скопировать полученное изображение в маски корректирующих слоев, получившихся в результате работы intelligent_sharpen 2.0. На этом этапе можно отрегулировать прозрачность корректирующих слоев. Я доработанном экшне я их оставил без изменения. Но в большинстве случаев можно понижать делать корректирующие слои полностью не прозрачными. При этом качество работы экшна практически не ухудшается.
Теперь там где в исходном изображении локальный контраст - резкость была изначально достаточной корректирующие слои будут применяться в меру локального контраста на исходном изображении. Чем сильнее там был локальный контраст, тем меньше будет влияние intelligent_sharpen 2.0 на эту область. Чем меньше был локальный контраст исходного изображения, тем больше будет усиление локального контраста-резкости.


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



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

На следующих фотографиях можно увидеть исходное изображение и изображение после применения intelligent_sharpen 2.1.
Исходное изображение после ресайза (bicubic):


После применения intelligent_sharpen 2.1:


Усовершенствованный экшн intelligent_sharpen можно скачать тут: intelligent_sharpen 2.1

Результат
В результате доработки экшна, на мой взгляд, удалось добиться:
1. Повышения локального контраста там где это действительно необходимо;
2. Повышение общей резкости изображения с сохранением эффекта антиалиасинга.
3. Метод в целом позволяет вытаскивать детали из областей с минимальным локальным контрастом.

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

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

Пользуйтесь, буду рад если кому кому то пригодится!
LinkReply

Comments:
Page 1 of 3
<<[1] [2] [3] >>
[User Picture]From: macrop
2009-11-06 11:41 pm (UTC)
Так он же делал что-то похожее с контурами, только не помню где. Только там ещё небольшое расширение и растушёвка контуров была...
(Reply) (Thread)
[User Picture]From: dewynter
2009-11-06 11:59 pm (UTC)
Хммм.. Опробовал на нескольких своих фотографиях. Надо отметить, что действительно очень хорошо получается. Лучше чем ступенчатое уменьшение с промежуточным шарпингом и чем просто версия 2.0.
(Reply) (Thread)
[User Picture]From: macrop
2009-11-07 12:16 am (UTC)
ступенчатое уменьшение никакого смысла не имеет, это математическим путём доказывали...
(Reply) (Parent) (Thread) (Expand)
(Deleted comment)
[User Picture]From: seismo2000
2009-11-07 12:25 am (UTC)
в левой части снимка (там где лес) появляются неприятные артефакты. ИМХО просто лучше сделать обычный шарп во втором слое а потом с помощью Blending плавно отрезать самый верх тонов - там где "гало" от шарпинга появляется от перешарпа.
(Reply) (Thread)
[User Picture]From: con_failed
2009-11-07 12:29 am (UTC)
Это всё, конечно же, дело вкуса, но мне результат обработки совершенно не напоминает intelligent sharp. Как-то шумно и слишком резко (для моего глаза). Глазу хочется чуть больше покоя.
(Reply) (Thread)
[User Picture]From: mydogandi
2009-11-07 02:08 am (UTC)
А по мне так 2.0 делал шумную картину и излишне резкую на участках с мелкими деталями. Всегда приходилось рисовать затем по маскам, чтобы сгладить это.

Вариант 2.1 мне больше нравится. Причем, я его попробовал на своих фотографиях. Делать вывод на одной фотографии в посте не совсем корректно.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: tsukasa
2009-11-07 12:40 am (UTC)
а я просто дополнил экшен заливкой масок черным, и потом бегло кистью обвожу резкие зоны. И все.
(Reply) (Thread)
[User Picture]From: donna_laura
2009-11-07 09:23 am (UTC)
Который из..? 2.0 или 2.1?
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: griffonkliff
2009-11-07 06:32 am (UTC)
шарп через контурную маску довольно давно известен :)

иногда интересные результаты получаются при работе с каналом L
(Reply) (Thread)
[User Picture]From: jambojet
2009-11-07 07:38 am (UTC)
+1 к "давно известен"

Как раз чтобы уйти от всей этой ручной работы "начала века" и придумали плагины.

Вот недавно выкладывали отлично оформленный и очень крутой урок как делать HDR слоями\масочками вручную. Бездна времени и работы.
Тоже самое делается за 5 минут в Photomatix или подобных прогах.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: andrey_sl
2009-11-07 07:50 am (UTC)

Ошибка

Друзья, я не специалист в фотошопе. Подскажите почему экшн выдает у меня ошибку? Пишет "Объект Слой Layer 1 в настоящее время не доступен." Возможно это потому, что у меня русский шоп CS4?
(Reply) (Thread)
[User Picture]From: lekzet
2009-11-07 08:00 am (UTC)

Re: Ошибка

у меня такая ошибка вылезала, когда среди слоев был другой Layer 1 (не тот, который создается экшном). переименуйте его в Background или еще в чего-нибудь.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: q_w_z
2009-11-07 08:23 am (UTC)
гм. занятно
но есть же Focal Blade тот же
(Reply) (Thread)
[User Picture]From: alexeyskolyarov
2009-11-07 08:29 am (UTC)
автору - а вы не пробовали ресайз делать не бикубикой, а хотя бы билинейкой или вообще по Nearest Neighbor'у? на траве, деревьях и т.п. мелкоконтрастных исходно частях снимка дает гораздо лучший результат даже без шарпа.
Просто пытаться восстановить то, что было убито в случае ресайза бикубикой имхо не так и эффективно
(Reply) (Thread)
[User Picture]From: stanleykirsh
2009-11-08 01:52 pm (UTC)
Попробовал.
Nearest Neigbour дает любопытный результат, однако очень грубый. Порождает лесенки и теряет мелкие детали.
Результат ресайза Bilinear'ом мне показался полностью аналогичным бикубику.
Вообще же при ресайзе в меньшую сторону информация будет теряться в любом случае независимо от метода. Поэтому мое личное убеждение на данный момент такое что изображение надо уменьшать самым аккуратным способом и затем пытаться восстановить детали. Пока не найду ничего более оптимального.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: kondakoff
2009-11-07 09:06 am (UTC)
Хм..
Попробовал.
Явной и категоричной разницы не обнаружил.
Для Web публикации хорош и то и то и "простой" Sharpener PRO который делает картинку за 5 сек хорошо и резко.
Мне было бы интересно поколдовать над вариантами, увеличенного оригинала на формат, скажем 120 см по длинной стороне, для принтерной печати. Там есть смысл "бороться и искать, найти и не сдаваться"
А тут, даже на 900 по длинной стороне, и Unsharp Mask достойно работает.

На мой взгляд.
(Reply) (Thread)
[User Picture]From: pavel_kosenko
2009-11-07 10:36 am (UTC)
Идея intelligent_sharpen зключается в том, чтобы шарпить фактуру и мелкие детали. В отличии от обычного USM, который шарпит вдоль контуров, где резкость и без того наиболее высокя. Идея не только шарпить фактуру, но и дополнительно приглушить резкость вдоль контуров имеет право на существование. Однако на мой взгляд, в общем виде делать это после применения intelligent_sharpen не требуется. Дело в том, что контурная маска так или иначе затрагивает фактуру (это видно на приведенном примере) и, соответственно, скрадывает детализацию. Проблема же шумов, как правило, актуальна в случаях недостаточно качественной камеры или недостаточно умелой обработки. Еще один случай проявления шумов - съемка с высоким ISO в условиях низкой освещенности, но в такой ситуации шарп за вычетом основных контуров не сделает шумы принципиально менее заметными. Мое личное мнение такое. Под мои задачи и мой рабочий процесс шарп intelligent_sharpen не дает избыточного эффекта. Если же такое ощущение возникает (как правило, при шарпе слишком маленьких картинок), я предпочитаю снизить прозрачность слоев шарпа, т.к. избыточность проявляется равномерно по всей области изображения. Если же рассматривать уровень шарпа по фактуре и контурам, на мой взгляд intelligent_sharpen дает достаточно сбалансированный результат. Вместе с тем я очень рад, что моя разработка вызывает интерес и новые версии. Но я не уверен в том, что название версии 2.1 является корректным, ибо не вижу однозначного усовершенствования, вижу скорее вариант решения конкретных авторских задач. Думаю, более правильно было бы назвать версию 2.0b (вариант b).
(Reply) (Thread)
[User Picture]From: oniksphoto
2009-11-07 03:57 pm (UTC)
2.0.1 :))))))
(Reply) (Parent) (Thread)
(Deleted comment)
(Deleted comment)
[User Picture]From: elektraua
2009-11-07 12:16 pm (UTC)
По большому счету отличий нет, можно считать, что кое-где по запросу макроса Вы провели кисточкой на маске. Для тех, кто пользвоался маской ничего нового нету, картинка не приобретает каких-то дополнительных качеств. Для ленивых - да.
(Reply) (Thread)
[User Picture]From: mifki
2009-11-07 01:09 pm (UTC)
intelligent = интеллектуальный
(Reply) (Thread)
[User Picture]From: denisov_m
2009-11-07 11:25 pm (UTC)

слишком сложно

просто уменьшай в режиме Bicubic Sharpen до двукратного от нужного размера, а потом до конечного нужного методом Bilinear. без всякого шарпа крутая резкость.
(Reply) (Thread)
[User Picture]From: krom6axep
2009-11-09 10:29 am (UTC)
а для русской версии ФШ экшн будет? )
(Reply) (Thread)
Page 1 of 3
<<[1] [2] [3] >>