Метод пороговой ретуши с нормировкой зернистости и интерполяцией базовыми средствами Photoshop.
Предлагаемый метод реализуется в три этапа.
- С помощью медианной фильтрации создаём карту распределения шума в изображении.
- Нормируем величину шума (переменная величина для разных изображений), чтобы по единому значению порога выделить его выбросы, интерпретируемые как дефекты.
- Области с дефектами вырезаем из изображения, а дырки интерполируем оригинальным и простым взаимодействием операций размытия и наращивания оптической плотности для создания нужных весовых соотношений интерполяции.
На рис. 1 представлен фрагмент оригинального изображения. Дефекты не могли быть в должной мере устранены при сканировании на полупрофессиональном сканере Nikon Super CoolScan 8000 ED с системой ICE cubed в силу недостаточной развитости алгоритма интерполяции. Увы, ICE работает удовлетворительно лишь при сканировании с низким разрешением.
|
1 |
Система принесла бы куда больше пользы, если бы на выходе просто выдавала полученную маску в виде специального канала и оставляла интерполяцию заботам сторонних разработчиков ПО. Но маска на выходе уничтожается, а малоконтрастные «привидения» бывших дефектов уже не поддаются автоматическому выделению. К тому же они «беззернистые», что сразу выдаёт их происхождение!
Хороший софт должен, во-первых, делать настоящую интерполяцию, а не просто медианную фильтрацию. На зашумленном фоне из-за простоты алгоритма она неизбежно ведёт к систематическому сдвигу яркости даже при больших радиусах (на величину порядка амплитуды самого шума). Во-вторых, делать анализ характеристик шума в небольшой окрестности каждого дефекта и генерировать искусственный шум, который затем накладывается на интерполированные участки изображения.
Мы же, пережив досаду, поставили задачу облегчить жизнь ретушёра в тех случаях, когда снимок буквально загажен и делать ретушь вручную долго и малоэффективно. К тому же при реставрации старых отпечатков дефекты – составные части изображения, и никакая «чистка» при сканировании в принципе невозможна.
Особенно чётко дефекты видны на малоконтрастных фактурах (небо, стены домов, нерезкий фон). Такие фактуры в кадре могут занимать большую площадь (до половины), и именно здесь автоматическое выделение и устранение дефектов особенно актуально. Но и легко. В конце работы программы ретушёру останется только широкой кистью в несколько движений указать те области пространства кадра, где будет применена полученная интерполяция. Неплохая профилактика кистевого туннельного синдрома! (Надеюсь, каждый, кто избежит хворобы, пришлёт мне потом по рублю.)
Предлагаемый алгоритм относительно легко пишется в макрокомандах Photoshop (Actions) и не требует программистских навыков. Прежде всего, обязательно переходим в 16-разрядный режим, поскольку будем иметь дело с малоконтрастными изображениями в каналах.
|
2 |
Начальный шаг – дублирование слоя и его медианная фильтрация (рис. 2). Лучше дважды, т. к. бокс фильтра в Photoshop квадратный, что приводит к артефактам. Радиус выбираем так, чтобы самые крупные, но ещё многочисленные дефекты в значительной степени были замыты (3-5 самых крупных проще заретушировать вручную). Не обязательно, чтобы они совсем исчезли, т. к. для выделения области дефекта достаточно лишь заметно его изменить, а не совсем уничтожить. Обратите внимание: мы сглаживаем не для сглаживания, а только чтобы выявить положение дефектов!
Теперь надо создать две своеобразные карты распределения шума: одна будет просто модуль отклонения яркости от среднего (медианного) значения, другая – усреднённой величиной модуля. Первую карту затем разделим на вторую (в Photoshop это возможно, см. рис. 3) и получим очень ровную картинку шума, применив к которой команду Threshold c нужным порогом, сразу по всему изображению получим маску для «отсечки» дефектов и самых больших выбросов зерна.
|
3 |
Назначаем сглаженному слою режим наложения Difference и отправляем во вновь созданный канал видимую при таком наложении картинку (рис. 4). Это карта распределения шума по модулю.
|
4 |
Скопируем этот канал и несколько сгладим медианой полученный дубликат (на величину порядка радиуса при первом использовании фильтрации). Это карта усреднённой величины шума. Но чтобы использовать её в качестве «знаменателя» для деления, надо инвертировать её и сделать контрастнее, двигая только левый ползунок (рис. 5).
|
5 |
Теперь всё готово для маленького чуда, но пока пристальнее взглянем на то, что собираемся выравнивать. Временно контрастируем картинку в первом канале (следующей строчкой можно вставить команду Fade = 0%) и увидим крайне неприглядное зрелище (рис. 6). Ведь мы собираемся командой Threshold отделить самые большие выбросы шума, чтобы потом назвать их дефектами. Но при такой неравномерности получилось бы слишком много «дезертиров» либо «безвинно пострадавших».
|
6 |
|
7 |
Вернём контраст на прежний уровень (Fade = 0%) и в режиме Color Dodge наложим на канал тот, где мы получили сглаженную величину шума (уже инвертированного и контрастированного). Обещанное чудо произошло – фон стал совершенно ровным (рис. 8б–9)! Вероятно, большее удовольствие получишь, только научив математике кофеварку. Далее, отсекая по порогу этот шум, получим заготовку для выделения дефектов.
|
8 |
|
9 |
Чтобы сбросить нервное напряжение, временно оставим маску в покое. Некоторый шум у нас в голове очень вовремя напоминает про тот искусственный, который просто необходимо добавить в места с заглаженными дефектами, иначе вся наша ретушь моментально «рассекретится».
Создадим залитый серым слой и добавим к нему цветной шум; затем совсем чуть-чуть сгладим его и уменьшим насыщенность. После чего сгруппируем (Create Clipping Mask) со слоем, где у нас лежит «замедианенная» копия оригинала (её мы в дальнейшем заменим на интерполированную картинку, где вскоре окончательно доделаем маску), и назначим режим наложения Linear Light. «Шумовой» слой будет действовать только в пределах маски нижележащего слоя, но чтобы это оценить, можно временно отключить её, щёлкнув с нажатой по значку маски (рис. 11).
|
10 |
|
11 |
Возвращаемся к маске. Если предстоящая ретушь несложна, достаточно просто немного её расширить (Filter Б?? Other Б?? Maximum.) и срезать уголки медианой (рис. 12). Если же дефекты велики, диффузны, многочисленны и часто накладываются друг на друга, сделаем качественную интерполяцию.
|
12 |
Снова продублируем оригинал. Назовём его «2nd Approach». Создадим выделение на основе заготовки нашей маски ( + щелчок по маске слоя со сглаженным изображением). Перейдём в режим Quick Mask, расширим и сгладим его (если не сделали это раньше). Вернёмся в режим Selection и вырежем через это выделение дырки в нашем новом слое (Edit Б?? Clear или ). Они должны полностью удалить не только сами дефекты, но и возможные ореолы вокруг больших диффузных дефектов (рис. 13б–14).
|
13 |
|
14 |
Тут есть проблема: если порог достаточно низкий, то после расширения выделения (или маски) её разделённые области начнут сливаться в огромные рваные прорехи, в пределах которых уже трудно аккуратно интерполировать изображение. Значит, надо сильно расширять выделение только в областях крупных дефектов. Это несложно: разделим канал, где создаётся выделение, на два. В одном чуть-чуть расширим белые области (на 1-3 пикселя), а в другом сначала применим команду Minimum, чтобы мелкие дырки затянулись, а после – Maximum с гораздо большим значением (8-16 пикселей, сколько нужно). И наложим вторую на первую в режиме Lighten.
Вырезав изображение, сохраним созданное выделение в маске того слоя, с которым сгруппирован шумовой слой (рис. 15). В этот слой затем вставим нашу интерполяцию.
|
15 |
Теперь займёмся «одеванием» тех мест в картинке, где только что проделали множественную «трепанацию». Здесь пригодится замечательно удобное свойство параметра Opacity создавать различные весовые соотношения при усреднении нескольких изображений. Всё просто: допустим, вы хотите усреднить два слоя, но не среднеарифметически, а с относительными весами 1 и 2. Можно расположить их один над другим, задать предельно малые Opacity (1% и 2%; возможно, и сотые доли процента – на досуге подумайте, как), слить вместе и многократным повторением операций дублирования и слияния довести плотность слоя до 100%. Операции выполняются в Photoshop быстро. И будет вам счастье – получите нужное среднее.
Для плавного «затягивания» дырок проделаем такие шаги:
Blur(1px) |
Blur(2px) |
Blur(3px) |
Fade=1% |
Fade=1% |
Fade=1% |
Layer via copy |
Layer via copy |
Layer via copy |
Merge layers |
Merge layers |
Merge layers |
Layer via copy |
Layer via copy |
Layer via copy |
Merge layers |
Merge layers |
Merge layers
.
и т. д. |
Количество пар копирования и слияния внутри цикла определяет плавность затягивания.
Затем – многократное (около 16-ти) дублирование и слияние полученного слоя для восстановления плотности до 100% по всей площади. Если где-то что-то не затянулось – не беда: эта картинка будет наложена на уже готовый «замедианенный» слой, где нет дыр (рис. 16б–23). На последнем рисунке видно, что осталась только маленькая козулька, которую не удалось охватить выделением и сделать здесь дырку.
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
Мы могли бы затянуть наши дырки и медианной фильтрацией, но потребовался бы изрядный радиус (машина долго считает) и не получилось бы плавного перехода от нормального изображения к интерполированному.
|
24 |
|
25 |
На рис. 24б–25 вы видите момент вставки интерполированного изображения вместо сглаженного медианой в самом начале. Маска слоя включена, поэтому различия видны лишь в областях автоматически созданной маски; на остальном пространстве просвечивает оригинал. Интерполяция деликатнее ведёт себя на границах сложных обюектов (хвоя). И хотя сама хвоя по-прежнему испорчена, к ней уже гораздо проще подступиться с помощью автоматической ретуши.
|
26 |
|
27 |
|
28 |
Рис. 26б–28 с увеличением демонстрируют крупный дефект: как он выглядит исходно, после интерполяции и после включения искусственного шума.
|
29 |
На рис. 29 видно всё, что остаётся проделать вручную, – широкой кистью нарисовать маску, закрывающую область, где автоматическая ретушь работать не в состоянии. А на рис. 30 в удобном виде оригинал и результат обработки.
|
30 |
|
31 |
Рис. 31 демонстрирует «клинический» случай, который лучше позволяет сравнить обычное сглаживание медианой и метод с интерполяцией. Видно, что при обычном сглаживании требуется почти вдвое больший радиус, чтобы устранить дефект (машина работает медленно). К тому же дефект, пересекающий границу лепестка цветка, не удалось аккуратно убрать. На месте большого изюяна справа остался «дух». Метод с интерполяцией при меньшем радиусе медианного сглаживания (которое играет теперь лишь вспомогательную роль «проявителя» дефектов) значительно лучше справляется с задачей. Ручная маска в обоих случаях идентична.
Практика автоматической ретуши
Мне захотелось снять Зодиакальный Свет (пылевое облако вокруг Солнца в виде гигантской линзы), используя неподвижно укреплённую на штативе камеру. Я сделал несколько кадров с разными выдержками, от 1 до 18 минут. На минутной хорошо получились звёзды, почти резкими. На больших выдержках – собственно явление, но звёзды, естественно, сильно смазались вследствие вращения Земли. Чтобы объединить их, потребовалось аккуратно удалить звёздные треки с изображений. Тут я и воспользовался описанным методом. После работы Actions следы от звёздных ореолов ещё оставались – пришлось дополнительно сгладить изображение фильтром Median. В данном случае предварительная обработка значительно помогла улучшить качество конечной картинки. Звёзды затем были наложены в режиме Lighten, а сделанный чуть позже, на рассвете, кадр с хорошо проработанным ландшафтом монтировался через маску (рис. 32б–33). Обюектив Мир-20, F = 20 мм, f/4.8, плёнка 800 ISO.
|
|
32 |
33 |
Об авторе: Александр Юферев (http://www.photographer.ru/~shu-yu), независимый автор.