РМ>А можно ссылку на хоть одну такую программу или фильтр к фотошопу для восстановления смазанных изображений? А то я вобщем-то писать бросился только потому что готового не нашел.
Самая известная из них, это FocusMaigic, она умеет устранять расфокусировку, смазывание и многое другое. http://www.focusmagic.com/exampleforensics.htm
Здравствуйте, Рома Мик, Вы писали:
РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
google "восстановление изображений" или "image restoration"(последнее более продуктивно)
Если то, как "дрогнула рука" неизвестно — копать в сторону "blind image restoration" или "blind deconvolution"
Также на присторах инета можно найти неплохую книжку:
И.С.Грузман, В.С. Киричук, В.П. Косых,
Г.И. Перетягин, А.А.Спектор
ЦИФРОВАЯ ОБРАБОТКА ИЗОБРАЖЕНИЙ В ИНФОРМАЦИОННЫХ СИСТЕМАХ
УЧЕБНОЕ ПОСОБИЕ
для студентов V курса РЭФ
(специальности “Радиотехника” и
“Средства связи с подвижными объектами”)
Для общего знакомства с темой — самое то.
Далее стоит посмотреть книги на www.dsp-book.narod.ru
В особенности — Э. Прэтт "Цифровая обработка изображений" — фундаментальнейший труд по побработке изображений.
А вообще, в теории, все довольно просто: заблуренное изображение есть свертка идеального изображения с неким фильтром, дающим искажение. Соответственно, нужно "развернуть" свертку(по-английски это называется deconvolution) и найти "идеальное" изображение. Если передаточная функция фильтра известна, то это (в теории) можно сделать точно. На практике, правда, все гораздо сложнее..
Здравствуйте, michus, Вы писали:
M>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.
Это не сработает. Обратного процесса не вывести, имея только смазанное изображение.
Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...
LD>Это не вся правда. Вся правда будет в том, что "исходное изображение" вычислено математически, аппаратная функция абсолютно точно известна и использованна для решения обратной задачи, в нее не вносилось никаких искажений....
Разумеется, идеального восстановления на реальных изображениях не добьешься, речь идет о некоем приближении, которое при некоторых случаях может быть вполне приемлемым.
LD>Короче в реальном мире качество восстановленного изображения вряд ли дотянет даже до 3го в первой строке.
Ну и это весьма неплохо, уже можно прочитать текст, на оригинальном изображении текст вообще не читается.
А вообще — зависит от условий сьемки. Разумеется, если мы снимаем вечером при ISO 400 и траетория смаза на пол-кадра, тот тут действительно мало чем поможешь. Но в некоторых случаях (низкие шумы, контрастная картинка, небольшой смаз) результат обработки вполне приемлем.
Если очень хочется, можно построить искажающую функцию того фотоаппарата, которым производилась съемка, тогда результат будет еще более лучшим.
LD>А картинки подобные приведенным у Тихонова били лет 30-40 назад, но что-то я до сих пор не вижу чтоб в каждый (да хоть бы в один!) цифровой фотоаппарат был встроен соответствующий алгоритм. С чего бы это?
А все это неспроста. Все упирается в мощность процессоров фотокамер и временем обработки. Это на компе я могу полчаса ждать отработку алгоритма, а в фотиках все жестко лимитировано, иначе время готовности к следующему кадру было бы не доли секунды, а минуты. Не секрет, что даже интерполяция цветов в камере реализована не самым качественным образом и внешние RAW-конвертеры дают лучшие результаты, тогда что же говорить об алгоритмах коррекции хроматизма и т.д.
ATP>Разблюриваете картинку очень сильно до получания изображения одного среднего цвета. Все, вся информация об изображении утеряна, попробуй восстановить всю картинку по одному значению. ATP>ATP>Вывод — информация теряется при применении фильтра размытия, причем сколько, зависит от фильтра и силы.
Размыть картинку до однородного цвета можно только при бесконечном радиусе фильтра (если имеется ввиду размывание типа Гауссового), чего не бывает. Это в теории, а на практике вполне можно достичь однородного цвета из-за квантования (соседние пиксели будут настолько близки по яркости, что буду квантованы одним значением).
Так что противоречия теории нету (поправьте меня, если ошибся).
Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
Здравствуйте, Рома Мик, Вы писали:
РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.
Здравствуйте, Рома Мик, Вы писали:
РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, michus, Вы писали:
M>>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься. A>Это не сработает. Обратного процесса не вывести, имея только смазанное изображение. A>Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...
В какой-то книге по обработке сигналов года полтора назад видел как к размытому (motion blur) изображению применяется некий фильтр после чего получается практически идиальная картинка...
Здравствуйте, Dimonka, Вы писали:
D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
Это другая проблема, в моем случае решаемая, поскольку меня вполне устроит сделать часть работы вручную.
Здравствуйте, Reunion, Вы писали:
R>В какой-то книге по обработке сигналов года полтора назад видел как к размытому (motion blur) изображению применяется некий фильтр после чего получается практически идиальная картинка...
линейный фильтр только деблюр может при свертке, я просто имел ввиду остальные методы, которые на эмпирике основаны, т.е. дают погрешности, причем такие, что визуально "хрен редьки не слаще".
В общем, на свежую голову всё оказалось довольно просто. Впрочем реалтзовывать буду вечеро на не свежую, так что лучше запишу, что надумалось
Пусть смаз горизонтальный длиной L пикселов. Рассмотрим одну строчку изображения. S — смазанной изображение, которое нам известно, D — восстановленное, оно же "исходное", которое надо найти.
Смаз это примерно следующее:
S[x] = Sum[x-L/2;x+L/2](D) / L
Тогда очевидно, что
S[x+1] = S[x] + (D[x+L/2+1] - D[x-L/2]) / L
Или, что тоже самое
D[x] = D[x-L-1] + (S[x-L/2]-S[x-L/2-1])*L
То есть, имея на строке точку, в которой нам известен правильный цвет, можно восстановить изображение. Если на изображении есть однотонные области длиной больше L, то в середине такой области S = D.
Преполагаю не мудрствуя лукаво использовать уже написанные функции поворота изображения и сделать именно по этой формуле. От пользователя понадобится указать только направление и длину смаза, ну и если будут проблемы, то и точки, где цвета правильные.
Далее пользователь может применить программу несколько раз, например отдельно для фона, отдельно для перднего плана и ручками совместить реультат в фотошопе.
Осталось запрограммировать и посмотреть, что получится
Здравствуйте, Рома Мик, Вы писали:
РМ>В общем, на свежую голову всё оказалось довольно просто. Впрочем реалтзовывать буду вечеро на не свежую, так что лучше запишу, что надумалось
РМ>Пусть смаз горизонтальный длиной L пикселов. Рассмотрим одну строчку изображения. S — смазанной изображение, которое нам известно, D — восстановленное, оно же "исходное", которое надо найти.
РМ>Смаз это примерно следующее: РМ>
РМ>S[x] = Sum[x-L/2;x+L/2](D) / L
РМ>
РМ>Тогда очевидно, что РМ>
РМ>S[x+1] = S[x] + (D[x+L/2+1] - D[x-L/2]) / L
РМ>
РМ>Или, что тоже самое РМ>
РМ>D[x] = D[x-L-1] + (S[x-L/2]-S[x-L/2-1])*L
РМ>
РМ>То есть, имея на строке точку, в которой нам известен правильный цвет, можно восстановить изображение. Если на изображении есть однотонные области длиной больше L, то в середине такой области S = D.
РМ>Преполагаю не мудрствуя лукаво использовать уже написанные функции поворота изображения и сделать именно по этой формуле. От пользователя понадобится указать только направление и длину смаза, ну и если будут проблемы, то и точки, где цвета правильные.
РМ>Далее пользователь может применить программу несколько раз, например отдельно для фона, отдельно для перднего плана и ручками совместить реультат в фотошопе.
РМ>Осталось запрограммировать и посмотреть, что получится
Получилось? Просто мне тоже надо решить такую же проблему.
Здравствуйте, Reunion, Вы писали:
R>Получилось? Просто мне тоже надо решить такую же проблему.
Не-а. Надо еще что-то думать. Проблема в том, что надо очень точно определитбь величину смаза и найти опорные точки сложно...
Здравствуйте, Рома Мик, Вы писали:
РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
обратная фильтрация, деконволюция. обсуждалось в форуме ixbt. основная идея у меня была такая, что по изображению точечного источника ворсстановить траекторию и собрать вдоль нее сигнал обратно в точку.
Здравствуйте, piAnd, Вы писали:
A>Здравствуйте, michus, Вы писали:
M>>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься. A>Это не сработает. Обратного процесса не вывести, имея только смазанное изображение. A>Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...
не выносите приговор слишком быстро. такие вещи, как статистическая деконволюция, и ее повсеместное применение в обработке сигналов — очень мощная вещь.
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, Рома Мик, Вы писали:
РМ>>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
это в случае нефокуса. а в случае дрожания рук имеем почти параллельный перенос
Здравствуйте, Megabyte, Вы писали:
M>обратная фильтрация, деконволюция. обсуждалось в форуме ixbt. основная идея у меня была такая, что по изображению точечного источника ворсстановить траекторию и собрать вдоль нее сигнал обратно в точку.
Идея-то понятна. А можно конкретики, формул например.
D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
Если "дрогула рука", то смаз примерно одинаковый по площади кадра.
Я где-то с месяц назад занимался этой же проблемой. Для идеальных изображений неплохие результаты дает винеровская фильтрация и фильтрация по Тихонову. Т.е. если взять изображение и в фотошопе его смазать или расфикусировать, то данными фильтрами можно полностью восстановить исходное изображение (кроме краев). В реальности качество восстановления ограничивает шумы и неоднородность искажающей функции по полю изображения.
Резюме — для некоторых случаев реальных изображений вполне можно улучшить качество.
P.S. Есть куча специальных программ и плагинов к фотошопу, которые заточены именно под восстановление смазанных и расфокусированных изображений. Они используют фильтры, подобные вышеназванным.
Здравствуйте, Y-Vladimir, Вы писали:
D>>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
YV>Если "дрогула рука", то смаз примерно одинаковый по площади кадра. YV>Я где-то с месяц назад занимался этой же проблемой. Для идеальных изображений неплохие результаты дает винеровская фильтрация и фильтрация по Тихонову. Т.е. если взять изображение и в фотошопе его смазать или расфикусировать, то данными фильтрами можно полностью восстановить исходное изображение (кроме краев). В реальности качество восстановления ограничивает шумы и неоднородность искажающей функции по полю изображения.
А где-нибудь можно почитать/посмотреть исходники этого дела?
YV>Резюме — для некоторых случаев реальных изображений вполне можно улучшить качество.
YV>P.S. Есть куча специальных программ и плагинов к фотошопу, которые заточены именно под восстановление смазанных и расфокусированных изображений. Они используют фильтры, подобные вышеназванным.
Re[4]: анти-motion blur
От:
Аноним
Дата:
06.05.06 11:21
Оценка:
Здравствуйте, Y-Vladimir, Вы писали:
YV>Если нужно, могу привести формулы этих фильтров.
Да было б любопытно!
PS: от этого задача в общем виде не становится решаемой. Частный случай да, а общий — нет.
Здравствуйте, Y-Vladimir, Вы писали:
YV>P.S. Есть куча специальных программ и плагинов к фотошопу, которые заточены именно под восстановление смазанных и расфокусированных изображений. Они используют фильтры, подобные вышеназванным.
А можно ссылку на хоть одну такую программу или фильтр к фотошопу для восстановления смазанных изображений? А то я вобщем-то писать бросился только потому что готового не нашел.
Здравствуйте, Y-Vladimir, Вы писали:
A>>Вобщем теоретически задача не решаема. YV>Решаема. Вот как это выглядит практически: YV>
YV>Слева-направо по столбцам: исходное изображение, инверсная фильтрация, Винеровская филттрация, фильтрация по Тихонову.
YV>Верхняя строка — сильный аддитивный шум. YV>Средняя строка — средний аддитивный шум. YV>Нижняя строка — слабый аддитивный шум.
YV>Если нужно, могу привести формулы этих фильтров.
нужно
Начну с плохой новости. В общем случае задача не решается, как теоретическски, так и практически. Это связано с тем, что задача является некорректно поставленной (в математическом смысле). На практике это означает, что любое полученное решение неустойчиво, т.е. фактически очень слабо связано с фактическими входными данными. Интересующиеся могут читать классику — Арсенин, Тихонов. "Решение некоррктно поставленных задач" или как-то так.
Относительно хорошая новость состоит в том, что если слегка изменить задачу и ввести в уравнение регуляризующую поправку, то задачас становится разрешимой. Но тут сразу несколько плохих новостей
1) решение такой задачи достаточно трудоемко в вычислительном плане, хотя сейчас это уже не так критично. Но о real-time видео на PC можно пока не думать
2) Выбор регуляризующей поправки — чисто эмпирика. Варианты — тихоновская регуляризация, винеровская, как частный её случай, всякие нелинейные типа hard/soft threshold, они же комбинированные с wavelet обработкой.
3) Превосходные результаты восстановления, демонстрируемые во многих научных статьях — сплошной обман и надувательство. Такой результат достишается только при моделировании на PC в математической модели, в которой не учитываются реальные искажения (нелинейность, шумы, эффекты квантования). Ни о каком улучшении качества на порядок при обработке реальных данных говорить не приходится, поверьте моему 7-ми летнему опыту.
Теперь чем Ваш конкретный случай (изображение на PC) особенно плох:
1) Чудовищные искажение — 8бит квантование, насыщение, нелинейность, геометрические искажения (разные в центре и по краям), и прочее.
2) Motion blur, насколько я понимаю, один из наиболее неудачных случаев для восстановления. Аппаратная функция (PSF) имеет вид прямоугольника, это значит, что в спектральной области это функция Sinc, обладающая бесконечным количеством нулей. А значит очень много информации безвозвратно утеряно.
Из литературы советую упомянутую книгу Тихонова и Numerical Reciepes in C — валяется в интернете в PDF. Это основы, далее можно уже искать статьи в интернете по регуляризации и решениях в конкретных случаях.
YV>
YV>Слева-направо по столбцам: исходное изображение, инверсная фильтрация, Винеровская филттрация, фильтрация по Тихонову.
YV>Верхняя строка — сильный аддитивный шум. YV>Средняя строка — средний аддитивный шум. YV>Нижняя строка — слабый аддитивный шум.
YV>Если нужно, могу привести формулы этих фильтров.
Это не вся правда. Вся правда будет в том, что "исходное изображение" вычислено математически, аппаратная функция абсолютно точно известна и использованна для решения обратной задачи, в нее не вносилось никаких искажений. Шум — гауссовский, то что названо "сильным" шумом, наверно максимум где-то -30 бБ. эффекты квантования не учитывались. Нелинейность фотоэлементов неучитывалась. Физичесике неточечные размеры элементарных фотоэлементов не учитывались. Плюс в фотографии есть такой момент, что разные участки засвечиваются в разные моменты времени, классический пример пробегал здесь несколько месяцев назад — фотография лопастей вертолета. Короче в реальном мире качество восстановленного изображения вряд ли дотянет даже до 3го в первой строке.
А картинки подобные приведенным у Тихонова били лет 30-40 назад, но что-то я до сих пор не вижу чтоб в каждый (да хоть бы в один!) цифровой фотоаппарат был встроен соответствующий алгоритм. С чего бы это?
Здравствуйте, LelicDsp, Вы писали:
LD>Это не вся правда. Вся правда будет в том, что "исходное изображение" вычислено математически, аппаратная функция абсолютно точно известна и использованна для решения обратной задачи, в нее не вносилось никаких искажений. Шум — гауссовский, то что названо "сильным" шумом, наверно максимум где-то -30 бБ. эффекты квантования не учитывались. Нелинейность фотоэлементов неучитывалась. Физичесике неточечные размеры элементарных фотоэлементов не учитывались. Плюс в фотографии есть такой момент, что разные участки засвечиваются в разные моменты времени, классический пример пробегал здесь несколько месяцев назад — фотография лопастей вертолета. Короче в реальном мире качество восстановленного изображения вряд ли дотянет даже до 3го в первой строке.
LD>А картинки подобные приведенным у Тихонова били лет 30-40 назад, но что-то я до сих пор не вижу чтоб в каждый (да хоть бы в один!) цифровой фотоаппарат был встроен соответствующий алгоритм. С чего бы это?
Угу, все верно , но за это время ужу разработали болл екачественные методы. Я бы советовал как уже говорили поискать "blind deconvolution" особенно применительно к астрономии.
M>Угу, все верно , но за это время ужу разработали болл екачественные методы. Я бы советовал как уже говорили поискать "blind deconvolution"
Да мне особо не надо, наискался в свое время У меня наверное за последние лет 30 все статьи, которые можно найти в интернете есть (Начиная с Lucy).
> особенно применительно к астрономии.
Хотите поговорить об астрономии?
Так вот — это очень специальная область.
1)Там достаточно много точечных объектов и равномерного бэкграунда. Из-за этого задачу решить легче, в том числе и blind методы там работают. Да что там blind, там даже такой примитивный алгоритм как CLEAN работает!
2) Качество информации там несравнимо с consumer electronics. Это касается и нелинейности и уровня шума, и прочих искажений.
Вобщем тема очень интересная, но при наличии качественного оборудования.
Здравствуйте, Рома Мик, Вы писали:
РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
Люди прикинте на палцах:
Разблюриваете картинку очень сильно до получания изображения одного среднего цвета. Все, вся информация об изображении утеряна, попробуй восстановить всю картинку по одному значению.
Вывод — информация теряется при применении фильтра размытия, причем сколько, зависит от фильтра и силы.
Все остальные случаи промежуточные между исходным изображением изображениеми этим.
[skiped]
LD>Так вот — это очень специальная область. LD>1)Там достаточно много точечных объектов и равномерного бэкграунда. Из-за этого задачу решить легче, в том числе и blind методы там работают. Да что там blind, там даже такой примитивный алгоритм как CLEAN работает! LD>2) Качество информации там несравнимо с consumer electronics. Это касается и нелинейности и уровня шума, и прочих искажений.
LD>Вобщем тема очень интересная, но при наличии качественного оборудования.
Соверщенно согласен , имел ввиду что качественные мат методы обычно первыми у астрономов появляються. Кстати покопаюсь , есть пару свежих ссылок , кину , если не вам то комунить будет интерессно .