여기서, $psi(a^2) = sqrt{a^2+\epsilon^2}, \epsilon = 0.001$. 이상치를 줄이는 역할을 합니다. (Robust penalizer!)
수식은 the brightness constancy assumption $(\triangledown^{T}_{3})u=0$ (이미지 어떤 지점에서 그 픽셀과 인접 픽셀들이 같은 색이나 밝기를 가진다는 가정) where $\triangledown_3 = (\partial x, \partial y, \partial z)$ is spatial-temporal gradient.
그래디언트 패널티 함수 $E_G$는 다음과 같이 정의됩니다.
$$ EG = u^TJ{xy}u$$
where, $J_{xy} = \beta_x(\triangledown3I{dx})(\triangledown^T{3}I{dx})+\beta_y(\triangledown3I{dy})(\triangledown^T{3}I{dy})$ and $\beta$ is noramlization param.
[논문리뷰] Fast Optical Flow using Dense Inverse Search
Abstract
최근 optical flow 계산 작업들은 정확성에 초점을 맞추고 있으나, 추적, 활동 감지 등 실시간 처리의 필요성이 있습니다. 실제 시각적 응용에서는 시간 복잡도가 굉장히 중요하기 때문에 본 논문에서는 다음과 방법을 제안합니다.
Dense Inverse Search (DIS) 방법의 핵심: 2001년 Baker와 Matthews가 제안한 역구성 이미지 정렬에 영감을 받은 효율적인 대응점 탐색.
Proposed method
Fast inverse search for correspondences
패치의 대응점을 효율적으로 검색하는 방법은 optical flow에서 중요합니다. 이번 장에서는 두 프레임 사이에서 단일 점 대응 관계를 추출하는 방법에 대해서 설명합니다.
$\theta{ps} \times \theta{ps}$크기의 patch에 대해서 query image가 $I{t+1}$, reference image가 $I{t}$라고 할 때, 다음 수식을 만족하는 vector $\vec{u} = (u,v)$를 찾는것이 목표입니다.
$$\vec{u} = \argmin{\vec{u}}[I{t+1}(x+u') - T(x)]^2 \dots (1)$$
여기서, T(x)는 template image($I_t$).
Non-linear 함수 이므로 비선형 최적화가 필요합니다. the inverse Lukas-Kanade algorithm을 통해 해결될 수 있습니다.
다음 두 과정을 반복합니다.
외부 이터레이션에서는 수식 (1)을 optimization을 통해 풉니다. 수식 (1)을 풀기 위해, 문제를 수식 (2)로 바꿔 $\triangle \vec{u}$를 구해 $u$를 업데이트 합니다.
$$ \triangle \vec{u} = \argmin{\triangle u'} \Sigma{x}{[I_{t+1}(x+u+\triangle u') - T(x)]} $$
알고리즘은 다음과 같습니다 (Dense Inverse Search).
1) Set initial flow field $U{\theta{ss}+1} \leftarrow 0$ 2) for $s = \theta{ss}$ to $s = \theta{sf}$ do
Dense inverse search를 위해 워핑 할때는 픽셀 레벨이 아닌 실수 레벨로 워핑합니다. 따라서 bilinear interpolation이 요구됩니다. 그 후, 파라미터는 $\vec{u} \leftarrow u+\triangle u$로 업데이트 됩니다.
기존의 루카스 카나데는 warping 된 이미지를 2차 헤시안을 이용하여 최적화하였지만, 해당 방법은 Inverse warping을 통해 다음 수식을 최적화하는 문제로 바꿀 수 있다는 장점이 있다.
$$ \Sigmax [T(x-\triangle u)-I{t+1}(x+u)]^2$$
핵심은 "중간에서 만나기!" 이다. $I_{t+1}(x+u)$는 내부 iteration에서는 fixed 되어진다.
위 방식의 단점은 search region이 $\theta_{ss}$ 크기로 제한된다는 점이다. 이럴땐 corase to fine 전략을 통해 점진적으로 scale을 키워가면서 optimization을 수행할 수 있다.
다중 스케일 접근 방식에서 패치를 독립적으로 최적화 하는 것이 아닌 각 레벨에서 중간 dense flow를 계산하고 patch를 다시 초기화 하는 형식을 취한다. 이유는 다음과 같다.
1) 중간 밀집 플로우 필드는 이동량을 평활화시키고 견고성을 제공하여, 효과적으로 이상치를 필터링합니다; 2) 더 굵은 스케일에서 패치의 수를 줄이므로 속도를 향상시킵니다.
알고리즘 절차
우선, zero flow로 시작합니다. 각각의 스케일 공간에 대해서 이전 스케일에서 계산된 u를 업샘플링하여 사용하게 됩니다. 그 후, inverse search를 통해 optimal displacement를 찾게 됩니다(argmin!).
위 세개의 step 진행 후, densification이 수행됩니다.
Fast Variational Refinement
현재 scale에서의 refinement를 수행한다. energy는 intensity와 graident data term($E_I, E_G$)과 이미지 도메인에서의 smoothness term($E_S$)이 있습니다.
전체 에너지 함수는 다음과 같습니다.
$$ E(U) = \int {\sigma \psi(E_i) + \gamma \psi(E_G) + \alpha \psi(E_S)} dx$$
여기서, $psi(a^2) = sqrt{a^2+\epsilon^2}, \epsilon = 0.001$. 이상치를 줄이는 역할을 합니다. (Robust penalizer!)
수식은 the brightness constancy assumption $(\triangledown^{T}_{3})u=0$ (이미지 어떤 지점에서 그 픽셀과 인접 픽셀들이 같은 색이나 밝기를 가진다는 가정) where $\triangledown_3 = (\partial x, \partial y, \partial z)$ is spatial-temporal gradient.
위 가정에 의해 intensity data term은 다음과 같이 모델링 될 수 있다.
$$ E_I = u^tJ_0u $$
밝기 일관성을 강화하기 위하여 $J_0=\beta_0(\triangledown3 I)(\triangledown^{T}{3}I)$을 사용합니다. ($\beta_0 = (||\triangledown_2 I||^2 + 0.01)^{-1})$
그래디언트 패널티 함수 $E_G$는 다음과 같이 정의됩니다. $$ EG = u^TJ{xy}u$$
where, $J_{xy} = \beta_x(\triangledown3I{dx})(\triangledown^T{3}I{dx})+\beta_y(\triangledown3I{dy})(\triangledown^T{3}I{dy})$ and $\beta$ is noramlization param.
the smoothness term은 gradient magnitude가 됩니다.
$$ E_S = ||\triangledown u|| + ||\triangledown v||$$
Non-convex energy function $E_U$는 fixed point iteration을 통해 최소화되며, 각 iteration 마다 linear system을 풀기 위해 SOR이 사용됩니다.
Derivation of the fast inverse search
해당 논문은 inverse search를 통해서 best matching point를 탐색합니다. $W(x; u)$를 $x$지점에서 motion vector $u$를 이용한 워핑이라고 볼 때, 최적화 하고자하는 수식은 다음과 같습니다.
$$ [I_{t+1}(W(x; u))-T(x)]^2 $$
warp parameter $u$는 다음과 같이 정의 됩니다.
$$\Sigmax [I{t+1}(W(x; u+\triangle u))-T(x)]^2$$
해당 수식은 비선형방정식 최적화를 위해 사용되는 Gauss-newton gradient descent minimization으로 해결됩니다.
$$ x_{k+1} = x_k - \frac{F(x_k)}{J(x_k)}$$
where $J$는 야코비안 행렬.