ORB (Oriented FAST and Rotated BRIEF)

ORB(Rublee et al., 2011)는 ORB-SLAM과 실시간 시각적 SLAM의 많은 부분을 이끄는 키포인트 검출기 + 이진 디스크립터 조합입니다. SIFT/SURF보다 빠르고 특허가 없는 대안으로 설계되었습니다: SIFT보다 두 자릿수 배 빠르면서도 추적, 재지역화, 루프 클로저에 충분한 매칭 품질을 갖습니다. 이름 그대로, 두 가지 개선이 결합된 것입니다: oFAST(방향을 가진 FAST)와 rBRIEF(회전을 인식하는 BRIEF)입니다.

oFAST: 방향을 가진 FAST 키포인트

FAST는 후보 픽셀 주변의 16개 픽셀로 이루어진 원을 검사해 코너를 찾지만, 스케일이나 방향 정보를 제공하지 않으며 검출 간 코너 응답값도 비교할 수 없습니다. ORB는 이 세 가지를 모두 고칩니다.

mpq=x,ypatchxpyqI(x,y),θ=atan2(m01,m10)m_{pq} = \sum_{x, y \in \text{patch}} x^p y^q\, I(x, y), \qquad \theta = \operatorname{atan2}(m_{01},\, m_{10})

코너의 중심에서 패치의 강도 중심까지의 벡터는 반복 가능한 각도 θ\theta를 만들어냅니다: 이미지를 회전시키면 θ\theta도 함께 회전합니다. 바로 이 하나의 각도가 디스크립터에 회전 불변성을 부여합니다.

rBRIEF: 조향(steered)되고 상관 제거된 이진 디스크립터

BRIEF는 부드럽게 처리된 패치를 nn개의 이진 밝기 비교로 기술합니다: 미리 정의된 오프셋 쌍 (ai,bi)(\mathbf{a}_i, \mathbf{b}_i)에 대해 ii번째 비트는

τi={1I(ai)<I(bi)0otherwise\tau_i = \begin{cases} 1 & I(\mathbf{a}_i) < I(\mathbf{b}_i) \\ 0 & \text{otherwise} \end{cases}

로 결정되며, nn비트 문자열을 만듭니다(ORB에서는 n=256n = 256, 즉 32바이트). 단순한 BRIEF는 회전 하에서 무너지므로, ORB는 테스트 패턴을 **조향(steer)**합니다: 샘플링 전에 모든 점 쌍을 키포인트의 방향 θ\theta만큼 회전시킵니다(룩업 테이블로 이산화됩니다).

하지만 조향은 BRIEF의 통계적인 장점 일부를 파괴합니다 — 회전된 테스트들은 서로 더 상관되고 구별력이 떨어집니다. ORB의 해법은 rBRIEF입니다: 후보 테스트 쌍의 큰 풀에 대해 오프라인에서 탐욕적 탐색을 수행하여, 분산이 높으면서(평균이 0.5에 가까워 각 비트가 정보를 담고) 이미 선택된 테스트들과 상관이 낮은 256개의 테스트를 선택합니다. 그 결과, 이진 형식을 유지하면서도 손실된 구별력의 대부분을 회복합니다.

ORB 디스크립터 매칭하기

이진 디스크립터는 해밍 거리(Hamming distance) — 서로 다른 비트의 수 — 로 비교되며, popcount(x XOR y)로 계산됩니다. 디스크립터 쌍 하나당 명령어 몇 개면 됩니다. 이 덕분에 수천 개의 디스크립터에 대한 브루트 포스 매칭이 실시간으로 가능해지며, LSH나 bag-of-words 역색인이 지도 규모의 검색을 처리합니다. 일반적인 필터들도 함께 적용됩니다: 최고와 두 번째 최고 거리 사이의 Lowe 비율 테스트, 교차 검사, RANSAC을 통한 기하학적 검증입니다.

실무에서

OpenCV는 ORB를 cv::ORB::create()로 제공하며, 중요한 조절값들이 직접 노출되어 있습니다: 유지할 특징 개수, 피라미드 스케일 인자와 레벨 수, FAST 임계값입니다. ORB-SLAM에서 온 두 가지 실무적 습관은 따라 할 가치가 있습니다.

SLAM에서의 의미

ORB는 CPU 및 임베디드 하드웨어에서 특징 기반 SLAM을 실용적으로 만든 최적점에 있습니다: 프레임당 약 1000개의 특징을 30fps 예산 안에서 여유 있게 검출, 기술, 매칭할 수 있으며, 광범위 기준선 매칭에 충분한 불변성(피라미드를 통한 스케일, oFAST/rBRIEF를 통한 회전)을 가집니다. ORB-SLAM은 이 하나의 특징을 중심으로 전체 아키텍처를 구축했습니다 — 같은 ORB 디스크립터가 프레임 간 추적, 로컬 맵 매칭, 재지역화, 그리고 bag of visual words 어휘집을 통한 루프 클로저 검출 모두를 담당합니다 — 이것이 이 시스템이 그렇게 일관되고 견고한 이유의 큰 부분입니다. 딥러닝 시대에도 ORB는 여전히 학습된 특징(SuperPoint 등)이 비교되는 기본 베이스라인이며, 컴퓨팅 자원이 부족할 때는 여전히 실용적인 선택입니다.

실습

관련 문서