옵티컬 플로우 (Optical Flow)

컴퓨터과학·AI
한 줄 정의: 연속된 두 영상 프레임 사이에서 각 픽셀이 어느 방향으로 얼마나 이동했는지를 벡터로 계산한 것입니다.

쉽게 풀면

달리는 자동차의 블랙박스 영상을 한 프레임씩 넘겨 본다고 생각해봅시다. 앞차의 범퍼가 이전 프레임보다 오른쪽으로 몇 픽셀 이동했는지, 가로수는 왼쪽으로 얼마나 스쳐 지나갔는지를 하나하나 화살표로 표시할 수 있습니다. 옵티컬 플로우는 바로 이 화살표들의 모음입니다. 영상 속 밝기 패턴이 다음 프레임에서 어디로 옮겨갔는지를 픽셀 단위로 추적해서, 화면 전체를 덮는 움직임의 지도를 만들어내는 것이죠. 이 지도를 이용하면 카메라 자체가 움직였는지, 물체가 움직였는지, 어떤 물체가 얼마나 빠르게 움직이는지를 계산할 수 있습니다.

왜 중요한가

옵티컬 플로우는 영상 속 움직임 정보를 명시적으로 추출해주기 때문에 행동 인식, 영상 압축, 로봇의 자기 위치 추정(비주얼 오도메트리), 자율주행의 장애물 움직임 예측 등 동작이 중요한 컴퓨터 비전 문제 전반에서 기초 도구로 다뤄집니다. 최근에는 딥러닝 기반 프레임 보간이나 영상 안정화 기술의 핵심 구성요소로도 널리 활용됩니다.

논문에서는 이렇게 쓰입니다

"본 연구에서는 인접 프레임 간 옵티컬 플로우를 추정하여 행동 인식 모델의 입력 특징으로 추가하였다."

이 문장은 영상 속 정지된 형태 정보(외형)만으로는 부족한 동작 정보를 보완하기 위해, 프레임 간 움직임 벡터를 별도로 계산해 모델에 함께 넣어주었다는 뜻입니다.

"드론의 자기 위치를 추정하기 위해 하방 카메라에서 계산된 옵티컬 플로우를 관성센서 데이터와 융합하였다."

로봇공학 연구에서, 카메라로 관측된 화면상의 움직임을 이용해 드론 자신이 얼마나 움직였는지를 추정하는 데 옵티컬 플로우를 활용했다는 뜻입니다.

"영상 압축 효율을 높이기 위해 인접 프레임 간 옵티컬 플로우를 계산하여 다음 프레임을 예측한 뒤 잔차만을 부호화하였다."

영상처리 연구에서, 다음 프레임을 미리 예측하는 데 움직임 정보를 활용해 실제로 전송해야 할 데이터 양을 줄였다는 뜻입니다.

조금 더 깊게 보면

전통적인 옵티컬 플로우 계산은 인접한 화소의 밝기가 짧은 시간 동안 크게 변하지 않는다는 가정(밝기 항등성 가정)에 기반하며, 이 때문에 급격한 조명 변화나 그림자에 취약하다는 한계가 자주 지적됩니다. 최근에는 신경망이 대량의 영상 데이터로부터 픽셀 대응 관계를 직접 학습해 추정하는 딥러닝 기반 방식이 전통적 방법보다 정확도가 높은 경우가 많아 널리 쓰이고 있으며, 두 프레임 사이 모든 픽셀에 대해 촘촘하게 계산하는 밀집(dense) 방식과 특정 특징점만 추적하는 희소(sparse) 방식의 구분도 논문에서 자주 등장합니다.

주의할 점

옵티컬 플로우는 "화면상의 겉보기 움직임"을 계산할 뿐, 실제 3차원 공간에서의 움직임과는 다를 수 있습니다. 예를 들어 조명이 바뀌어 그림자만 이동해도 옵티컬 플로우 값은 크게 나올 수 있으며, 반대로 매끈한 흰 벽처럼 무늬가 없는 표면은 실제로 움직여도 변화를 감지하기 어렵습니다. 또한 영상에서 물체의 경계와 위치를 구분해내는 이미지 분할과는 목적이 다른, "움직임 자체"에 초점을 맞춘 기법이라는 점을 구분해야 합니다.

관련 용어