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

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

1.4. Параметрические модели движения

Многие прикладные задачи, такие, как склеивание изображений в панораму, стабилизация видео, требуют построения более сложных моделей движения, т.к. движение не описывается только линейным сдвигом. Поэтому рассматриваются пространственные поля смещений, и выполняется построение параметрических моделей движения (parametric motion, [5, гл. 8.2]). В параметрических моделях вместо постоянного вектора смещения[u,v]^T рассматривается параметризованное поле смещений x'(x,y;p), где p-вектор параметров. Приведем некоторые примеры параметризованных моделей:

  1. Линейный сдвиг (4.29).
    x'(x,y;p)=\begin{bmatrix}
E & p \\
{0^T} & 1
\end{bmatrix}
\begin{bmatrix}
x \\
y \\
1
\end{bmatrix}, ( 4.29)
    где p=\begin{bmatrix}
{p_1} \\
{p_2}
\end{bmatrix} – вектор сдвига.
  2. Поворот со сдвигом (4.30).
    x'(x,y;p)=\begin{bmatrix}
{cos\,\phi} & {-sin\,\phi} & {p_1} \\
{sin\,\phi} & {cos\,\phi} & {p_2} \\
0 & 0 & 1
\end{bmatrix}\begin{bmatrix}
x \\
y \\
1
\end{bmatrix}, ( 4.30)
    где R=\begin{bmatrix}
{cos\,\phi} & {-sin\,\phi} \\
{sin\,\phi} & {cos\,\phi}
\end{bmatrix} – ортонормированная матрица поворота, т.е. RR^T=1 и det\,R=1 , p=(p_1,p_2,\phi) – набор параметров модели движения.
  3. Преобразование подобия (4.31).
    x'(x,y;p)=\begin{bmatrix}
a & -b & {p_1} \\
b & a & {p_2} \\
0 & 0 & 1
\end{bmatrix}\begin{bmatrix}
x \\
y \\
1
\end{bmatrix}, ( 4.31)
    где sR=\begin{bmatrix}
a & -b \\
b & a
\end{bmatrix} – матрица поворота, умноженная на коэффициент масштабирования s,\,p=(p_1,p_2,a,b) – набор параметров модели движения.
  4. Аффинное преобразование (4.32).
    x'(x,y;p)=\begin{bmatrix}
a_{00} & a_{01} & a_{02} \\
a_{10} & a_{11} & a_{12}
\end{bmatrix}\begin{bmatrix}
x \\
y \\
1
\end{bmatrix} ( 4.32)
  5. Перспективная проекция или гомография (4.33).
    x'(x,y;p)=\begin{bmatrix}
h_{11} & h_{12} & h_{13} \\
h_{21} & h_{22} & h_{23} \\
h_{31} & h_{32} & h_{33}
\end{bmatrix}\begin{bmatrix}
x \\
y \\
1
\end{bmatrix}=H\overline{x} ( 4.33)

Аналогично процедуре уточнения направления, описанной в разделе 1.3, можно выполнить определение направления движения для любой параметрической модели (4.35), расписав квадратичную функцию ошибки (4.34) с помощью разложения в ряд Тейлора по вектору параметров и выполнив ее минимизацию.

E(p+\Delta p)=
\sum_i {(I_k(x'(x_i,y_i;p+\Delta p))-I_{k-1}(x_i,y_i))^2}\Approx ( 4.34)
\sum_i {(I_k(x'_i) +I_k(x'_i)\Delta p-I_{k-1}(x_i,y_i))^2}=
\sum_i {(J_k(x'_i)\Delta p+e_i)^2} \rightarrow min_{\Delta p}, ( 4.35)
e_i=I_k(x'_i)-I_{k-1}(x_i,y_i),J_k(x'_i)=\frac {\delta I_k} {\delta p}=\nabla I_k(x'_i)\frac {\delta x'_i} {\delta p}\rvert_{(x_i,y_i)}.

1.5. Многоуровневое движение

Во многих случаях визуальное движение вызвано смещением небольшого количества объектов, находящихся на разной глубине изображения [5]. Поэтому движение пикселей можно описать более эффективно, если сгруппировать их в слои [14], и отслеживать многоуровневое движение (layered motion, [5, гл. 8.5]) построенных слоев, например, с помощью параметрических моделей [15].

Последовательно рассмотрим основные вопросы, которые возникают в процессе определения многоуровневого движения, и схемы их решения, предложенные в одной из первых работ по данной тематике [15].

1. Как представить слой? Слой определяется набором из трех карт (матриц):

  • матрица интенсивности слоя (в компьютерной графике текстурная карта);
  • \alphaкарта, которая определяет прозрачность слоя в каждом точке изображения;
  • карта скоростей описывает изменение положения точек с течением времени.

Ниже (рис.4.3) показан пример представления кадров в виде набора слоев. Изображения в строке (а) соответствуют фоновому слою, в строке (b) – слою, содержащему объект (рука), в (с) – последовательность изображений, восстановленная на основании выделенных слоев.

Пример представления изображения в виде набора слоев [15]

Рис. 4.3. Пример представления изображения в виде набора слоев [15]

Предположим, что E_0(x,y) – матрица интенсивности фонового слоя, E_1(x,y)– слоя, содержащего объект, \alpha_1(x,y)\alpha-карта слоя E_1(x,y). Поскольку слои перекрываются, то для представленного примера восстановить можно исходное изображение согласно (4.36).

I_1(x,y)=E_0(x,y)(1-\alpha_1(x,y))+E_1(x,y)\alpha_1(x,y) ( 4.36)

Отметим, что данную процедуру можно распространить на случай большего количества слоев (4.37).

I_k(x,y)=I_{k-1}(x,y)(1-\alpha_k(x,y))+E_k(x,y)\alpha_k(x,y) ( 4.37)

2. Как разбить множество пикселей на слои и определить движение каждого слоя? Процедура разбиения на слои состоит из нескольких шагов:

  • Оценивание движения с использованием оптического потока и аффинной модели для набора неперекрывающихся блоков (рис.4.4, а), полученных в результате разбиения исходного изображения. Данная операция выполняется независимо для каждого кадра из подмножества изображений.
  • Кластеризация полученных оценок с помощью метода k-средних (рис.4.4, b). Кластеризация также осуществляется независимо для каждого изображения. Каждый кластер определяет сегмент, отвечающий некоторому слою изображения.
  • Применение медианной фильтрации для получения смешанных слоев, устойчивых к незначительным изменениям интенсивности, а также для выявления перекрытий между слоями (рис.4.4, c).
Пример выделения слоев [14]

Рис. 4.4. Пример выделения слоев [14]

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

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

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

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

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

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