timon_timonich


Заметки суриката

Я в этой жизни ничего не добился. Зато сам!


Previous Entry Share Next Entry
Скрипт для удаления паразитного цвета на фотографии.
timon_timonich
В основе метода лежит фильтр Blur -> Average. Тема не новая, описывается во многих статьях: здесь, здесь или например здесь. Кто про неё в курсе, может сразу переходить к части, про то как все это дело можно автоматизировать, если же вы не знаете, я вкратце опишу его впервой части.

Как обычно, для привлечения внимания картинка, было - стало.



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

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



Дальше действия довольно просты, делаем дубликат слоя, затем применяем к нему Filter -> Blur -> Average. Получаем паразитный цвет в фотографии. Далее создаем корректирующий слой кривых, выбираем пипетку для точки серого, на картинке я выделил красным, и тыкаем на паразитный цвет.



Дальше отключаем видимость слоя с фильтром, и получаем вот такую картинку. Идеала не получилось, но всё-таки лучше чем было, при желании видимость корректирующего слоя можно уменьшить.



Теперь про автоматизацию, к сожалению фотошоп не записывает в Action пипетку, либо я про это не знаю и шел сложным путем. Я даже задавал вопрос в сообществе ru_photoshop, но никто мне ничем не помог и пришлось искать решение самому. Не то, чтобы очень мне это надо было, но очень хотелось задачу решить. Так как  Action тут пасовал, пришлось писать скрипт для фотошопа. Скачать его можно по этой ссылке (8Kb).

Инсталяция довольно простая, достаточно его скопировать по пути C:\Program Files\Adobe\Adobe Photoshop CS(ваша версия)\Presets\Scripts и перезапустить фотошоп. Ссылка на скрипт появится в закладочке File -> Scripts. Я не проверял на совместимость с другими версиями, но на CS5, все работает нормально.



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

Всем спасибо за внимание, надеюсь кому пригодится.

з.ы. Уже после того как я написал скрипт сам, я наткнулся на эту ссылку. Там реализован этот же метод, но на корректирующем слое Levels, ну и точки для коррекции там считаются немного по другому, добавил на случай вдруг кому ссылка пригодится :)

  • 1
А почему яркости?
В принципе если по яркости, то не сложно

- копия файла - grayscale - average - использовать серый канал как маску прозрачности для слоя color (1)

оригинал - копия слоя - average blur - invert - mode color, opacity (маска 1) - saturation



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

Метод ваш кстати хорош, мне нравится, но пропадает насыщенность. Но с другой стороны из-за того что сохраняется насыщенность, тени фиолетовые.

Я тут поковырялся, ваш метод определенно рулит и проще. Как обычно я пошел сложным путем. Надо только подумать как бы насыщенность вернуть человеческую, можно конечно тупо сделать Vibrance + 100 с маской насыщенности, но наверное это не выход :)

Так я писал изначально - lab - curves (привести к S образному виду кривые a и b)

Ну это все равно надо руками выставлять.. Меня интересует автоматизация способа :)

Есть у вашего метода один недостаток, он яркости не правит, а только цвет правит. Надо подумать как это можно решить :)

да, там специально разделение на цвет и яркость.
При желании можно автоматом типовую кривую создавать в lab с возможностью пользователю пару движений сделать.

Я поковыряюсь и чего нить выведу потом, кстати я тут выяснил если в качестве маски использовать average канала lightness режима Lab, вместо Grayscale то выходит лучше :)

В общем вы мне подсказали огромное поле для экспериментов :)

они не сильно отличаются, но чререз lab правильнее, с грейскейлом это я просто заработался.

В дополнение (но это под ручной способ) - якрость удобнее править наложением в luminosity копии слоя с выборочно смешанными каналами

Это я в курсе.. Всё таки на курсы Журавлева не зря ходил :)

  • 1
?

Log in