Владимир Калюжный (skitalets_san) wrote,
Владимир Калюжный
skitalets_san

Category:

Ошибка резидента. Или, о чем не знал Павел Косенко и почему "звенит" его экшен IntelligentSharpen 2.

Очень часто приходится слышать вопросы касающиеся сравнения различных методик повышения резкости в ресайзах с экшеном Павла Косенко Intelligent Sharpen 2. Частично я упоминал о нем в своем цикле статей "Все про резкость". Однако, чтобы раз и навсегда расставить точки над "и" решил написать эту небольшую статью.

Прежде, чем начнать разбирать этот экшен по косточкам, пара слов о самом ресайзе. О методах уменьшения изображения. В своей статье Павел Косенко заявляет следующее:

Известно, что на итоговый результат также влияет способ ресайза. Я обычно использую простой Image - Resize с ресемплингом Bicubic, т.к. видимой разницы между различными способами (в том числе последовательное уменьшение размера) добиться не смог.

И уже на этой стадии совершает неточность.
Во-первых, Bicubic бывает разный, даже в Image - Resize. Судя по результатам, Павел использует бикубик с плавными градиентами. Однако, об этом ни слова. А не искушенный пользователь запросто может применить бикубик с уменьшением. И в итоге, получит очень плохой результат.
Во-вторых, за исключением билинейного режима ресамплинга, все остальные режимы, при уменьшении изображения, дополнительно пытаются поднять в нем резкость за счет образования ореолов на контрастных границах. А это чревато образованием артефактов при последующем повышении резкости.

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



Даже в масштабе 1:1 можно увидеть разницу. А если увеличить изображение, разница видна уже явно.
Поэтому, для максимально качественного повышения резкости в ресайзах рекомендуется использовать при уменьшении изображения либо специализированные плагины, либо, если это осуществляется средствами Photoshop, только билинейный режим ресамплинга.

Теперь, о самом повышении резкости в ресайзах. Давным давно пользователями Photoshop было замечено, что в подавляющем числе случаев при повышении резкости в ресайзах с помощью Unsharp Mask (Контурная резкость) наилучший результат дает радиус 0,2 при силе воздействия 500%. Кто был первым, обнаруживший это, сказать невозможно. Так как метод настолько прост даже эмпирически, что число "первооткрывателей" должно исчисляться сотнями и тысячами пользователей, если не больше. И до сих пор никто ничего лучшего не придумал. Дополняют метод только различными способами ослабления ореолов в нежелательных областях, но суть его везде одинакова.
Болше того, принципиально улучшить метод вряд ли вообще возможно. Потому что при уменьшении фотографии в 4-5 и более раз, размытие контуров присутствующее на оригинале, "ужимается" до радиуса в 1 пиксель. Практически вне зависимости от качества оптики, так как 16-25 пикселей ужимаются до 1. А раз радиус размытия не превышает 1 пикселя, то и формирующиеся при повышении резкости ореолы не должны превышать 1 пиксель. Иначе, качество картинки оставит желать лучшего.
Таким образом, чтобы повысить резкость в ресайзе, нам нужно сформировать на контурах ореолы нерезкого маскирования шириной не более 1 пикселя. Сделать это можно массой способов. Абсолютно не имеет никакого значения, какой фильтр, или метод для этого использовать.
Самый простой способ, это использовать Unsharp Mask (Контурная резкость) с указанными выше параметрами. Но радиус 0,2 это не догма. Можно использовать и 0,3, и 0,4. Отличаться будет только интенсивность ореолов, которую можно отрегулировать параметром Amount (Эффект). А реальная ширина ореола будет одинаковой, ровно 1 пиксель. Связанно это с тем, что ширина распределения яркостей ореолов в фильтре Unsharp Mask (Контурная резкость) подчиняется гауссову распределению. И равна величине параметра радиус в фильтре, умноженной на 2,5. А так как ширина ореола не может быть меньше 1 пикселя, происходит округление и меняется только его интенсивность.
Помимо этого, сформировать ореолы нужной ширины можно используя принцип метода Overlay (Перекрытие) + High Pass (Цветовой контраст). Но так как такой метод слишком слабо воздействует на исходник, нужно его усилить тем, или иным образом. Или кривыми, или вместо Overlay (Перекрытие) использовать Linear Light (Линейный свет), или и тем и другим одновременно. Значение радиусов будет аналогично используемым в Unsharp Mask (Контурная резкость).
Еще можно использовать пользовательский фильтр Custom (Заказная). Например, с такими параметрами.



И наложить этот слой на исходное изображение в режиме Overlay (Перекрытие), или Linear Light (Линейный свет). Параметры можно выбрать и другие, но главное, что таким образом формируются ореолы шириной в 1 пиксель.
Можно придумать и более экзотические способы, но суть будет та же самая. А так же, естественно, можно применить и фильтр Smart Sharpen ("Умная" резкость). Что и сделал Павел Косенко в своем экшене Intelligent Sharpen 2. Почему он остановил свой выбор именно на этом фильтре, а не на любом другом, я не знаю. Скорее всего, по причине наличия в нем возможности раздельного ослабления ореолов в светлых и темных областях. Правда, не совсем понятно, зачем для этого ему потребовался именно Smart Sharpen ("Умная" резкость). Так как все то же самое можно было делать и до появления в Photohop этого фильтра старым дедовским способом, с использованием в стиле слоя параметров Blend If (Наложить если).
Вот какие параметры ослабления ореолов в фильтре Smart Sharpen ("Умная" резкость) использованы в экшене.



Точно такой же результат получится, если в стиле слоя установить ползунки Blend If (Наложить, если) в такие положения.



Больше того, использование стиля слоя даже удобней. Так как не нужно каждый раз возвращаться назад, чтобы изменить, в случае необходимости, значения параметров в фильтре. Изменение положения левой части разделенного маркера светов, по своему действию идентично изменению значения параметра тонового диапазона в фильтре. А изменение положения правой части маркера позволяет дополнительно ослабить ореолы в самых светлых областях.
Впрочем, каким из способов ослабить ореолы, не столь важно. Стилем слоя, или в самом фильтре, принципиальной разницы нет никакой. Гораздо важнее другое. Но прежде, чем продолжить, посмотрим, что делает экшен.
Сначала, создается копия слоя с исходным изображением и к ней применяется фильтр с параметрами показанными на скриншоте выше. Обратите внимание, что включен режим More Accurate (Точнее). Затем, создается копия этого слоя. В результате, над слоем с исходным изображением находится 2 одинаковых слоя с повышенной резкостью. Один из них накладывается в режиме Darken (Затемнение), а другой в режиме Lighten (Замена светлым). Это сделано, чтобы иметь возможность раздельно управлять общей интенсивностью ореолов изменяя прозрачность слоев. И в завершении, устанавливается непрозрачность слоя показывающего светлые ореолы 50%, а темные 80%.
А теперь попробуйте вручную проделать все то же самое, только вместо Smart Sharpen ("Умная" резкость) применить старый добрый Unsharp Mask (Контурная резкость).
Последовательность действий та же. Создаете копию слоя с исходным изображением и применяете к нему Unsharp Mask (Контурная резкость) с силой воздействия 300% и радиусом 0,3. Потом делаете копию слоя в котором повышали резкость. И точно так же, один слой накладываете в режиме Lighten (Замена светлым), а другой в режиме Darken (Затемнение). В слое наложенном в режиме Lighten (Замена светлым) откройте стиль слоя, и в параметрах Blend If установите ползунки так же, как на скриншоте выше. Для слоя отображающего светлые ореолы задаете непрозрачность 50%, а для темных ореолов 60%. И сравните то, что получилось, с результатом работы экшена. На первый взгляд, результаты покажутся идентичными. Получается, что не нужно никаких новых фильтров и все то же самое можно сделать древними инструментами.
Но картинки кажутся одинаковыми только на первый взгляд. Если их увеличить, разница будет сразу видна. Причем, не в пользу экшена. Привожу пример фрагмента той же самой фотографии, которую Павел Косенко использовал в качестве демонстрации работы экшена.
Вот что получается, если вместо Smart Sharpen ("Умная" резкость) использовать Unsharp Mask (Контурная резкость), как описано выше.



А вот то, как отрабатывает экшен.



Легко заметить, что при визуально одинаковой резкости в масштабе 1:1, экшен отработал гораздо "грязнее". Помимо образования массы артефактов вокруг мелких веток, можно заметить и некоторое "съедание" самых тонких деталей. Возникает вполне закономерный вопрос, а почему? Я не зря посоветовал обратить внимание на то, что при работе экшена в фильтре Smart Sharpen ("Умная" резкость) включен режим More Accurate (Точнее). Это, ничто иное, как режим деконволюции. То есть, метод, который повышает резкость не мнимо, за счет образования ореолов вокруг размытых контуров, а восстанавливает сам контур. При использовании этого метода образуются не классические ореолы нерезкого маскирования, а более сложные. Привычный ореол более узкий, и на его границе формируется вторичный инверсный ореол. А при сильном воздействии на границе вторичного ореола формируется третичный, инверсный вторичному. Более подробно об этом рассказано в цикле статей "Все про резкость". Сейчас же важно просто знать, что в этом режиме образуется двойные и даже тройные сложные ореолы. Выглядит это при увеличении вот так.



Отчетливо видно, что даже при максимальном ослаблении ореолов в светлых областях, все равно присутствуют вторичные инверсные ореолы. А в темных областях хорошо видны и третичные ореолы.
Ореолы такой формы нужны, чтобы восстанавливать размытые контуры. Причем, суммарная ширина ореола должна соответствовать радиусу размытия. Но, как было сказано выше, при уменьшении изображения в 4-5 и более раз, радиус размытия контура уменьшается до 1 пикселя. То есть, получается, что ореолы такой формы просто не нужны, так как они заведомо шире. Они привнесут в изображение только грязь и "звон". Что хорошо было видно на приведенных фрагментах фотографии.
В этом и заключается вторая ошибка совершенная Павлом Косенко. Совершенно не разобравшись в работе фильтра Smart Sharpen ("Умная" резкость), был бездумно использован деконволюционный режим More Accurate (Точнее), при полном отсутствии понимания алгоритмов его работы. В 2009 году, на какой-то из площадок рунета я заикался об этом Павлу. Но он, почему-то, оставил мое замечание без внимания.
Избежать образования таких артефактов легко. Если так уж хочется использовать именно Smart Sharpen ("Умная" резкость), нужно просто отключить режим More Accurate (Точнее). А можно и вообще обойтись без этого фильтра. С тем же Unsharp Mask (Контурная резкость) результат будет такой же. Или, как уже упоминалось выше, можно вообще любым другим способом сформировать ореолы шириной в 1 пиксель.
Если же такая грязь, это попытка дополнительной прорисовки текстур, то лучше, на мой взгляд, это делать отдельно, а не одновременно с повышением резкости, двигая наугад ползунки, не понимая алгоритмов работы. Лучше уж воспользоваться методом Дена Маргулиса и наложить через маску шум на нужные области. Или, что еще лучше, воспользоваться идеей Андрея Журавлева и создать отдельный слой дополнительно прорисовывающий малоконтрастные микро текстуры. И в том, и в другом варианте для усиления текстуры используется отдельный слой, который можно регулировать независимо от повышения резкости. Что в любом случае лучше, чем пихать все в один фильтр.

В заключении хочу отметить следующее. Все что написано выше, это, по большому счету, в основном придирки. Потому что в большинстве случаев работа экшена, даже в его существующем виде, дает достаточно хороший качественный результат. Разница по сравнению с тем, как должно было бы быть, есть, но она не настолько явно видна. И заметить ее часто можно вообще только "промигиванием" результатов. Однако, иногда, хоть и не часто, в результате работы экшена может образоваться визуально неприятный "звон". Пусть и не сильный, но уже явно заметный. В принципе, и его можно убрать используя различные "костыли". Однако, как мне кажется, лучше изначально не допускать самой возможности его образования. Как это сделать, как предотвратить его появление и как изменить экшен, подробно описано выше.
Tags: повышение резкости
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 38 comments

Recent Posts from This Journal