Опубликован: 02.09.2013 | Доступ: свободный | Студентов: 429 / 54 | Длительность: 19:27:00

Лекция 4: Отслеживание движения и алгоритмы сопровождения ключевых точек

1.3. Полный перебор допустимых вариантов смещения изображений или их фрагментов. Возможные способы ускорения перебора

Еще один простейший способ оценить движение на нескольких изображениях – перебрать все возможные варианты смещений изображений или их отдельных фрагментов (translational alignment, [5, гл. 8.1]). Для этого первоначально необходимо выбрать метрику для оценки степени сходства фрагментов. Как следствие, исходная задача определения движения может быть сведена к минимизации функции ошибки по всем возможным направлениям смещения (рис.4.2).

Пример перебора вариантов по четырем принципиальным  направлениям

Рис. 4.2. Пример перебора вариантов по четырем принципиальным направлениям

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

  1. 1. Квадратичная функция ошибки (4.19).
    E(u,v)=\sum_i {(I_k(x_i+u,y_i+v)-I_{k-1}(x_i,y_i))^2}, ( 4.19)
    где (u,v) – вектор смещения изображения или фрагмента.
  2. 2. Грубые оценочные функции ошибки. Общий вид функций данной группы определяется формулой (4.20). При этом \rho (e) – функция, которая имеет меньшую степень роста по сравнению квадратичной функцией.
    E(u,v)=\sum_i {\rho (I_k(x_i+u,y_i+v)-I_{k-1}(x_i,y_i))}, ( 4.20)
    Примером грубой функции ошибки может служить сумма абсолютных разностей (4.21).
    E(u,v)=\sum_i {\lvvert I_k(x_i+u,y_i+v)-I_{k-1}(x_i,y_i) \rvert}, ( 4.21)
  3. 3. Взвешенная квадратичная функция ошибки (4.22). Весовые коэффициенты – дискретные функции, которые принимают нулевые значения за пределами изображения.
    E(u,v)=\sum_i {\omega_{k-1} (x_i,y_i)\omega_k(x_i+u,y_i+v) \cdot (I_k(x_i+u,y_i+v)-I_{k-1}(x_i,y_i))^2}, ( 4.22)
  4. 4. Кросс-корреляция пары выровненных изображений (4.23). Заметим, что при выборе кросс-корреляции в качестве функции ошибки выполняется не минимизация, а максимизация по всем возможным направлениям смещения.
    E(u,v)=\sum_i {I_{k-1} (x_i,y_i) \cdot  I_k(x_i+u,y_i+v) ( 4.23)

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

На практике полный перебор работает достаточно медленно, поэтому часто применяется иерархическая схема. Конструируется пара пирамид для последовательно идущих изображений посредством масштабирования исходных изображений. Последующий поиск выполняется от мелких изображений к более крупным, в результате чего постепенно отсекаются направления смещения, в которых заведомо не происходит движение. Если на некотором уровне обнаружился вектор смещения для определенного фрагмента, то на следующем – этот вектор используется для предсказания расположения соответствующего фрагмента. Иерархическая схема не всегда позволяет получить качественный результат, т.к. часто невозможно увеличить/уменьшить изображение до определенных размеров и при этом не размыть необходимые признаки для поиска областей движения.

Еще один способ ускорения вычисления при реализации переборной схемы – использование подхода, основанного на вычислении быстрого преобразования Фурье (БПФ) [30]. Метод опирается на тот факт, что модули образов Фурье исходного и смещенного сигналов связаны уравнением (4.24).

F(I_k(x_j+u,y_j+v))=F(I_k(x_i,y_i))e^{-i(\begin{bmatrix}
u \\
v
\end{bmatrix},\overline{\omega})}=I_k(\overline{\omega})e^{-i(\begin{bmatrix}
u \\
v
\end{bmatrix},\overline{\omega})}, ( 4.24)

где \overline{\omega}=\begin{bmatrix}
\omega_x \\
\omega_y
\end{bmatrix} – вектор частот двумерного БПФ, I_k(\overline{\omega})=F(I_k(x_i,y_i)) – образ Фурье сигнала I_k(x_i,y_i). Допустим, что в качестве функции ошибки выбрана кросс-корреляция, вычислим БПФ от этой функции (4.25). В результате получаем преобразование Фурье от свертки функций. Исходя из свойств преобразования, образ Фурье от полученной свертки функций – произведение образа I_{k-1}(\overline{\omega}) первой функции на комплексно- сопряженный образ I^*_k(\overline{\omega}) второй функции.

F(E(u,v))=F \Biggl( \sum_i {I_{k-1} (x_i,y_i) \cdot  I_k(x_i+u,y_i+v) \Biggr) = F(I_{k-1}(u,v)+I_k(u,v))=I_{k-1}(\overline{\omega})I^*_k(\overline{\omega}) ( 4.25)

Отсюда эффективность оценивания кросс-корреляции с использованием преобразования Фурье очевидна. Достаточно вычислить образы Фурье для исходной пары изображений с помощью БПФ (сложность составляет O(NM\,log\, NM)) для изображения размера N \times M , перемножить полученные образы (за время, не превышающее O(N^2M^2))) , затем вычислить обратное преобразование Фурье. В результате получится матрица значений кросс-корреляционной функции, из которой необходимо выбрать максимальное значение. Приведенный пример не является единственным примером ускорения вычислений функции ошибки с помощью БПФ [5].

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

E(u+\Delta u,v+\Delta v)=\sum_i {(I_k(x_i+u+\Delta u,y_i+v+\Delta v)-I_{k-1} (x_i,y_i))^2} \approx ( 4.26)
\approx \sum_i {\Biggl( I_k(x_i+u,y_i+v)+\nabla I_k(x_i+u,y_i+v)}\begin{bmatrix}
\Delta u \\
\Delta v
\end{bmatrix}-I_{k-1} (x_i,y_i) \Biggr) ^2== \sum_i {(\nabla I_k(x_i+u,y_i+v)\begin{bmatrix}
\Delta u \\
\Delta v
\end{bmatrix}+e_i)^2}=
\sum_i {(J_k(x_i+u,y_i+v)\begin{bmatrix}
\Delta u \\
\Delta v
\end{bmatrix}+e_i)^2} \rightarrow min_{(u,v)}, ( 4.27)
e_i=I_k(x_i+u,y_i+v)-I_{k-1}(x_i,y_i),J_k(x_i+u,y_i+v)=\nabla I_k(x_i+u,y_i+v)=[\frac {\deltaI_k} {\delta x},\frac {\deltaI_k} {\delta y}]\rvert_{(x_i+u,y_i+v)}

Полученная задача минимизации (4.27) сводится к решению системы линейных алгебраических уравнений вида (4.28). Доказательство данного факта можно найти в [31].

A\begin{bmatrix}
\Delta u \\
\Delta v
\end{bmatrix}=b ( 4.28)

где A=\sum_i {J^T_k(x_i+u,y_i+v)J_k(x_i+u,y_i+v)},b=-\sum_i {e_iJ^T_k(x_i+u,y_i+v)}. .

Эффективность решения задачи достигается за счет того, что для текущего изображения градиенты J_k(x_i+u,y_i+v) в смещенной точке можно приближенно заменить градиентами предыдущего изображения J_{k-1}(x_i,y_i) в исходной точке, т.е. J_k(x_i+u,y_i+v)\approx J_{k-1}(x_i,y_i).

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

Андрей Терёхин
Андрей Терёхин

Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции?

Демянчик Иван
Демянчик Иван

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

" Искомый объект можно описать с помощью фильтра F= \lbrace f_{x',y'},x' \in \lbrace0, ...,w_f \rbrace , y' \in \lbrace 0,...,h_f \rbrace \rbrace "