Быстрое удаление пыли со сканов
UPD 2020: Увы, скрипты сгинули при переустановках Фотошопа, и в резервной копии ныне не существующего сайта holina.ru я их не нашла :*( Но с тех пор инструменты ретуши стали работать гораздо лучше.
Обещала кое-кому по-соседски скрипт для удаления пыли 🙂
Откуда выросло:
Люблю заниматься ретушью фото: медитативное занятие. Но когда кадров много, они все очень пыльные, а отретушировать надо срочно, становится не до медитаций. Тут уже начинаешь придумывать и изобретать что-нибудь для быстрого решения проблемы. Думаю, именно так появились на свет всякие пылеудаляющие фильтры и великое изобретение — технология диджитал айс. Очень полезная штука. Но на чёрно-белых плёнках, увы, не работает. Иногда — безбожно жрёт детали. Да и в лучшие (по качеству картинки) сканеры: барабанники и псевдобарабанники, не встроена. Потому с проблемой ретуши сканов все плёночно-цифровые фотографы в той или иной мере сталкиваются. Причём как правило, на больших изображениях, с каждым из которых приходится возиться долго. А иногда — очень долго
В моём случае это был огромный заказ с фото кошек. Имаконовские сканы со старых негативов и слайдов 6×9, в следах геля от предыдущего сканирования на барабаннике, то есть сплошь в мелкую точечку. Убрать это руками за разумные сроки не представлялось никакой возможности. А фильтр фотошопа Dust & Scratches очень жестоко обходился с кошачьей шерстью и прочими тонкими фактурами, которых на фото хватало. Приходилось применять его выборочно, благодаря чему появился на свет, был обкатан и отлажен этот скрипт. Теперь я с удовольствием чищу им свои сканы (которые с имакона), чего и вам желаю. 🙂
Вот архив со скриптом: http://holina.ru/tempfoto/t_holina.zip — 1 Мб.
Его нужно распаковать и записать в ту папку, где фотошоп хранит скрипты. Обычно это что-то типа:
…/Program Files/Adobe/Adobe Photoshop CS2/Presets/Photoshop Actions/
После этого загрузить фотошоп, зайти в меню палитры Actions, выбрать пункт Loade Actions и в окошке — файл t_holina. atn.
В палитре Actions должен появится сет с именем: t_holina, а в нём: ретушь и ретушь ч.б.
Можно пользоваться.
Идеология работы:
Скрипт создаёт копии исходного слоя и применяет к ним фильтр Dust & Scratches с двумя разными установками: более деликатной — на удаление мелких пылинок и более грубой — на крупные дефекты. Я подобрала значения по умолчанию под «кошачий» заказ, но оставила возможность менять их в диалоге. Слои создаются с масками: два — с пустыми чёрными, которые нужно вручную проявлять в пыльных местах белой кистью. Один (на грубые дефекты) с маской, автоматически делающей слой прозрачным на резких границах предметов (которые не должны «мылиться»). Алгоритм выделения границ позаимствован из какого-то скрипта для повышения контурной резкости и немного доработан под задачу. Маска с границами тоже требует доработки белой/чёрной кистью по местам дефектов/значимых деталей, но иногда сильно ускоряет процесс.
Как пользоваться:
1. В исходном рисунке должен быть один слой Background. Увеличьте изображение, чтобы на экране был наиболее проблемный участок в натуральную величину или с небольшим увеличением. Запустите скрипт: ретушь, если картинка RGB, ретушь ч.б., если Grayscale.
2. Когда первый раз откроется диалоговое окно Dust & Scratches, подберите значение, чтобы удалялась большая часть мелких пылинок и не очень страдали детали изображения.
3. Когда окно откроется второй раз — добейтесь исчезновения всей или почти всей пыли, на целостность деталей можно не обращать внимание.
4. Скрипт закончит свою работу, не произведя видимых эффектов на картинке. Так и надо! Дальше — ручная работа. Слои с удалением грубых дефектов пока выключены, а слой с удалением мелких дефектов — Background copy — включён, но он полностью прозрачной, с чёрной маской. Маска слоя Background copy автоматически выбрана как объект рисования.
5. Возьмите большую белую кисть (инструмент Brush, рабочий цвет — белый) и пройдитесь ею по поверхностям без мелких фактур и деталей: типа неба или гладкой воды. Обратите внимание: одним махом вы избавились от большей части мусора там, где он всего заметенее. Уменьшите размер кисти и удаляйте пыль там, где есть мелкие детали, за которые вы опасаетесь. Это похоже на пользование Spot Healing Brush, но на мой вкус, дырки латаются аккуратнее.
В принципе, можно не морочиться и сразу перейти в п. 8. На относительно чистых сканах я обычно так и поступаю. Но если количество мусора для ручной ретуши всё ещё приводит в трепет — можно попробовать пункты 6 и 7.
6. Включите слой Background copy 2. Внимательно рассмотрите картинку. Если пыль удалилась хорошо, а мелкие детали пострадали на отдельных участках, удобнее будет отредактировать маску этого слоя. Включите её (правой кнопкой мыши по маске и Enable Layer Mask во всплывающем меню). Детали должны большей частью восстановиться, поскольку на их резких границах маска делает слой прозрачным. Однако дефекты при включении маски тоже вылезут: они тоже — объекты с резкими краями. Пройдитесь белой кистью — по дефектам, чёрной — по значимым элементам изображения и перейдите к п. 8.
Если пыль удалилась, но сильно «замылена» большая часть картинки, и главное, при включении маски не становится лучше — перейдите к п. 7.
7. Выключите Background copy 2. Включите слой Background copy 3, выберите как объект рисования его маску (левой кнопкой мыши), возьмите белую кисть… Действуйте как в п. 5, только аккуратнее: маленькой кисточкой — прицельно по дефектам.
8. Слейте все слои (Flatten Image) и доуберите 2-3 оставшихся самых крупных дефекта традиционным способом: с помощью Spot Healing Brush и Clone Stump.
P.S.: из комментариев в ru_fotoplenka «самый лучший скрипт это бережное отношение к негативу + кисточка и груша. ускоряет процесс ретуши очень сильно
еще перед сушкой пленки или сканированием можно принять душ, помыть полы.»
Да, с этого надо начинать! Но вроде и так понятно 😉 А судьба у плёнок (как у людей) бывает непростая: когда очевидные меры уже не помогают, тут и скрипт сгодится.
P.P.S.: пример ретуши, где применялся этот скрипт:
http://holina.ru/tempfoto/cats.zip — 18 Мб, самая кошмарная картинка из того заказа до и после ретуши, в натуральную величину.
Tags: мастерская, фото
Убираем пыль с 1000 фотографий с помощью Gimp и Script-Fu / Хабр
Думаю многим фотографам приходилось чистить отснятые фотографии от пылинок на матрице. Не имея полного Photoshop-a или LightRoom-a быстро обработать большое количество фотографий крайне трудно.
Но у нас есть Gimp и желание написать к нему скрипт.
На Хабре уже было не мало статей про возможность написания скриптов в Gimp.
Вот самый подробные обзор самого языка Script-fu и возможности написания на нём расширений к Gimp
Вот тут статья про пакетную обработку.
По идее, прочитав 2 эти статьи, можно сделать что угодно. Но вот только при решении обозначенной в заголовке проблемы, я столкнулся с многими нюансам, на преодоление которых ушло не мало времени, и которые мало где описаны. Даже в англоязычных Tutorial-ах и Help-ах. О них и пойдёт речь.
Отступление
Зеркальные цифровые фотоаппараты, кроме всех своих достоинств наделены небольшим недостатком. Пыль на матрице. Для её устранения существует масса физический приспособлений, а в некоторых моделях даже встроены специальные внутренние системы для стряхивания пыли с матриц (вот большая статья про все технологии в этом направлении).
Но в обычной жизни случаются ситуации когда отправляешься в отпуск не взяв ни одной «шваброчки» для очистки матрицы, и даже грушу для сдувания пыли. Ну или отснял 1000 снимков, и только дома при разборе заметил огромную пылинку на всех кадрах, так и бросающуюся в глаза.
В таком случае большинство специалистов используют Adobe Photoshop Light Room или же последние редакции полного Adobe Photoshop.
В LR используют богатые возможностями пакетной обработки фотографий .
В полном Photoshop — возможности создания Action-ов.
Но у обычных людей как правило нет ни LightRoom ни уж тем более Photoshop.
Зато есть Gimp, возможность написания к нему скриптов, и немного времени и усердствования.
Пишем скрипт
Для этого открываем Gimp а в нём Script-Fu консоль
Внешний вид консоли справа.
Скрипт лучше писать в каком-либо текстовом редакторе, отображающем связи скобок. Я для этого использовал Notepad++. После написания будем вставлять скрипт в консоль и проверять как он работает.
Для реализации идеи будем использовать некий функционал clone который по сути должен делать тоже что и инструмент копирования в GUI самого Gimp-a. Будем вводить координаты нашей пылинки на фотографии и как-то задавать область откуда клонировать участок, чтобы эту пылинку закрыть.
Для проверки идеи я не стал сразу писать «функцию» по всем правилам, как описано тут.
И начал подбирать параметры.
Тут началось самое интересное и не документированное. Дьявол скрывается в деталях.
Как видим из описания функции на вход её подаются 7 параметров, два первых из них, это DRAWABLE объекты. Немного погуглив легко можно найти примеры скриптов, получающих эти drawabale из пути к картинке
Вот код
( let* ( (image (car (gimp-file-load RUN-NONINTERACTIVE "E:/test.png" "E:/test.png"))) (drawable (car (gimp-image-get-active-layer image))) ) )
Первые 2 параметра есть (т.к. и source и target у нас наша же картинка)
Третий параметр выставляем в IMAGE-CLONE, т. к. мы хотим клонировать из этой же картинки а не из какого-то там ранее созданного паттерна. 4й и 5й тоже всё ясно — пишем сюда координаты нашей пылинки.
Методом проб и ошибок выяснил что работает этот инструмент кистью. И как раз 6й и 7й параметры задают путь по которому эта кисть будет двигаться. О том как задать верно кисть опишу ниже.
Больше всего времени ушло на понимание 6го параметра, и не мало сумятицы внёс коментарий к нему
Number of stroke control points (count each coordinate as 2 points) (num-strokes >= 2)
Я упорно вводил сюда количество координат, а не чисел. И получал непредвиденные результаты. Оказывается это просто количество чисел в следующем параметре (массиве). Т.е. допустим если мы хотим начать клонирование в x=50 y=50 и сделать кистью маршрут через 3 точки из точки 0, 0 в точку 10, 10 а затем в точку 20, 30 (точки соединятся прямыми, но не закольцовываются, т.
(gimp-clone drawable drawable IMAGE-CLONE 50 50 6 #(0 0 10 10 20 30) )
6 чисел в массиве, но они описывают всего 3 координаты. Если надо 4 координаты, то написали бы 8 и потом массив из 8 чисел. и так далее.
Теперь про кисть. Увы в данной версии Gimp (2.8.4) есть некий глюк при работе с кистями. Нельзя выбрать кисть из уже существующих и задать ей размер (вот этот баг). Размер будет браться либо стандартный либо тот что у вас в GUI сейчас для неё выставлен.
По-этому нам придётся делать свою собственную кисть и задавать ей параметры (что на самом деле более удобно)
Вот код открывающий тестовую картинку, создающий кисть и клонирующий левую часть картинки — в правой части по заданному маршруту (нарисуем треугольник).
( let* ; create variables for get DRAWABLE ( (image (car (gimp-file-load RUN-NONINTERACTIVE "E:/test. png" "E:/test.png"))) (drawable (car (gimp-image-get-active-layer image))) ) ; create and set brush (gimp-brush-new "MyBrush") (gimp-brush-set-radius "MyBrush" 4) (gimp-brush-set-shape "MyBrush" BRUSH-GENERATED-CIRCLE) (gimp-brush-set-hardness "MyBrush" 0.50) (gimp-brush-set-spacing "MyBrush" 0) (gimp-brush-set-spikes "MyBrush" 0) (gimp-brushes-set-brush "MyBrush") ; clones (gimp-clone drawable drawable IMAGE-CLONE 100 10 8 #(450 10 360 150 540 150 450 10) ) ; save result (gimp-file-save RUN-NONINTERACTIVE image drawable "E:/test_e.png" "E:/test_e.png") (gimp-image-delete image) )
Копируем скрипт в консоль и жмём Enter. Если всё удалось — видим в консоли следующее
В случае ошибок — увидим описание ошибки.
А вот картинки, до скрипта и после.
С параметрами кисти можно поиграть на своё усмотрение.
Применяем результат к тысячам файлов
Воспользовавшись кодом из описанной выше статьи, пишем функцию, которую будем применять к папке, она будет применять клонирование к каждой фотографии, и сохранять результат в новый файл в новой папке.
Путь к папкам (входной и выходной), точку которую будем закрывать (т.е. нашу пылинку) и её размер будем передавать параметром. Клонировать будем из области справа от пылинки.
Получаем такой скрипт
(define (script-fu-batch-dust-remove inputFolder outputFolder dustX dustY dustRadius) (let* ((filelist (cadr (file-glob (string-append inputFolder DIR-SEPARATOR "*") 1)))) ; create and set brush (gimp-brush-new "DustBrush") (gimp-brush-set-radius "DustBrush" dustRadius) (gimp-brush-set-shape "DustBrush" BRUSH-GENERATED-CIRCLE) (gimp-brush-set-hardness "DustBrush" 0.70) (gimp-brush-set-spacing "DustBrush" 0) (gimp-brush-set-spikes "DustBrush" 0) (gimp-brushes-set-brush "DustBrush") ; go throw all files in inputFolder (while (not (null? filelist)) (let* ((filename (car filelist)) (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) (drawable (car (gimp-image-get-active-layer image))) (dustCoordinates (vector dustX dustY)) ) ; clone (gimp-clone drawable drawable IMAGE-CLONE (+ dustX (* dustRadius 2)) dustY 2 dustCoordinates) ; save result to outputFolder (set! filename (string-append outputFolder DIR-SEPARATOR (car (gimp-image-get-name image)))) (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename) (gimp-image-delete image) ) (set! filelist (cdr filelist)) ) ; remove just created Brush for not spam brush list (gimp-brush-delete "DustBrush") ) )
Вставляем его в консоль. Теперь у нас в консоли есть функция script-fu-batch-dust-remove
Теперь открываем наши фотографии с пылью, находим с помощью подбора кисти размер пылинки (наведя мышью на пылинку и подобрав так размер кисти, чтобы она полностью покрывала пылинку). Слева с низу пишутся координаты нашего курсора на фотографии.
Выписываем полученные координаты и радиус
Копируем все файлы которые мы хотим исправить в папку. Копировать все подряд не стоит, я копировал только те где пылинка явно бросается в глаза, т.е. к примеру на фоне чистого неба или моря или другой однородной текстуры. Если скопировать все — даже те где пылинки не видно из-за неоднородности изображения в этом месте — то попортим эти фотографии не нужным клонированием.
Запускаем скрипт в консоли
(script-fu-batch-dust-remove "E:/toEdit/in" "E:/toEdit/out" 3186 682 15)
И в папке E:/toEdit/out получаем все файлы с теми же именами — но уже без пыли!
Результат достигнут.
P.S.
После ряда экспериментов пришёл в к выводу что лучше использовать функцию не gimp-clone а gimp-heal. С ней результаты лучше, вне зависимоти от окружающей пыль картинки. Параметры точно такие-же, только нету IMAGE-CLONE
Так что вызов в моём скрипте будет примерно такой
(gimp-heal drawable drawable (+ dustX2 (* dustRadius2 2)) dustY2 2 dustCoordinates2)
UPD1
Примеры работы скрипта с gimp-heal
Удачная обработка (диафрагма 22)
До
После
Не совсем удачная обработка (диафрагма 11)
После (половина окна теперь вместо пылинки)
Результат при диафрагме 7,0
До
После (видно что небольшая аура всё же осталась, надо было бы наверно увеличить радиус для этой фотографии)
В большинстве случаев результат как на первой или третей картинке — хороший, т.к. пылинки гораздо больше бросаются в глаза а окружении монотонного фона, а на нём они отлично закрываются. Со своей задачей скрипт справляется — убирает явно бросающиеся в глаза пылинки, и для вывешивания в веб альбом, такой обработки хватит. При желании что-либо напечатать в высоком разрешении, фото естественно будут дорабатывать уже индивидуально.
UPD2
В свете того что в скрипте я использовал для сохранения результатов метод gimp-file-save выходные файлы получаются по размеру меньше исходных. Т.е. получается gimp-file-save жмёт JPEG в другом качестве, нежели исходные файлы. Если кому это критично — могут почитать в браузере процедур про file-jpeg-save и использовать её вместо предложенного мной, более простого решения с gimp-file-save.
Избавьтесь от пыли! – Rocky Mountain Training
Главная / Adobe Photoshop / Adobe Photoshop: Избавьтесь от пыли!
Опубликовано: 9 марта 2010 г. Автор: barb.binderКатегория: Adobe Photoshop
Майкл Мейер, профессиональный фотограф и бывший студент программы Photoshop
Ах, пыль, проклятие негативов и слайдов. Как избавиться от всей пыли на изображении после сканирования одного из ваших любимых старых негативов, слайдов или отпечатков? Фильтр «Пыль и царапины» может быть очень полезным, но у меня есть небольшая хитрость, которую я использую каждый раз, когда обращаюсь к этому фильтру.
Посмотрите на изображение облаков и луны: вы заметите, что на изображении довольно много пыли. Начнем с традиционного использования фильтра «Пыль и царапины»:
- Откройте собственное изображение с пылью или царапинами.
- Выберите «Фильтр» > «Шум» > «Пыль и царапины»
- Отрегулируйте ползунки Радиуса и Порога, пока пыль не исчезнет. Хорошо, за исключением того, что к тому времени, когда вся пыль рассеется, я держу пари, что на изображении есть другие области, которые либо исчезли (например, луна), либо стали очень мягкими (например, новые края облаков).
- Давайте нажмем «Отмена» и попробуем еще раз.
На маленьком изображении или изображении с низким разрешением фильтр, вероятно, работает быстро. Если вы пытаетесь очистить большой файл с высоким разрешением (например, 40, 50 мегабайт или больше), обработка изображения займет намного больше времени. Итак, как сделать так, чтобы и работали намного быстрее, не оказывая негативного влияния на все изображение? (Понятно? Негатив?)
Что мне нравится делать, так это использовать инструмент «Лассо», чтобы быстро выделить запыленный участок изображения, а затем снова открыть фильтр. Отрегулируйте ползунки до тех пор, пока пыль не исчезнет, но вы все еще можете видеть зернистость или шум, как это теперь называется, на изображении. Для изображения луны и облаков я использую Radius=5 и Threshold=30. Вы не хотите заходить слишком далеко: если зерно исчезнет, вы сможете сказать, где был выбор. Когда вы будете удовлетворены, нажмите OK.
Затем быстро нарисуйте еще одно выделение вокруг еще немного пыли и не волнуйтесь, если ваши выделения выглядят так, как будто это сделал трехлетний ребенок. Мои всегда так делают. Теперь, вот быстрая часть этого трюка. Не возвращайтесь в меню «Фильтр», просто нажмите «Control + F», и Photoshop автоматически применит последний использованный фильтр с теми же настройками.
Между прочим, эти настройки будут меняться почти для каждого изображения, над которым вы работаете, если только они не имеют сходной структуры зерна и размера пикселя, так что вам придется немного поэкспериментировать. Горячий совет …Всегда будьте осторожны с рецептами или формулами в Photoshop. Обычно они являются лишь хорошей отправной точкой. Слишком много переменных, чтобы настройки всегда работали на каждом изображении.
Продолжайте выделять, пока не пройдете все изображение. Просматривать изображение таким образом может быть немного болезненно, но результаты будут лучше, чем при выполнении всего изображения сразу. Кроме того, у вас может быть только небольшой участок с пылью, и пара вариантов завершит работу за вас.
Удачи, продолжайте увеличивать пиксели.
Как удалить пятна в Photoshop
Как бы часто вы ни чистили камеру и объективы, и как бы ни была идеальна композиция, трудно избежать пары пятен или областей, которые вы хотите удалить с фотографии.
К счастью, в программе Photoshop относительно легко удалить пятна, не оставляя видимых следов.
Если вы используете Lightroom и все, что вы хотите сделать, это удалить очевидные пятна пыли с неба, я рекомендую использовать инструмент Lightroom для удаления пятен, а не более продвинутые методы, которые мы рассмотрим в Photoshop.
Альтернатива Lightroom Visualize Spot позволяет легко находить доминирующие и менее заметные пятна пыли по всему изображению.
Однако, если вы предпочитаете включать процесс удаления пятен пыли в свой рабочий процесс Photoshop, это также простая задача, которая не займет много времени; плюс, результаты обычно точны – без каламбура.
Инструмент «Точечная восстанавливающая кисть» , Инструмент «Восстанавливающая кисть » и Инструмент «Штамп » полезны для удаления пятен пыли, и любой из них подойдет для этой работы. Лично я предпочитаю работать с точечной восстанавливающей кистью, так как она самая простая из трех, но такая же мощная.
Вот мой предпочтительный способ удаления пятен пыли в Photoshop:
- Создать новый слой — На случай, если вы сделаете ошибку или захотите что-то изменить позже, я всегда рекомендую работать с отдельными слоями — используя неразрушающий рабочий процесс .
- Выберите нужный инструмент – Как уже упоминалось, я предпочитаю использовать инструмент «Точечная восстанавливающая кисть» (сочетание клавиш в Photoshop: J). Убедитесь, что тип кисти Content-Aware и что вы выбрали Sample All Layers .
- Отрегулируйте размер кисти и нажмите на пятна пыли – Удалить пятна пыли довольно просто, и все, что вам нужно сделать, это нажать на пятна, которые вы хотите удалить. Если пятно находится в детализированной области, вам может потребоваться внести некоторые точные корректировки, используя меньшую кисть вдоль краев.