Optical Flow

**옵티컬 플로우(optical flow)**는 연속된 프레임 사이에서 이미지 밝기 패턴이 보이는 겉보기 2D 움직임입니다: 시간 tt에서 t+1t+1로의 변위를 각 픽셀(또는 각 추적점)에 할당하는 벡터장 (u,v)(u, v)입니다. 이것이 바로 SLAM 프론트엔드가 매 프레임마다 특징을 다시 검출하고 다시 매칭하지 않고도 비디오 전체에서 점을 따라가는 방법입니다.

밝기 항상성과 흐름 제약식

기본이 되는 가정은 **밝기 항상성(brightness constancy)**입니다: 장면의 한 점은 움직이더라도 밝기를 유지한다는 가정입니다.

I(x,y,t)=I(x+u,y+v,t+1)I(x, y, t) = I(x + u,\, y + v,\, t + 1)

움직임이 작다고 가정하고, 우변을 1차까지 전개(테일러 전개)한 뒤 I(x,y,t)I(x,y,t)를 소거하면:

Ixu+Iyv+It=0I_x u + I_y v + I_t = 0

여기서 Ix,IyI_x, I_y는 이미지의 공간적 기울기(gradient)이고 ItI_t는 프레임 간의 시간적 차이입니다. 이 옵티컬 플로우 제약 방정식은 픽셀당 두 개의 미지수에 대해 방정식이 하나뿐입니다 — 이미지 기울기 방향을 따르는 흐름 성분은 관측 가능하지만, 그에 수직인 성분은 관측할 수 없습니다. 이것이 바로 **어퍼처 문제(aperture problem)**입니다: 작은 창을 통해 움직이는 에지를 보면, 그것이 자기 자신을 따라 얼마나 미끄러지는지 알 수 없습니다.

Lucas-Kanade: 국소 최소제곱

Lucas-Kanade는 세 번째 가정으로 이 모호성을 해소합니다: 작은 윈도우 WW (예: 21×2121\times 21) 안의 모든 픽셀은 같은 흐름을 공유한다는 가정입니다. 윈도우 내 NN개 픽셀에 대한 제약식을 쌓으면:

[Ix(1)Iy(1)Ix(N)Iy(N)]A[uv]=[It(1)It(N)]b\underbrace{\begin{bmatrix} I_x^{(1)} & I_y^{(1)} \\ \vdots & \vdots \\ I_x^{(N)} & I_y^{(N)} \end{bmatrix}}_{A} \begin{bmatrix} u \\ v \end{bmatrix} = -\underbrace{\begin{bmatrix} I_t^{(1)} \\ \vdots \\ I_t^{(N)} \end{bmatrix}}_{\mathbf{b}}

이는 과잉 결정계이며 최소제곱으로 풀립니다: (ATA)v=ATb(A^T A)\,\mathbf{v} = -A^T \mathbf{b}. 2×22\times 2 행렬 ATAA^T A는 Harris 코너 검출기구조 텐서와 정확히 같습니다 — 깊고 실용적인 연결입니다.

선형화가 작은 움직임을 가정하기 때문에, 실제 구현들은 풀이를 반복하고(워핑, 재선형화) 이미지 피라미드 위에서 거친-세밀(coarse-to-fine) 순서로 실행합니다: 큰 움직임은 거친 스케일에서 작은 움직임으로 줄어들고, 각 레벨의 추정값이 다음 레벨을 초기화합니다. 이 피라미드형 Lucas-Kanade 방식이 KLT 추적기의 핵심입니다.

희소 흐름 대 밀집 흐름

E(u,v)=(Ixu+Iyv+It)2+λ(u2+v2)dxdyE(u, v) = \iint \left( I_x u + I_y v + I_t \right)^2 + \lambda \left( \|\nabla u\|^2 + \|\nabla v\|^2 \right) \, dx\, dy

이로써 텍스처가 없는 영역도 주변으로부터 흐름을 물려받습니다. 현대의 밀집 흐름은 학습 기반 방법(FlowNet, PWC-Net, RAFT)이 지배적이며, 이들은 고전적 가정이 허용하는 것보다 훨씬 잘 큰 변위, 가림, 조명 변화를 다룹니다.

추적의 표준적인 신뢰도 필터는 **정방향-역방향 검사(forward-backward check)**입니다: 한 점을 프레임 tt에서 t+1t+1로 추적한 다음, 그 결과를 다시 tt로 추적해보고, 원래 위치 근처로 돌아오지 않으면 트랙을 버립니다.

SLAM에서의 의미

옵티컬 플로우는 프레임 간 대응점을 얻는 가장 저렴한 방법이며, 대응점은 시각적 오도메트리의 원재료입니다. KLT 기반 추적 프론트엔드(예: VINS-Mono 및 많은 VIO 시스템)는 디스크립터를 매칭하는 대신 피라미드형 Lucas-Kanade로 코너를 추적합니다 — 더 빠르고, 디스크립터 매칭에는 없는 서브픽셀 정확도를 갖습니다. 같은 밝기 항상성 메커니즘을 2D 윈도우 이동에서 완전한 카메라 자세 워핑으로 일반화한 것이 직접법(LSD-SLAM, DSO)의 기반입니다. 그리고 학습된 밀집 흐름은 이제 DROID-SLAM과 같은 시스템에서 대응점 추정을 담당합니다. 제약 방정식, 어퍼처 문제, 구조 텐서 조건화를 이해하면 이들 중 무엇이 어디에서 실패할지 알 수 있습니다: 빠른 움직임, 낮은 텍스처, 변화하는 조명입니다.

실습

관련 문서