Contents — find the section you need

특징점 검출이 "이미지에서 랜드마크로 사용할 위치"를 결정하는 과정이라면, 특징점 추적은 "다음 프레임에서 랜드마크가 어디로 이동했는지"를 찾는 과정입니다. 안정적인 추적을 통해 카메라 움직임, 객체 속도 또는 로봇의 자체 위치를 추정할 수 있습니다. 반대로, 단 하나의 대응점이라도 잘못되면 이후의 자세 추정 및 맵이 모두 무너질 수 있습니다. 이 글에서는 검출기와 디스크립터의 차이를 주어진 것으로 간주하고, 픽셀 움직임의 지역 최적화와 디스크립터 매칭을 하나의 설계 문제로 다룹니다.

0.30초 요약

  • 추적에는 두 가지 접근 방식이 있습니다. 하나는 "다음 프레임에서 이전 프레임의 주변 영역을 찾는 것"이고, 다른 하나는 "각 프레임에서 디스크립터를 검출하고 계산한 후 매칭하는 것"입니다.

  • 루카스-카나데(Lucas-Kanade) 방법은 밝기 항상성, 지역 움직임, 그리고 인접 픽셀 간의 속도 공유를 가정하고 2×2 정규 방정식 시스템을 풉니다. 피라미드를 사용하면 큰 변위를 처리할 수 있도록 확장됩니다.

  • 디스크립터 매칭은 프레임 간 간격이 크더라도 재탐색이 가능하지만, 연산량 증가와 오매칭 발생률 증가라는 단점이 있습니다. 비율 테스트, 상호 최근접 이웃, RANSAC 등을 사용하여 기하학적 검증을 수행해야 합니다.

  • 추적 품질은 대응점 개수뿐 아니라 이미지 전체에 걸친 공간 분포, 재투영 오차, 전후방 일관성, 가림 현상 후 복구율 등을 종합적으로 고려하여 평가해야 합니다.

  • 어려운 경우는 모션 블러, 낮은 텍스처, 반사, 움직이는 객체, 롤링 셔터, 급격한 크기 변화 등입니다. 신뢰도 점수와 재탐지 메커니즘이 필수적입니다.

1. 이미지에서 점이 움직이는 것처럼 보이는 이유

Diagram 1 · Use the button to switch views
이전 프레임과 현재 프레임 사이의 움직임 화살표로 연결된 특징점

그림 1 — 대응점은 주변 점 및 카메라 모델과 움직임이 일치할 때까지는 가설입니다. 공간적 범위는 일치 개수만큼 중요합니다.

카메라 움직임에 따라 3D 점 X이 이미지 상의 \mathbf{x}=(x,y)로 투영됩니다. 프레임 간격 \Delta t 동안 추적의 목표는

\mathbf{x}_{k+1}=\mathbf{x}_k+\mathbf{d}_k
에서의 변위 \mathbf{d}_k를 찾는 것입니다.

\mathbf{x}_{k+1}=\mathbf{x}_k+\mathbf{d}_k

카메라가 이동할 때, 보이는 속도는 깊이에 따라 달라지고, 회전할 때는 이미지 전체가 같은 방향으로 흐릅니다. 연속된 이미지를 단순히 빼는 방식은 조명 변화와 노출 변화에 취약합니다. 노이즈가 많기 때문에 로컬 패치 구조를 대신 사용합니다.

2. 루카스-카나데: 작은 윈도우를 한 번에 해결하기

밝기 일정성 가정은 다음과 같습니다.

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

작은 변위에 대해 선형화하면 (u,v) 광학 흐름 제약 방정식이 얻어집니다.

I_xu+I_yv+I_t=0

단일 픽셀에서는 미지수 두 개에 대한 하나의 방정식(조리개 문제)이 됩니다. 따라서 윈도우 W 내의 픽셀들을 풀링하고 최소 제곱법을 사용하여 해결합니다.

\begin{bmatrix}u\\v\end{bmatrix} =-\left(\sum_{W}w\begin{bmatrix}I_x^2&I_xI_y\\I_xI_y&I_y^2\end{bmatrix}\right)^{-1} \sum_Ww\begin{bmatrix}I_xI_t\\I_yI_t\end{bmatrix}

괄호 안의 항은 특징점의 로컬 구조 행렬입니다. 모서리에서 두 방향으로의 기울기가 클수록 가역 행렬이 더 안정적으로 얻어집니다. 평평한 벽이나 단일 모서리에서는 움직임을 고유하게 결정할 수 없습니다.

큰 변위를 처리하기 위해 변위는 축소된 피라미드의 거친 레벨에서 미세 레벨로 전파됩니다. 각 레벨에서 여러 번의 반복이 수행됩니다. 다음 위치에서 재계산하기 전에 실행됩니다. 구현 시 피라미드 깊이, 윈도우 크기, 종료 기준, 최소 고유값, 전후 추적 오차를 조정합니다.

3. 이 방법과 디스크립터 매칭 중 선택

ORB 또는 SIFT와 같은 디스크립터는 주변 패치를 벡터 또는 비트 문자열로 변환하고 가장 가까운 거리에 있는 후보를 대응점으로 선택합니다. 연속 프레임 간의 작은 움직임의 경우 Lucas-Kanade 방법이 빠르지만, 가려짐, 프레임 건너뛰기 또는 카메라의 상당한 움직임으로부터 복구할 때는 디스크립터 재매칭이 유용합니다.

방법 입력 장점 단점 일반적인 사용
LK 추적 이전 프레임의 포인트와 다음 프레임의 이미지 빠르고, 서브픽셀 정확도 작은 변위부터 큰 변위, 가려짐, 낮은 텍스처에 적합 VO, 실시간 추적
ORB 매칭 두 이미지에서 추출한 디스크립터 경량, 회전 처리 불일치 발생 시 반사/흐림 SLAM 초기화/재탐색
SIFT 매칭 두 이미지의 디스크립터 크기/회전에 강건 연산, 메모리 SfM, 이미지 검색
학습 기반 점, 디스크립터, 매처 큰 외형 변화에 강건할 가능성 외부 학습 데이터, GPU 부하 열악한 환경, 연구

가장 가까운 거리의 디스크립터 후보만 사용하면 유사한 패턴에서 발생하는 불일치가 발생할 수 있습니다. 가장 가까운 거리의 d_1와 두 번째로 가까운 d_2 사이의 d_1/d_2\lt\tau(비율 테스트)을 요구하고, A→B 및 B→A에서 공통 최근접 이웃을 추가로 확인하면 도움이 됩니다. 마지막으로, 기본 행렬의 재투영 오차, 호모그래피 또는 대응점에서 추정한 PnP를 사용하여 RANSAC으로 검증합니다.

4. 추적 신뢰도 정량화

구현 시, 단순히 "점 하나"를 추적 성공으로 판단하는 것은 적절하지 않습니다. "반환되었습니다"라는 메시지만으로는 충분하지 않습니다. 다음 항목들을 로깅하면 오류의 원인을 파악할 수 있습니다.

  • LK의 최소 고유값 및 잔차
  • 순방향 추적과 역방향 추적의 차이(순방향-역방향 오차)
  • 디스크립터 비율 및 거리 분포
  • RANSAC 인라이어 비율 및 재투영 오차
  • 이미지 상의 점들의 공간 분포(중심부에만 집중되어 있는지 여부)
  • 프레임 간 평균 변위, 블러 측정값, 노출/게인

RANSAC 인라이어 비율이 높더라도 모든 점이 이미지의 한쪽 모서리에 집중되어 있으면 자세 추정이 제대로 이루어지지 않습니다. 그리드 셀당 최대 점 개수를 제한하고 특징점을 전체 시야에 분산시키면 회전 및 이동의 관측 가능성이 향상됩니다. 때로는 점 개수를 단순히 늘리는 것보다 다양한 방향과 거리에 걸쳐 소수의 대응점을 유지하는 것이 더 효과적일 수 있습니다.

5. 움직이는 물체 및 롤링 셔터

시각적 오도메트리는 카메라 움직임을 추정하기 위해 정적인 환경을 가정합니다. 하지만 많은 보행자, 자동차 또는 기타 물체가 움직이는 경우, 회전하는 팬이 프레임에 나타나면, 해당 객체는 카메라 모션 모델과 일치하지 않는 이상치로 간주됩니다. RANSAC만으로는 제거하기 어려울 정도로 동적 객체가 많을 경우, 시맨틱 마스킹, 광학 흐름 클러스터링, 배경 모델링 및 깊이 일관성을 결합해야 합니다.

CMOS 카메라의 롤링 셔터는 이미지를 위에서 아래로 행 단위로, 약간씩 다른 시간에 노출시킵니다. 빠른 회전이나 진동이 발생하면 단일 프레임 내에서도 카메라 자세가 행 단위로 변경되어 단일 투영 모델의 가정이 깨집니다. 이러한 문제를 완화하기 위해 IMU 각속도를 이용한 행 타이밍 보정, 글로벌 셔터, 짧은 노출 시간, 판독 시간 보정 등의 방법을 사용할 수 있습니다.

6. 최소 구현 흐름

  1. 카메라를 내부 매개변수, 왜곡 및 타임스탬프와 함께 보정합니다.

  2. 초기 프레임에서 FAST/ORB 또는 Shi-Tomasi를 감지하고 그리드를 통해 공간적으로 균등화합니다.

  3. 각 새 프레임에서 피라미드형 LK를 사용하여 추적하고, 전후 오차 및 이미지 경계를 확인합니다.

  4. 해당 프레임을 폐기합니다. 신뢰도가 낮은 점들을 제거하고, 점 밀도가 낮은 그리드 셀에서 새로운 점들을 탐지합니다.

  5. 필요한 간격으로 디스크립터 매칭을 실행하고, RANSAC 알고리즘을 사용하여 이상치를 제거합니다.

  6. 남은 대응점들을 Essential Matrix, PnP 또는 IMU 융합 단계로 전달합니다.

  7. 점들이 지속적으로 손실되는 경우, 다시 초기화하고 추적 상태와 원인을 기록합니다.

추적 재개 시점 결정

가림이나 노출 변화로 인해 점의 수가 일시적으로 감소하는 경우, 이전 위치들을 모두 외삽하면 잘못된 대응점이 안정적으로 보이는 추적으로 이어질 수 있습니다. 먼저 프레임 번호, 타임스탬프, 이미지 경계, 전후방 오차를 확인한 후, 작동 영역 밖의 후보들을 제거합니다. 모든 점이 하나의 작은 이미지 영역에 위치하는 경우, 점의 개수가 충분하더라도 안전하지 않습니다. 포즈 추정을 중지하고, 그리드 셀별로 다시 탐지한 후, 기하학적 모델을 다시 피팅하기 전에 정적 배경과 움직이는 물체를 분리합니다. 이를 "추적 중" 및 "다시 초기화" 상태를 가진 상태 머신으로 기록하면 누락된 데이터와 잘못된 매칭을 구분할 수 있습니다.

In 구현 시, 모든 대응점에 프레임 번호와 관측 타임스탬프를 첨부하여 처리 지연으로 인해 이전 점이 새로운 프레임에 섞이는 것을 방지합니다. 카메라가 갑자기 움직일 경우, 변위가 여전히 가장 거친 피라미드 레벨과 윈도우에 맞는지 확인합니다. 맞지 않는다면, 윈도우를 넓혀 다른 패턴으로 수렴할 때까지 기다리는 것보다 디스크립터 재탐색으로 전환하는 것이 더 안전합니다. 재탐색된 후보는 여전히 에피폴라 또는 호모그래피 잔차 검사와 순방향-역방향 일관성 검사를 통과해야 합니다. 움직이는 객체를 의도적으로 추적하는 경우, 카메라 움직임 포인트와 객체 추적 포인트를 별도의 세트로 유지하고, 한 세트의 이상치 판정을 다른 세트에 재사용하지 않습니다. 조명 변화, 가림, 통신 지연이 있는 로그를 재생하여 이러한 경계에서의 복구 성능을 테스트합니다.

7. 결론

특징 추적은 검출기, 지역 최적화, 디스크립터 매칭, 기하학적 검증을 단일 신뢰도 설계 문제로 취급하는 기술입니다. LK는 연속 프레임을 부드럽게 연결하고, 디스크립터는 큰 변화에서 복구되며, RANSAC은 기하학적으로 불일치를 걸러냅니다. 이러한 기술 중 하나에만 의존하기보다는, 여러 기술을 종합적으로 고려하여 설계하는 것이 중요합니다. 점 분포, 시간 동기화, 동적 객체 및 롤링 셔터를 포함하는 로그는 Visual SLAM 및 VIO의 재현성을 크게 향상시킵니다.

이해도 점검
추적에 성공한 점이 항상 정확한 일치인가요?

추적은 유사한 패턴으로 이동할 수 있습니다. 추적 횟수만 세는 대신 전후 일관성, 잔차 및 기하학적 구조를 확인하세요.

참고 자료

광류 Lab에서 두 프레임 사이의 특징점 이동을 추적하세요.

What to read next

Review the background특징점 매칭 Lab — 기술자 필터, 기하 인라이어와 참값 구분Continue the series광류 Lab: 두 프레임 사이의 움직임 추적Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교