Fast and Accurate Motion Estimation using Orientation Tensors and Parametric Motion Models
[cite]10.1.1.27.6390[/cite]
1 Introduction
이미지에서의 움직임 추정은 속도와 정확도 간의 트레이드 오프가 있습니다. 여기 정확도를 추구하면서도 최대한 속도를 빠르게 하고자 시도한 논문을 소개합니다.
이미지 시퀀스에서 가장 먼저 생각해볼 수 있는 것은 spatiotemporal filtering입니다. 이것은 3D 방향 텐서(orientation tensor)로 형태로 나타나게 됩니다. 이 텐더 필드는 또한 넓은 영역에 걸친 파라미터로 결정되는 모션 모델을 추정하는데 딱 적당합니다. 여기서는 모션 모델의 변화를 어파인 모델로 정의한 뒤 이를 이용하여 각 지점의 속도를 추정하고자 합니다. 하지만 꼭 어파인 모델을 사용할 필요는 없는데, 정적 모델(constant model)을 이용하면 정확도는 약간 낮아지면 더 빠른 속도를 보여줍니다.
2 Orientation tensors
이미지 시퀀스를 쌓아서 만든 spatiotemporal 이미지 볼륨은 2개의 공간 차원과 1개의 시간 차원을 가집니다. 이미지의 어떤 구조가 이동하는 것을 볼륨 내에서의 방향으로 상상하는 것은 어려운 일이 아닙니다. 이와 관련하여 특정 지역의 방향을 표현하는 방법 중에는 방향 텐서가 있습니다. 3차원에서의 이 텐서는 3 * 3 대칭 행렬을 가지며 이는 positive semidefinite 행렬 T로 표현됩니다. 또한 이는 한 벡터 $\hat{u}$가 주어졌을 때, $\hat{u}^T T \hat{u} $ 를 계산함으로서 이 벡터 방향으로 얼마나 변하는지 측정을 할 수가 있습니다.
3D 방향 텐서를 추정하기 위해서 우리는 Farneback의 방법을 사용하였습니다. 이 모델은 이미지 위의 신호를 다음의 2차 다항식으로 표현하였습니다.
$$f(x) \sim x^T A x + b^x + c$$
여기서 $A, b, c$는 파라미터로 weighted least square 방법으로 계산됩니다. 가중치로는 보통 가우시안을 사용합니다. 이 방법은 보통 분리된 컨볼루션의 계층적인 방법으로 효율적으로 계산할 수 있습니다. 모델 파라미터가 구해지면 방향 텐서는 다음과 같이 구할 수 있습니다.
$$T = AA^T + \gamma bb^T$$
여기서 $\gamma$는 음수가 아닌 가중치로 신호의 특이 성분을 나타내며, 보통 앞서 사용한 가우시안의 표준편차를 사용합니다.
2D 속도 벡터 $(v_x, v_y)^T $는 픽셀마다 측정됩니다. 이것을 3D spatiotemporal으로 확장하여, 시간 축에 대한 변화 1로 고정한 뒤, 다음과 같이 나타낼 수 있습니다.
$$v = \begin{bmatrix} v_x \\ v_y \\ 1\end{bmatrix}, \hat{v} = \frac{v}{||v||}$$
정확한 이동과 노이즈가 없다고 가정하면 $\hat{v}$ 방향으로는 변화가 없어야 하기에 $\hat{v}^T T \hat{v} = 0 $이어야 하며, 속도는 T의 고유값이 0인 고유벡터를 구하면 됩니다.
하지만 이상적인 경우가 아니므로, 위 식은 0이 아니게 되기 때문에 이를 가능한 최소로 하는 값을 찾고자 합니다. 이 최소값은 가장 작은 고유값 $\lambda_3 $에 의해 결정됩니다.
3 Estimating a parameterized velocity field
각 점을 모두 조사해가면서 텐서로부터 속도를 계산하는 것 보다는 일정한 지역의 속도 필드를 계산하는 것이 낫다고 생각하였습니다. 이 영역 내에서는 일정한 모델을 따른다고 가정하였으며, 이는 결국 영역 내에서의 모델의 같은 파라미터를 사용하고 있다고 생각할 수 있습니다.
이를 어파인 모델로 나타내면 다음과 같습니다.
$$v_x(x,y) = ax + by + c \\ v_y(x,y) = dy + ey + f$$
x, y는 이미지 좌표입니다. 이를 spatiotemporal vector로 나타내면 다음과 같습니다.
$$v=Sp \\$$
$$S = \begin{bmatrix} x &\ y &\ 1 &\ 0 &\ 0 &\ 0 &\ 0 \\
0 &\ 0 &\ 0 &\ x &\ y &\ 1 &\ 0 \\
0 &\ 0 &\ 0 &\ 0 &\ 0 &\ 0 &\ 1 \end{bmatrix}$$
$$p = (a, b, c, d, e, f, 1)^T$$
모션 모델의 $p$를 추정하기 위하여 비용 함수를 설정합니다.
$$d(v, T) = v^T T v \\
d_{\text{tot}} = \sum_i d(v_i, T_i )$$
이는 영역 내의 모든 점에 대하여 합을 구한 것입니다. 어파인 모델을 적용하면 이는 다음과 같이 변형할 수 있습니다.
$$d(v, T) = v^T T v = p^T s^T T S p = p^T Q p,\ Q = S^T T S$$
Q는 positive semidifinite quadratic 형식입니다. $d_{\text{tot}}$를 풀어내면 다음과 같습니다.
$$d_{\text{tot}}(p) = \sum_i d(v_i, T_i) = \sum_i p^T S^T_i T_i S_i p = p^T (\sum_i Q_i) p = p^T Q_{\text{tot}} p$$
p의 마지막 요소는 1이기 때문에 이를 다음과 같이 분리하여 표현하여 봅시다.
$$p = \begin{bmatrix} \bar{p} \\ 1 \end{bmatrix}, Q_{\text{tot}} = \begin{bmatrix} \bar{Q} &\ q \\ q^T &\ \alpha \end{bmatrix}$$
따라서 처음의 식은 다음과 같습니다.
$$d_{\text{tot}} = \bar{p}^T \bar{Q} \bar{p} + \bar{p}^T \bar{q} + q^T \bar{p} + \alpha$$
이는 곧, $\bar{p} = - \bar{Q}^{-1}q $에 의해 최소화 되며, 그 값은 $\alpha - q^T \bar{Q}^{-1}q $입니다.
이것으로 움직임을 추정하기 위해서는 모션 모델이 파라미터에 대해 선형이어야 한다는 가정을 따라야 합니다.
이렇게 영역을 이용하는 방법에는 두가지 장점이 있는데, 노이즈나 일부 부정확한 텐서에 대하여 강인하다는 점, aperture 문제에서도 일부 영역을 채워주는 효과가 있다는 점이 그것입니다. 하지만 모든 영역이 같은 방향으로 움직임을 갖는다면 여전히 움직임은 계산이 불가능합니다.
이 방법의 단점은 영역 내의 속도 필드는 특정 모델을 따른다고 가정한 것입니다.
4 A fast velocity estimation algorithm
앞에서처럼 서로 연관된 영역을 계산하는 대신, 지점간의 모션 모델의 차이를 가중치를 반영하여 최소화하는 방법을 사용하였습니다.
$$d_{\text{tot}}(p) = \sum_i w_i d(v_i, T_i) = p^T ( \sum_i w_i Q_i ) p = p^T Q_{\text{tot}} p$$
이 식은 가중치 $w_i$를 가우시안으로 하여 현재 지점 주변을 모두 더한 값입니다. 이는 quadratic 형식의 $Q_i$를 이미지에 대해 컨볼루션하는 작업으로, separable 컨볼루션을 통해 효과적으로 계산할 수 있습니다.
속도의 최적 값은 앞에서와 마찬가지로 계산할 수 있으며, 그에대한 최소 결과 값은일종의 신뢰도로 간주할 수 있습니다.
실험에서 알고리즘은 Matlab으로 이루어졌으며, 컨볼루션 작업은 C mex로 작성되었습니다. 어파인 모션에 대해서는 간단한게 정적 움직임 모델을 ($S = I, Q = T$) 사용하였습니다. 이는 360 MHz SUN Ultra 60에서 252 * 316 Yosemite 시퀀서으세서 실험하였습니다. 필터 사이즈는 11 * 11 * 11, 평균화 커널은 41 * 41을 사용하였습니다. 평균 계산 시간은 은 8.6초로 그 중 4.8초가 속도 측정에 사용되었습니다. 정적 모델을 사용하면 1.2초 중 0.2초가 속도 측정에 사용되도록 시간이 줄었습니다.