Contents — find the section you need

비디오를 프레임 단위로 보면 이미지의 어느 부분이 얼마나 움직였는지 직관적으로 파악하기 어렵습니다. 광학 흐름(Optical Flow)은 각 픽셀의 밝기가 다음 프레임에서 어디로 이동했는지를 벡터로 나타냅니다. 이는 자율주행차의 충돌 예측, 드론의 자체 위치 파악, 스포츠 분석, 비디오 보간 등 움직임과 관련된 모든 프로세스에서 공통 언어로 사용됩니다.

0.30초 요약

  • 광학 흐름은 "물체 자체의 속도"가 아니라 이미지에서 나타나는 물체의 움직임입니다. 카메라 움직임, 물체 움직임, 깊이 정보가 모두 광학 흐름에 포함됩니다.

  • 밝기 항상성 방정식은 픽셀당 하나의 방정식만 제공하므로, 로컬 윈도우 평활도 가정, 특징점 또는 정규화를 추가하여 해결해야 합니다.

  • 루카스-카나드(Lucas-Kanade) 방법은 작은 윈도우를 단일 속도로 처리하는 희소 추적 방법입니다. 혼-슌크(Horn-Schunck) 방법은 이미지 전체에 걸쳐 평활도를 사용하는 조밀한 추정 방법입니다.

  • 큰 변위를 처리하려면 이미지 피라미드가 필요합니다. 가림 현상, 반사, 흐림 현상에는 신뢰도 측정과 이상치 처리가 필요합니다. 롤링 셔터 현상 또한 행 타이밍 차이에 대한 보정이 요구됩니다.

  • RAFT와 같은 학습 기반 방법은 정확도가 매우 높지만, GPU 메모리 사용량, 배포판 외 환경에서의 동작, 실시간 성능, 라이선스 등을 확인한 후에 도입해야 합니다.

1. 밝기 항상성에서 흐름 제약 방정식까지

Diagram 1 · Use the button to switch views
이미지 피라미드에서 조밀한 벡터 필드로의 광학 흐름 추정

그림 1 — 피라미드는 먼저 큰 변위를 처리한 다음 더 미세한 스케일에서 조밀한 벡터 필드를 정제합니다. 신뢰도 마스크와 가림 마스크는 벡터와 함께 이동해야 합니다.

작고 고정된 패턴이 프레임 간에 움직이는 경우 밝기가 일정하다고 이상화할 수 있습니다.

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

1차 테일러 전개와 \Delta t\to0를 함께 사용하면 다음과 같습니다.

I_xu+I_yv+I_t=0

미지의 속도 성분 (u,v)이 두 개 있지만 방정식은 하나뿐이므로 이것만으로는 해결할 수 없습니다. 가장자리에서는 가장자리 방향을 따라 움직이는 것이 보이지 않습니다. 평평한 영역에는 기울기가 전혀 없습니다. 이것이 바로 조리개 문제입니다.

2. Lucas–Kanade 및 Horn–Schunck

Lucas–Kanade는 로컬 윈도우(W) 전체에 걸쳐 속도가 동일하다고 가정하고 다음 제곱 오차를 최소화합니다.

E(u,v)=\sum_{(x,y)\in W}w(x,y)\{I_xu+I_yv+I_t\}^2

이 방법은 기울기 행렬이 충분히 양호한 조건을 갖는 모서리만 사용하며, 특징점 추적에 사용되는 것과 동일한 피라미드와 반복 업데이트를 결합합니다(이전 섹션 참조). OpenCV의 calcOpticalFlowPyrLK은 이 계열의 구현입니다.

Horn–Schunck는 전체 이미지의 유동장을 미지수로 취급하고 밝기 제약 조건과 속도의 평활도를 동시에 최소화합니다.

E(u,v)=\iint (I_xu+I_yv+I_t)^2+\alpha^2(|\nabla u|^2+|\nabla v|^2)\,dxdy

\alpha 값이 클수록 유동장이 더 부드러워지고, 값이 작을수록 국부적인 불연속성을 허용합니다. 객체 경계를 가로지르는 평활화는 서로 다른 객체의 속도를 혼합하므로, 대신 강건한 손실 함수 또는 에지 보존 정규화가 사용됩니다.

3. 희소 흐름 및 밀집 흐름

유형 추정 포인트 대표적인 방법 장점 단점
희소 수백에서 수천 개의 포인트(예: 모서리) LK, KLT 경량이며, 포즈 추정에 직접 사용 텍스처가 부족한 영역에 공백 발생
준밀집 그래디언트가 있는 픽셀 직접 VO, 헤시안 기반 방법 기하학적 정보와 계산 비용의 균형 유지 이미지 전체를 채우지 않음
밀집 거의 모든 픽셀 Horn–Schunck, TV-L1, RAFT 움직이는 물체, 유체, 보간에 효과적 계산 비용 높음, 가려짐 경계에서 모호성 발생

시각적 오도메트리의 경우, 희소 대응점을 기하학적 계산에 전달하는 것이 더 안정적인 경향이 있습니다. 반면에, 움직이는 보행자 영역을 마스킹하거나 비디오 보간에 픽셀 단위 모션을 사용하는 경우, 밀집된 흐름이 필요합니다. 단순히 GPU 성능을 높이는 것보다 목적에 맞는 필요한 밀도를 사전에 결정하는 것이 더 효과적입니다.

4. 큰 변위, 가림 및 밝기 변화 처리

픽셀 단위 미분 근사법은 큰 움직임에 제대로 대응하지 못합니다. 이미지를 1/2, 1/4, 1/8 크기로 축소하여 가우시안 피라미드를 구축합니다. 큰 변위는 거친 수준에서 추정한 후, 미세 수준으로 업샘플링하고 반복적으로 정제합니다. 피라미드 레벨이 너무 많으면 작은 객체가 사라지고, 너무 적으면 검색 범위가 부족해집니다.

조명이 변하면 밝기 항상성이 유지되지 않으므로, 대신 로컬 정규화, 그라디언트 방향, 강건한 샤르보니에 손실 또는 상대 색상 차이를 사용합니다. 움직이는 객체의 경계에서는 이전 프레임에서 보였던 픽셀이 다음 프레임에서 가려질 수 있습니다(가림). 가림 플래그, 전후 일관성 및 가시성 마스크를 사용하여 강제로 밝기를 계산하는 대신 가림을 처리합니다. 이를 통해 추적합니다.

5. 학습 기반 방법: RAFT 해석 방법

RAFT(Recurrent All-Pairs Field Transforms)는 두 이미지 간의 모든 픽셀 쌍에 대한 상관관계를 계산한 다음 반복적인 업데이트 연산자를 사용하여 흐름을 개선하는 것으로 알려져 있습니다. 기존 방법의 "로컬 윈도우"보다 훨씬 더 넓은 대응 후보 풀을 활용할 수 있기 때문에 반복적인 텍스처가 있는 영역이나 큰 변위가 있는 영역에서 강점을 보입니다.

하지만 벤치마크에서 낮은 평균 엔드포인트 오류(EPE)가 실제 로봇 환경에서 사용하기에 안전하다는 것을 의미하지는 않습니다. 카메라 렌즈, 노출, 롤링 셔터, 먼지 또는 야간 조명이 학습 데이터와 다르면 신뢰도가 떨어집니다. 평가에는 추론 시간, 입력 해상도, 양자화 오류, GPU 드라이버 및 모델 라이선스가 포함되어야 합니다.

6. 카메라 움직임과 동적 객체 분리

흐름을 카메라 움직임으로 변환하려면 카메라 내부 행렬 K과 깊이 정보가 필요합니다. Z. 이미지 포인트 \mathbf{x}의 정규화된 좌표에서 카메라의 이동 \mathbf{t} 및 각속도 \boldsymbol{\omega}로 인한 흐름은 개념적으로 다음과 같이 나타낼 수 있습니다.

\mathbf{u}=\frac{1}{Z}A(\mathbf{x})\mathbf{t}+B(\mathbf{x})\boldsymbol{\omega}

이동 성분은 1/Z에 따라 달라지며, 가까운 물체는 먼 물체보다 더 많이 움직입니다. 반면 회전 성분은 깊이에 의존하지 않습니다. RANSAC을 통해 찾은 단일 모션 모델과 일치하는 흐름은 배경으로 처리되고, 잔차가 큰 영역은 동적 객체 후보가 됩니다. 차량이나 보행자가 많은 장면에서는 객체 탐지 및 의미 마스크를 기하학적 추정과 함께 사용합니다.

7. 평가 지표 및 재현 가능한 측정

실제 흐름 (u^*,v^*)이 주어졌을 때, 평균 엔드포인트 오류는 다음과 같습니다.

EPE=\frac{1}{N}\sum_{i=1}^{N}\sqrt{(u_i-u_i^*)^2+(v_i-v_i^*)^2}

보고할 내용에는 다음이 포함됩니다. 평균값뿐 아니라 95번째 백분위수, 가려짐 경계에서의 오차, 저텍스처 영역에서의 오차, 그리고 속도별 오차를 고려해야 합니다. 실제 하드웨어에서 정답 데이터를 얻기 어렵기 때문에, 일반적으로 모션 캡처, 로봇 팔의 알려진 궤적, 합성 이미지, 전후방 일관성, 그리고 광학 흐름(VO) 재투영 오차를 종합하여 정답 데이터를 생성합니다.

로그에는 카메라 타임스탬프, 노출, 해상도, 피라미드 레벨, 윈도우 크기, 반복 횟수, GPU/CPU, 온도, 그리고 흐름 신뢰도 정보가 포함되어야 합니다. 동일한 알고리즘 이름이더라도 이러한 조건이 다르면 결과를 비교할 수 없습니다.

8. 요약

광학 흐름(Optical Flow)은 픽셀의 겉보기 움직임을 방정식으로 제약하고, 로컬 윈도우, 전체 이미지 평활도, 이미지 피라미드, 그리고 학습 기반 상관관계를 이용하여 이를 해결합니다. 희소 광학 흐름(Sparse LK)은 자체 위치 파악에 적합하고, 밀집 광학 흐름(Dense Flow)은 동적 객체 및 비디오 처리에 적합합니다. 카메라 움직임과 객체 움직임, 가려짐, 조명, 롤링 셔터를 각각 고려하고, 평균 오차뿐 아니라 실패 조건을 평가하면 잘못된 구현을 방지하는 데 도움이 됩니다. 선택.

이해했는지 확인하세요
이미지 움직임이 객체의 물리적 속도인가요?

카메라 움직임, 객체 움직임, 깊이는 모두 투영된 움직임에 영향을 미칩니다. 초당 픽셀 수를 초당 미터 수로 변환하려면 기하학적 정보가 필요합니다.

참고 자료

What to read next

Review the background광류 Lab: 두 프레임 사이의 움직임 추적Continue the series동형성 입문 — 단일 3x3 행렬을 이용한 평면 대응 설명Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교