?

Log in

No account? Create an account
Фильтр "Сделайте мне так же" - Фотокузница [entries|archive|friends|userinfo]
Фотокузница

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

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

Фильтр "Сделайте мне так же" [May. 4th, 2010|12:04 am]
Фотокузница

fotoforge

[youzhick]
Надеюсь, по теме сообщества...

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

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

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

Под катом приводится описание и ссылки на нынешнюю версию, а в результате интересует вопрос: продолжение кому-нибудь нужно?
Или, может, я вообще ломлюсь в открытую дверь, и что-то подобное давно уже существует?





Итак, жила-была фотография...




Допустим, что по некоторой прихоти захотелось мне придать ей следующее цветовое решение. По какой причине могло подобное захотеться - оставим за кадром. Может, головой ударился?




Для этого к картинке был применен набор кривых:




Набор простой, но, допустим, забылся он. А теперь хочется "то же самое" сделать с другими картинками, снятыми в другое время в другой стране, да и вообще, какая разница, где и когда.
Здесь-то и приходит на помощь программка (рабочее название Filter Wand):



Интерфейс, на мой взгляд, более чем очевиден и особых пояснений не требует. Загружаем старую картинку "до" (Load source), загружаем ее же "после" (Load product), запускаем восстановление фильтра (Generate filter). Получив сообщение "Filter generation successfull", либо сохраняем его для будущего использования, либо сразу переходим к обработке новых картинок. Загружаем новую картинку "до" (Select target), применяем сгенеренный фильтр (Apply filter) и получаем новую картинку, обработанную "так же, как старые". Сохраняем результат (Save result as).

Пример использования восстановленного фильтра на основе тех самых приведенных выше картинок (заодно и с перепроверкой на исходнике):
верхний ряд - исходные фотографии;
средний ряд - фотографии, обработанные "восстановленным" фильтром;
нижний ряд - фотографии, обработанные исходно известным набором кривых, т.е. те, которые должны были бы получиться, если бы "позабытое" преобразование не было забыто.



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

Пара замечаний:
1. После того, как фильтр будет сгенерен, программа выдаст статистику. Особого внимания на нее обращать не стоит, но идеально подогнанный фильтр выглядит так: "[Coverage: 100%. Max inconsistance: 0. Max deviation: 0. Mid deviation: 0]". Если Max inconsistance отличен от нуля - значит, преобразование не описываемо полностью кривыми RGB (или был использован формат с потерями).
2. Программа работает только с числовыми значениями RGB, НЕ принимая во внимание профили. Следите, чтобы source и target имели один профиль. В результирующий файл профиль записан не будет, но все числовые значения будут в том же профиле, что имел целевой файл (target).
3. Настройки сохранения результирующего файла не предусмотрены, но для всех форматов, в которых это возможно, используется сохранение с максимальным качеством. Формат определяется расширением (при неуказанном расширении будет сохранен BMP).
4. Поддерживается только 8-битные цветовые каналы. По идее, 16-битные автоматически ужимаются, но реально работу с ними не тестировал особо.

Ссылки для скачивания:
Скачаль целиком программу можно здесь (5 МБ).
Если вдруг у вас уже есть библиотеки от Qt SDK 2010.02.1, можно скачать один EXE-шник - здесь (185 КБ).



UPD: Судя по многочисленным отзывам, программа прекрасно пашет на всех моих домашних компах, но ни на чьих больше :) Сорри, завтра проверю на работе, что за фигня творится, обновлю пост.

UPD 2: Да, налажал с переносимостью библиотек. Сейчас все исправлено. Ссылку на отдельный экзешник удалил, архив с полной версией обновил - все должно работать.
LinkReply

Buy for 1 000 tokens
Buy promo for minimal price.

Comments:
Page 1 of 3
<<[1] [2] [3] >>
[User Picture]From: master_nemo
2010-05-03 08:28 pm (UTC)
впечатлёвывающая идея

>>восстанавливаются лишь те пробразования, которые могут быть описаны кривыми RGB. Реализовывать ли дальше - вопрос времени, лени и того, интересно ли это вообще кому-нибудь, кроме меня.

интересно.
а что, есть идеи КАК? в смысле как реализовать восстановление обработки не сводящейся к переходной характеристике?
хм... можно ещё кроп-поворот отловить.
а чего ещё?
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 08:41 pm (UTC)
Не, имелись в виду не кроп и не поворот.

Второй шаг - восстановление гиперповерхностей R'(RGB), G'(RGB), B'(RGB).

Третий - восстановлдение вотображений с некоторой окрестности. Т.е. включая эффекты шарпа и тонмаппинга.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: dvn_st
2010-05-03 08:31 pm (UTC)
интересная идея, думаю можно развивать ее)) потом глядишь и денег на ней зарабатывать начнешь ;)
(Reply) (Thread)
[User Picture]From: lord_wazzup
2010-05-03 08:42 pm (UTC)
а на чем написана? затея очень хорошая(нужная бытовая), хоть и для того чтобы уловить сложные преобразования нужно повысить алгоритмически-математический аппарат очень сильно
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:01 pm (UTC)
Банально на плюсах. GUI и чтение/запись файлов - через Qt.

Да, естественно, от такой примитивной версии до более сложных отображений будет не столько "доработка", сколько "переделка". Для работы с областями удобнее будет, наверное, вообще на нейросети переложить вычисления.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: cathik
2010-05-03 08:51 pm (UTC)
Спасибо!
(Reply) (Thread)
[User Picture]From: car0wa
2010-05-03 08:54 pm (UTC)
донт ворк
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:03 pm (UTC)
Что именно? Вообще не запускается, фильтр не генерится или уже сгенеренный не выдает желаемого результата?

В первом случае - проверьте, что DLLки записаны в ту же папку, где программа. Во втором - что исходники "до" и "после" одного размера, в третьем - что исходное отображение вообще было представимо кривыми
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: ven_digo
2010-05-03 08:54 pm (UTC)
Очень интересно. Но я так понял что это не плаг, а отдельная программа. А было бы удобно именно плагином. Что бы он просто добавлял корректировочный слой кривых! А дальше уж сам как хочешь его меняй (подгоняй под конкретную картинку) и сохраняй при желании и т.п.

В общем, в виде плагина к Photoshop, она была бы оч интересна, а так, не очень )

Хотя идея, просто Вау!
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:05 pm (UTC)
Да, отдельная.
С плагинами надо еще резбираться, как они устроены - может, м дойдут руки, но точно не в ближайшее время :)
(Reply) (Parent) (Thread)
From: georgesss
2010-05-03 08:57 pm (UTC)
а под мак есть такая?
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:06 pm (UTC)
Не, мака у меня нет... Хотя, если будет более развернутая версия - выложу и исходники, наверное. Желающие смогут перекомпилить под мак.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: osa_fox
2010-05-03 08:59 pm (UTC)
что-то у меня не работает... не грузится ни исходник, ни результат...(((
(Reply) (Thread)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
[User Picture]From: nadiresonance
2010-05-03 09:05 pm (UTC)
А не проще в LR использовать Copy Settings?
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:10 pm (UTC)
А LR умеет генерить эти сеттинги для файлов, обработанных не в LR, или для тех, для которых прежние сеттинги не сохранились?
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: devka_glupaya
2010-05-03 09:25 pm (UTC)
Спасибо-спасибо! Самая моя большая беда - это "как же повторить то, что уже сделано, не помня, что я делала") Буду пробовать с помощью Вашей программки бороться с этим)
(Reply) (Thread)
[User Picture]From: youzhick
2010-05-03 09:40 pm (UTC)
Рад порадовать :)
Правда, люди вон говорят, у многих не запускается (если не у всех вообще). Похоже, что-то с переносимостью библиотек - завтра проверю, в чем проблема
(Reply) (Parent) (Thread) (Expand)
(Deleted comment)
[User Picture]From: youzhick
2010-05-03 10:06 pm (UTC)
Интер - да, экстра - строго говоря, нет :)
При отсутствии на исходной кривой крайних значений, они дополняются до 0 и 255. После этого уже интерполируется от края до тех значений, которые есть.
На практике, правда, оказалось, что даже и интерполировать-то надо крайне редко. Большинство вменяемых картинок содержат полный диапазон или почти полный.

Если в разных частях картинки отображение разное - оно будет усреднено. Положение при этом не запоминается. В дальнейдем буду добавлять учет некоторой окрестности пикселя.
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: bukov_ka
2010-05-04 02:54 am (UTC)
> программа прекрасно пашет на всех моих домашних компах, но ни на чьих больше
Не работала. После установки SDK -- все ок. Видимо, каких-то библиотек не хватает.
А программа интересная. У меня знакомый как раз недавно такую просил. :)
(Reply) (Thread)
[User Picture]From: osa_fox
2010-05-04 07:40 am (UTC)
А что такое SDK? И где взять? :)
(Reply) (Parent) (Thread) (Expand)
(Deleted comment)
[User Picture]From: youzhick
2010-05-04 07:45 am (UTC)
Да, была проблема с переносимостью. Старая версия, как оказалось, читала только BMP. Теперь должно работать все.

Ссылку на отдельный экзешник убрал, архив с полной версией обновил. Перезалейте его целиком.
Буду благодарен за еще одну проверку :)
(Reply) (Parent) (Thread)
(Deleted comment)
(Deleted comment)
[User Picture]From: baghamut
2010-05-04 05:21 am (UTC)

Дайте две!

Идея супер, надеюсь вы будете это разрабатывать дальше

(Reply) (Thread)
[User Picture]From: youzhick
2010-05-04 07:46 am (UTC)

Re: Дайте две!

Постараюсь :)
Если что - обновил архив по ссылке. Старый в результате глюка читал только BMP. Новый должен нормально работать со всеми форматами
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: zarajsky
2010-05-04 06:41 am (UTC)
Ну у меня в ФШ всегда включена история. И я по ней могу востановить порядок действий.
(Reply) (Thread)
Page 1 of 3
<<[1] [2] [3] >>