анти-motion blur
От: Рома Мик Россия http://romamik.com
Дата: 02.05.06 13:12
Оценка:
Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.
Re: анти-motion blur
От: michus Россия  
Дата: 02.05.06 16:47
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.


Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: анти-motion blur
От: vvotan Россия  
Дата: 02.05.06 17:17
Оценка: +1
Здравствуйте, Рома Мик, Вы писали:

РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.

google "восстановление изображений" или "image restoration"(последнее более продуктивно)
Если то, как "дрогнула рука" неизвестно — копать в сторону "blind image restoration" или "blind deconvolution"

Также на присторах инета можно найти неплохую книжку:

И.С.Грузман, В.С. Киричук, В.П. Косых,
Г.И. Перетягин, А.А.Спектор
ЦИФРОВАЯ ОБРАБОТКА ИЗОБРАЖЕНИЙ В ИНФОРМАЦИОННЫХ СИСТЕМАХ
УЧЕБНОЕ ПОСОБИЕ
для студентов V курса РЭФ
(специальности “Радиотехника” и
“Средства связи с подвижными объектами”)

Для общего знакомства с темой — самое то.

Далее стоит посмотреть книги на www.dsp-book.narod.ru
В особенности — Э. Прэтт "Цифровая обработка изображений" — фундаментальнейший труд по побработке изображений.

А вообще, в теории, все довольно просто: заблуренное изображение есть свертка идеального изображения с неким фильтром, дающим искажение. Соответственно, нужно "развернуть" свертку(по-английски это называется deconvolution) и найти "идеальное" изображение. Если передаточная функция фильтра известна, то это (в теории) можно сделать точно. На практике, правда, все гораздо сложнее..
--
Sergey Chadov

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: анти-motion blur
От: Dimonka Верблюд  
Дата: 02.05.06 19:04
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.


Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.
Re[2]: анти-motion blur
От: piAnd Россия  
Дата: 02.05.06 20:00
Оценка: +1
Здравствуйте, michus, Вы писали:

M>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.

Это не сработает. Обратного процесса не вывести, имея только смазанное изображение.
Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...
Re[3]: анти-motion blur
От: Reunion  
Дата: 03.05.06 03:19
Оценка:
Здравствуйте, piAnd, Вы писали:

A>Здравствуйте, michus, Вы писали:


M>>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.

A>Это не сработает. Обратного процесса не вывести, имея только смазанное изображение.
A>Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...

В какой-то книге по обработке сигналов года полтора назад видел как к размытому (motion blur) изображению применяется некий фильтр после чего получается практически идиальная картинка...
Re[2]: анти-motion blur
От: Рома Мик Россия http://romamik.com
Дата: 03.05.06 06:03
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.

Это другая проблема, в моем случае решаемая, поскольку меня вполне устроит сделать часть работы вручную.
Re[4]: анти-motion blur
От: piAnd Россия  
Дата: 03.05.06 08:51
Оценка:
Здравствуйте, Reunion, Вы писали:

R>В какой-то книге по обработке сигналов года полтора назад видел как к размытому (motion blur) изображению применяется некий фильтр после чего получается практически идиальная картинка...

линейный фильтр только деблюр может при свертке, я просто имел ввиду остальные методы, которые на эмпирике основаны, т.е. дают погрешности, причем такие, что визуально "хрен редьки не слаще".
Re: анти-motion blur
От: Рома Мик Россия http://romamik.com
Дата: 03.05.06 08:56
Оценка:
В общем, на свежую голову всё оказалось довольно просто. Впрочем реалтзовывать буду вечеро на не свежую, так что лучше запишу, что надумалось

Пусть смаз горизонтальный длиной 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.

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

Далее пользователь может применить программу несколько раз, например отдельно для фона, отдельно для перднего плана и ручками совместить реультат в фотошопе.

Осталось запрограммировать и посмотреть, что получится
Re[2]: анти-motion blur
От: Reunion  
Дата: 04.05.06 04:24
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>В общем, на свежую голову всё оказалось довольно просто. Впрочем реалтзовывать буду вечеро на не свежую, так что лучше запишу, что надумалось


РМ>Пусть смаз горизонтальный длиной 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.


РМ>Преполагаю не мудрствуя лукаво использовать уже написанные функции поворота изображения и сделать именно по этой формуле. От пользователя понадобится указать только направление и длину смаза, ну и если будут проблемы, то и точки, где цвета правильные.


РМ>Далее пользователь может применить программу несколько раз, например отдельно для фона, отдельно для перднего плана и ручками совместить реультат в фотошопе.


РМ>Осталось запрограммировать и посмотреть, что получится


Получилось? Просто мне тоже надо решить такую же проблему.
Re[3]: анти-motion blur
От: Рома Мик Россия http://romamik.com
Дата: 04.05.06 07:30
Оценка:
Здравствуйте, Reunion, Вы писали:

R>Получилось? Просто мне тоже надо решить такую же проблему.

Пока нет, просто не успеваю заняться...

ЗЫ Оверквотинг — это зло.
Re[3]: анти-motion blur
От: Рома Мик Россия http://romamik.com
Дата: 04.05.06 17:55
Оценка:
Здравствуйте, Reunion, Вы писали:

R>Получилось? Просто мне тоже надо решить такую же проблему.

Не-а. Надо еще что-то думать. Проблема в том, что надо очень точно определитбь величину смаза и найти опорные точки сложно...
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re: анти-motion blur
От: Megabyte Россия  
Дата: 05.05.06 15:23
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.


обратная фильтрация, деконволюция. обсуждалось в форуме ixbt. основная идея у меня была такая, что по изображению точечного источника ворсстановить траекторию и собрать вдоль нее сигнал обратно в точку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: анти-motion blur
От: Megabyte Россия  
Дата: 05.05.06 15:23
Оценка:
Здравствуйте, piAnd, Вы писали:

A>Здравствуйте, michus, Вы писали:


M>>Смоделируй прямой процесс: из нормального в — смазанное. Там и об обратном додумаешься.

A>Это не сработает. Обратного процесса не вывести, имея только смазанное изображение.
A>Тут работает не просто фильтр, а неизвестное наложение друг на друга сдвинутых одинаковых кадров, слегка афинно преобразованных. Вобщем теоретически задача не решаема. Хотя слышал, что если иметь исходное несмазанное изображение, или его статистические характеристики, то можно отсечь "более слабые его примеси", т.е. блюр смоется. Ссылки на статью забыл...

не выносите приговор слишком быстро. такие вещи, как статистическая деконволюция, и ее повсеместное применение в обработке сигналов — очень мощная вещь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: анти-motion blur
От: Megabyte Россия  
Дата: 05.05.06 15:23
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здравствуйте, Рома Мик, Вы писали:


РМ>>Вот такая задачка иинтересная возникла. Есть изображение, смазанное из-за того, что у фотографа рука дрогнула. Нужно по возможности (очевидно, что всей информации в картинке уже нет) найти изображение, которое бы получилось, если бы рука не дрогнула. Для начала можно считать, что известно в какую сторону и насколько пикселов дрогнула рука, кроме того можно считать что дергалась она прямолинейно. Что-то ничего в голову не идёт, хотя чувствую, что как-то улучшить изображение все же можно.


D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.


это в случае нефокуса. а в случае дрожания рук имеем почти параллельный перенос
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: анти-motion blur
От: Reunion  
Дата: 06.05.06 03:40
Оценка:
Здравствуйте, Megabyte, Вы писали:

M>обратная фильтрация, деконволюция. обсуждалось в форуме ixbt. основная идея у меня была такая, что по изображению точечного источника ворсстановить траекторию и собрать вдоль нее сигнал обратно в точку.


Идея-то понятна. А можно конкретики, формул например.
Re[2]: анти-motion blur
От: Y-Vladimir США http://yuzhikov.com
Дата: 06.05.06 07:05
Оценка:
D>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.

Если "дрогула рука", то смаз примерно одинаковый по площади кадра.
Я где-то с месяц назад занимался этой же проблемой. Для идеальных изображений неплохие результаты дает винеровская фильтрация и фильтрация по Тихонову. Т.е. если взять изображение и в фотошопе его смазать или расфикусировать, то данными фильтрами можно полностью восстановить исходное изображение (кроме краев). В реальности качество восстановления ограничивает шумы и неоднородность искажающей функции по полю изображения.

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

P.S. Есть куча специальных программ и плагинов к фотошопу, которые заточены именно под восстановление смазанных и расфокусированных изображений. Они используют фильтры, подобные вышеназванным.
Re[3]: анти-motion blur
От: Reunion  
Дата: 06.05.06 07:22
Оценка:
Здравствуйте, Y-Vladimir, Вы писали:

D>>Проблема в том, что заблюренность получается не везде одинаковая и зависит от расстояния до объекта.


YV>Если "дрогула рука", то смаз примерно одинаковый по площади кадра.

YV>Я где-то с месяц назад занимался этой же проблемой. Для идеальных изображений неплохие результаты дает винеровская фильтрация и фильтрация по Тихонову. Т.е. если взять изображение и в фотошопе его смазать или расфикусировать, то данными фильтрами можно полностью восстановить исходное изображение (кроме краев). В реальности качество восстановления ограничивает шумы и неоднородность искажающей функции по полю изображения.

А где-нибудь можно почитать/посмотреть исходники этого дела?

YV>Резюме — для некоторых случаев реальных изображений вполне можно улучшить качество.


YV>P.S. Есть куча специальных программ и плагинов к фотошопу, которые заточены именно под восстановление смазанных и расфокусированных изображений. Они используют фильтры, подобные вышеназванным.
Re[3]: анти-motion blur
От: Y-Vladimir США http://yuzhikov.com
Дата: 06.05.06 07:22
Оценка: 15 (3)
A>Вобщем теоретически задача не решаема.
Решаема. Вот как это выглядит практически:


Слева-направо по столбцам: исходное изображение, инверсная фильтрация, Винеровская филттрация, фильтрация по Тихонову.

Верхняя строка — сильный аддитивный шум.
Средняя строка — средний аддитивный шум.
Нижняя строка — слабый аддитивный шум.

Если нужно, могу привести формулы этих фильтров.
Re[4]: анти-motion blur
От: Аноним  
Дата: 06.05.06 11:21
Оценка:
Здравствуйте, Y-Vladimir, Вы писали:

YV>Если нужно, могу привести формулы этих фильтров.

Да было б любопытно!

PS: от этого задача в общем виде не становится решаемой. Частный случай да, а общий — нет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.