SIFT

David Lowe가 2004년에 발표한 SIFT (Scale-Invariant Feature Transform) 는 스케일 및 회전 불변 지역 특징을 위한 기념비적인 알고리즘입니다. ORB, AKAZE, SuperPoint 등이 지금도 따르는 검출기 + 디스크립터 템플릿을 정의했으며, (예를 들어 COLMAP 스타일의 오프라인 재구성에서) 여전히 매칭 정확도의 금본위(gold standard)로 남아 있습니다.

키포인트 검출: 스케일 공간의 블롭

SIFT는 코너가 아니라 블롭(blob) 을 검출하며, 이를 여러 스케일에 걸쳐 수행하여 이미지에서 크게 보이든 작게 보이든 동일한 세계 구조가 검출되도록 합니다. 가우시안 스케일 공간은 이미지를 점점 커지는 스케일 σ\sigma의 가우시안으로 합성곱하여 구축됩니다:

L(x,y,σ)=G(x,y,σ)I(x,y)L(x, y, \sigma) = G(x, y, \sigma) * I(x, y)

인접한 스케일 사이의 가우시안 차분 (Difference of Gaussians, DoG) 은 스케일 정규화된 가우시안 라플라시안(블롭 검출기)을 훨씬 적은 비용으로 근사합니다:

D(x,y,σ)=L(x,y,kσ)L(x,y,σ)D(x, y, \sigma) = L(x, y, k\sigma) - L(x, y, \sigma)

스케일 공간은 옥타브(옥타브 사이에서 이미지를 2배 다운샘플링)로 구성되며, 옥타브마다 여러 스케일을 가집니다 — 피라미드 레벨마다 여러 블러 레벨을 가진 이미지 피라미드입니다.

키포인트는 공간과 스케일 모두에서 DD의 지역 극값입니다: 각 샘플은 (x,y,σ)(x, y, \sigma)에 걸친 3×3×33 \times 3 \times 3 큐브 내의 26개 이웃과 비교됩니다. 후보는 다음 과정을 거칩니다:

  1. 극값 주변에 이차식(D의 2차 테일러 전개)을 피팅하여 부화소/부스케일 정확도로 정제;
  2. 대비로 필터링D|D|가 작은 극값은 불안정하여 폐기됨;
  3. 에지 반응으로 필터링 — DoG는 위치 추정이 부정확한 에지를 따라 강하게 반응합니다. Harris 검정과 유사하게, 주곡률의 비율(DD2×22 \times 2 헤시안의 고유값)에 임계값을 적용하여 블롭 형태이면서 위치가 잘 정해진 점만 남깁니다.

디스크립터: 128차원 기울기 히스토그램

매칭

SIFT 디스크립터는 부동소수점 벡터이며 L2 거리로 비교됩니다. 모호한 매칭은 Lowe의 비율 테스트로 필터링됩니다: 최근접 이웃은 d1/d2<0.8d_1 / d_2 < 0.8인 경우에만 허용되며, 여기서 d1,d2d_1, d_2는 각각 첫 번째와 두 번째 최근접 이웃까지의 거리입니다. 대규모 데이터베이스의 경우 근사 최근접 이웃 구조(kd-트리, FLANN)가 무차별 대입 탐색을 대체합니다 — SIFT의 128차원은 kd-트리의 실용적 한계에 가깝습니다.

비용

SIFT는 매우 정확하지만 느립니다 — CPU에서 고해상도 이미지 한 장당 약 1초 수준입니다 — 이것이 실시간 SLAM이 역사적으로 대신 FAST/ORB를 채택한 이유이며, 온라인에서 SIFT 수준의 강건성이 필요할 때 GPU 구현이나 이진 대안이 사용되는 이유입니다.

SLAM에서의 의미

실습

관련 문서