Алгоритмы повышения качества смазанных изображений

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Немного истории)
Строка 1: Строка 1:
-
#REDIRECT [[Методы деконволюции изображений]]
+
Одной из важных задач обработки изображений является задача восстановления
 +
смазанных снимков. В данной студенческой работе ведется попытка реализовать
 +
осветить современные подходы к решению этой проблемы и постараться
 +
реализовать и улучшить один из лучших известных алгоритмов.
 +
 
 +
== Проблема смазанных изображений ==
 +
 
 +
Причинами смазанности могут выступать различные факторы:
 +
 
 +
1) Движение камеры в процессе съемки изображения;
 +
 
 +
2) Cъемка на длинной выдержке, когдасцена сама претерпевает изменения;
 +
 
 +
3) Расфокусированность оптики;
 +
 
 +
4) Использование широкоугольных объективов;
 +
 
 +
5) Атмосферная турбулентность;
 +
 
 +
6) Съемка на короткой выдержка, что не позволяет захватить достаточно фотонов;
 +
 
 +
7) Рассеянние света в конфокальной микроскопии;
 +
 
 +
 
 +
== История ==
 +
Теория восстановления размытых изображений сперва рассматривала лишь
 +
размытие изображений при известном ядре. Такую задача достаточно успешно решают
 +
применением [[Фильтр Винера|фильтра Винера]], а также [[Алгоритм Ричардсона-Люси|алгоритма Ричардсона-Люси]]. Это
 +
два классических метода, которые до сих пор широко применяются вследствие их
 +
простоты и эффективности.
 +
 
 +
На практике параметры размытия (ядро) неизвестны, поэтому часто их выбирают
 +
из эмпирических соображений, иногда просто подбирая одно из стандартных.
 +
 
 +
Достаточно давно ведутся попытки создания универсального метода оценки неизвестного ядра.
 +
Одним из лучших с точки зрения качества алгоритмом такого рода является
 +
современный метод, описанный ниже. Он представляет собой двухшаговый итерационный процесс,
 +
первый шаг которого для некоторого приближения ядра восстанавливает картинку, а второй
 +
производит уточнение этого ядра по полученному
 +
на пером шаге снимку.
 +
 
 +
== Общепринятая модель размытия - свертка ==
 +
 
 +
 
 +
<tex>
 +
\mathbf{I} = \mathbf{L} \otimes \mathbf{f} + \mathbf{n};
 +
</tex>
 +
 
 +
== Решение в виде максимизации правдоподобия ==
 +
<tex>
 +
p(\mathbf{L}, \mathbf{f} | \mathbf{I}) \propto p(\mathbf{I}|\mathbf{L}, \mathbf{f})
 +
p(\mathbf{L})p(\mathbf{f});
 +
</tex>
 +
 
 +
<tex>
 +
p(\mathbf{I}|\mathbf{L}, \mathbf{f}) =
 +
\prod\limits_{\partial^{*} \in \Theta}
 +
\prod_i
 +
\mathcal{N}(\partial^{*} n_i| 0, \zeta_{\kappa(\partial^{*})}) =
 +
\prod\limits_{\partial^{*} \in \Theta} \prod_i
 +
\mathcal{N}(\partial^{*} I_i| \partial^{*} I_i^{c}, \zeta_{\kappa(\partial^{*})});
 +
</tex>
 +
 
 +
<tex>\Theta</tex> — множество производных (<tex>\Theta = (\partial^{0}, \partial_{x},
 +
\partial_{y}, \partial_{xx}, \partial_{xy}, \partial_{yy})</tex>),
 +
<tex>I_i^{c}</tex> — i-й пиксель изображения <tex>\mathbf{I^{c}} = \mathbf{L} \otimes \mathbf{f}</tex>.
 +
 
 +
Ищем разреженное ядро:
 +
 
 +
<tex>
 +
p(\mathbf{f}) = \prod_j e^{-\tau f_j};
 +
</tex>
 +
 
 +
Здесь <tex>\tau</tex> - параметр скорости [движения камеры].
 +
 
 +
Разложим правдоподобие в произведение локальной и глобальной компонент:
 +
 
 +
<tex>
 +
p(\mathbf{L}) = p_g(\mathbf{L})p_l(\mathbf{L});
 +
</tex>
 +
 
 +
 
 +
<tex>
 +
p_l(\mathbf{L}) = \prod_{i \in \Omega} \mathcal{N} (
 +
\partial_x L_i - \partial_x I_i|0, \sigma_1)
 +
\mathcal{N} (\partial_y L_i - \partial_y I_i|0, \sigma_1);
 +
</tex>
 +
 
 +
Здесь за <tex>\Omega</tex> обозначены точки
 +
изображения с локальной дисперсией менее некоторой константы.
 +
 
 +
<tex>
 +
E(\mathbf{L}, \mathbf{f}) = -\log p(\mathbf{L}, \mathbf{f}|\mathbf{I});
 +
</tex>
 +
 
 +
<tex>
 +
E(\mathbf{L}, \mathbf{f}) \propto \biggl( \sum\limits_{\partial^{*} \in \Omega}
 +
w_{\kappa(\partial^{*})} \|\partial^{*}\mathbf{L} \otimes \mathbf{f} -
 +
\partial^{*}\mathbf{I} \|_2^2\biggr) +
 +
\lambda_1 \| \Phi (\partial_x \mathbf{L}) + \Phi (\partial_y \mathbf{L})\|_1 + \\
 +
+ \lambda_2 \Bigl( \| \partial_x \mathbf{L} - \partial_x \mathbf{I}\|_2^2
 +
\circ \mathbf{M} + \| \partial_y \mathbf{L} - \partial_y \mathbf{I}\|_2^2 \circ \mathbf{M}
 +
\Bigr)
 +
+ \| \mathbf{f}\|_1;
 +
</tex>
 +
 
 +
 
 +
 
 +
== Алгоритм ==
 +
'''Вход''': <tex>\mathbf{I}</tex> — размытое изображение; <tex>\mathbf{f}</tex> — начальное приближение ядра;
 +
 
 +
'''Выход''': <tex>\mathbf{L}</tex> — искомое четкое изображение; <tex>\mathbf{f}</tex> — исходное ядро размытия;
 +
 
 +
<tex>\mathbf{L}</tex> <= <tex>\mathbf{I}</tex>; // инициализация скрытого изображения наблюдаемым;
 +
 
 +
оптимизация <tex>\mathbf{L}</tex> и <tex>\mathbf{f}</tex>:
 +
 
 +
'''повторять'''
 +
 
 +
оптимизация <tex>\mathbf{L}</tex>:
 +
 
 +
'''повторять'''
 +
 
 +
Обновить <tex>\mathbf{\Psi}</tex>, минимизируя (2);
 +
 
 +
Вычислить <tex>\mathbf{L}</tex> согласно (3);
 +
 
 +
'''пока''' <tex>||\Delta \mathbf{L}||_2 < 1 \prod 10^{-5}</tex> и <tex>||\Delta \mathbf{Psi}||_2 < 1 \prod 10^{-5}</tex>;
 +
 
 +
Обновить <tex>\mathbf{f}</tex>, минимизируя (4);
 +
 
 +
'''пока''' <tex>||\Delta \mathbf{f}||_2 < 1 \prod 10^{-5}</tex> или максимальное число итераций завершено;
 +
 
 +
Тут мы видим два итерационных процесса внутренний, чередование вычисления
 +
<tex>\mathbf{\Psi}</tex> и <tex>\mathbf{L}</tex>, и внешний, вычисление очередного приближения скрытой
 +
картинки <tex>\mathbf{L}</tex>
 +
и на его основе уточнение ядра <tex>\mathbf{f}</tex>.
 +
 
 +
{{Задание|Tikhonov_Andrey|Павел Воронин| 30 апреля 2011}}

Версия 20:53, 16 марта 2011

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

Содержание

Проблема смазанных изображений

Причинами смазанности могут выступать различные факторы:

1) Движение камеры в процессе съемки изображения;

2) Cъемка на длинной выдержке, когдасцена сама претерпевает изменения;

3) Расфокусированность оптики;

4) Использование широкоугольных объективов;

5) Атмосферная турбулентность;

6) Съемка на короткой выдержка, что не позволяет захватить достаточно фотонов;

7) Рассеянние света в конфокальной микроскопии;


История

Теория восстановления размытых изображений сперва рассматривала лишь размытие изображений при известном ядре. Такую задача достаточно успешно решают применением фильтра Винера, а также алгоритма Ричардсона-Люси. Это два классических метода, которые до сих пор широко применяются вследствие их простоты и эффективности.

На практике параметры размытия (ядро) неизвестны, поэтому часто их выбирают из эмпирических соображений, иногда просто подбирая одно из стандартных.

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

Общепринятая модель размытия - свертка


\mathbf{I} = \mathbf{L} \otimes \mathbf{f} + \mathbf{n};

Решение в виде максимизации правдоподобия


p(\mathbf{L}, \mathbf{f} | \mathbf{I}) \propto p(\mathbf{I}|\mathbf{L}, \mathbf{f})
p(\mathbf{L})p(\mathbf{f});


p(\mathbf{I}|\mathbf{L}, \mathbf{f}) =
\prod\limits_{\partial^{*} \in \Theta}
\prod_i
\mathcal{N}(\partial^{*} n_i| 0, \zeta_{\kappa(\partial^{*})}) =
\prod\limits_{\partial^{*} \in \Theta} \prod_i
\mathcal{N}(\partial^{*} I_i| \partial^{*} I_i^{c}, \zeta_{\kappa(\partial^{*})});

\Theta — множество производных (\Theta = (\partial^{0}, \partial_{x},
\partial_{y}, \partial_{xx}, \partial_{xy}, \partial_{yy})), I_i^{c} — i-й пиксель изображения \mathbf{I^{c}} = \mathbf{L} \otimes \mathbf{f}.

Ищем разреженное ядро:


p(\mathbf{f}) = \prod_j e^{-\tau f_j};

Здесь \tau - параметр скорости [движения камеры].

Разложим правдоподобие в произведение локальной и глобальной компонент:


p(\mathbf{L}) = p_g(\mathbf{L})p_l(\mathbf{L});



p_l(\mathbf{L}) = \prod_{i \in \Omega} \mathcal{N} (
\partial_x L_i - \partial_x I_i|0, \sigma_1)
\mathcal{N} (\partial_y L_i - \partial_y I_i|0, \sigma_1);

Здесь за \Omega обозначены точки изображения с локальной дисперсией менее некоторой константы.


E(\mathbf{L}, \mathbf{f}) = -\log p(\mathbf{L}, \mathbf{f}|\mathbf{I});


E(\mathbf{L}, \mathbf{f}) \propto \biggl( \sum\limits_{\partial^{*} \in \Omega}
w_{\kappa(\partial^{*})} \|\partial^{*}\mathbf{L} \otimes \mathbf{f} -
\partial^{*}\mathbf{I} \|_2^2\biggr) +
\lambda_1 \| \Phi (\partial_x \mathbf{L}) + \Phi (\partial_y \mathbf{L})\|_1 + \\
+ \lambda_2 \Bigl( \| \partial_x \mathbf{L} - \partial_x \mathbf{I}\|_2^2
\circ \mathbf{M} + \| \partial_y \mathbf{L} - \partial_y \mathbf{I}\|_2^2 \circ \mathbf{M}
\Bigr)
+ \| \mathbf{f}\|_1;


Алгоритм

Вход: \mathbf{I} — размытое изображение; \mathbf{f} — начальное приближение ядра;

Выход: \mathbf{L} — искомое четкое изображение; \mathbf{f} — исходное ядро размытия;

\mathbf{L} <= \mathbf{I}; // инициализация скрытого изображения наблюдаемым;

оптимизация \mathbf{L} и \mathbf{f}:

повторять

оптимизация \mathbf{L}:

повторять

Обновить \mathbf{\Psi}, минимизируя (2);

Вычислить \mathbf{L} согласно (3);

пока ||\Delta \mathbf{L}||_2 < 1 \prod 10^{-5} и ||\Delta \mathbf{Psi}||_2 < 1 \prod 10^{-5};

Обновить \mathbf{f}, минимизируя (4);

пока ||\Delta \mathbf{f}||_2 < 1 \prod 10^{-5} или максимальное число итераций завершено;

Тут мы видим два итерационных процесса внутренний, чередование вычисления \mathbf{\Psi} и \mathbf{L}, и внешний, вычисление очередного приближения скрытой картинки \mathbf{L} и на его основе уточнение ядра \mathbf{f}.


Данная статья является непроверенным учебным заданием.
Студент: Участник:Tikhonov_Andrey
Преподаватель: Участник:Павел Воронин
Срок: 30 апреля 2011

До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.


Личные инструменты