Contents — find the section you need
수백 명의 낯선 사람들이 관광지의 동일한 랜드마크를 촬영한 사진을 모아서, 그 건물의 3D 모델과 모든 촬영 위치를 복원하는 것, 이것이 바로 SfM(Structure from Motion)입니다. 촬영 순서, 상대적인 카메라 위치, 심지어 사용된 렌즈까지 모두 사전에 알 수 없는 이미지 세트에서, SfM은 기하학적으로 일관된 3D 포인트 클라우드와 카메라 포즈를 동시에 복원합니다. Visual-SLAM과 VO/VIO가 로봇이나 카메라의 "현재" 위치를 실시간으로 추적하는 것과 달리, SfM은 대부분 오프라인으로 실행되며, 전체 장면을 구축하는 정확도를 우선시합니다. 이 글에서는 이러한 차이점을 중심으로 SfM의 내부 구조를 기초부터 살펴봅니다.
0. 30초 요약
-
SfM(구조적 모델링)은 특징점 매칭과 기하학적 검증을 통해 여러 이미지로부터 장면의 희소한 3D 포인트 클라우드와 각 카메라의 내적 및 외적 파라미터를 동시에 복원하는 과정입니다.
-
재구성 전략은 크게 두 가지가 있습니다. 하나는 카메라를 순차적으로 하나씩 추가하는 증분 SfM이고, 다른 하나는 모든 카메라 쌍의 상대적 자세를 먼저 찾은 후 전체 자세를 한 번에 계산하는 전역 SfM입니다.
-
증분 SfM은 견고하지만 순차적인 방식이기 때문에 드리프트(누적 오차)에 취약합니다. 전역 SfM은 모든 것을 한 번에 계산하므로 드리프트에 강하지만, 이상치가 많은 상대적 자세에는 취약합니다.
-
삼각측량을 통해 얻은 3D 포인트와 카메라 자세는 그 자체로는 이미지 노이즈의 영향을 받는 대략적인 추정치일 뿐입니다. 번들 조정은 재투영 오류를 동시에 최소화하는 기능을 통해 SfM의 정확도를 궁극적으로 결정합니다.
- SfM과 Visual-SLAM은 동일한 기본 기하학적 구조를 공유하지만 설계 철학에서 차이가 있습니다. SfM은 정확성과 완전성을 우선시하는 오프라인 배치 처리 방식인 반면, SLAM은 즉각성과 연속성을 우선시하는 온라인 실시간 처리 방식입니다.
1. SfM의 입력과 출력은 무엇인가요?
입력은 촬영 순서와 상대적 위치를 알 수 없는 이미지 세트 \{I_1,\dots,I_N\}입니다. 각 이미지는 서로 다른 카메라, 다른 렌즈, 그리고 다른 시간에 촬영되었을 수도 있습니다. 출력은 다음 세 가지로 구성됩니다.
- 각 이미지(i)의 카메라 포즈(P_i=K_i[R_i\mid\mathbf{t}_i]) (내부 및 외부 매개변수)
- 장면의 3D 점 집합(\{\mathbf{X}_j\}) (주로 특징점에 해당하는 희소한 점 구름)
- 어떤 이미지가 어떤 3D 점을 관측했는지에 대한 대응 관계(트랙)
카메라 캘리브레이션 입문에서는 고정된 캘리브레이션 패턴에서 단일 카메라의 내부 매개변수를 복구하는 반면, SfM은 더 큰 역문제입니다. 즉, 대응점 간의 기하학적 제약 조건만으로 여러 대의 보정되지 않았거나 부분적으로 보정된 카메라의 내부 및 외부 매개변수와 장면 구조를 동시에 복구하는 것입니다. EXIF 메타데이터에 초점 거리가 포함되어 있으면 초기값으로 사용되지만, 최종 정확도는 이미지 자체의 기하학적 제약 조건에 따라 달라집니다.
결과 뷰어에서 먼저 카메라들이 비정상적으로 작은 영역으로 수렴하는지, 포인트 클라우드가 분할되거나 중복되는지, 그리고 등록에 실패한 이미지가 있는지 확인합니다. 건물과 유사한 모양만으로는 정확도를 입증할 수 없습니다. 재투영 오차, 트랙 길이, 등록된 이미지 수를 평가하고, 측량된 길이 또는 GNSS 데이터가 있는 경우 외부 스케일과 비교합니다. 단안경 SfM은 임의의 전역 스케일을 사용하므로 포인트 클라우드 뷰어에 표시되는 거리가 자동으로 미터 단위의 거리로 변환되는 것은 아닙니다.
2. 기본 파이프라인
3. 점진적 SfM: 카메라를 하나씩 추가하기
점진적 SfM은 충분한 시차와 대응점을 가진 초기 이미지 쌍을 선택하는 것으로 시작하며, 에피폴라 기하학을 이용하여 필수/기본 행렬을 추정함으로써 첫 번째 2면 재구성을 수행합니다. 그 후 다음 단계를 반복합니다.
-
등록된 3D 점들에 대한 2D 대응점이 이미 있는 새 이미지를 선택하고, PnP를 통해 해당 이미지의 포즈를 찾습니다.
-
새 이미지와 기존 이미지 간의 대응점을 이용하여 아직 3D로 재구성되지 않은 점들을 삼각측량합니다.
-
일정 개수의 이미지마다 로컬 또는 글로벌 번들 조정을 통해 포즈와 구조를 개선합니다.
-
모든 이미지가 처리되거나 더 이상 이미지를 추가할 수 없을 때까지 1단계로 돌아갑니다.
이 접근 방식은 Snavely et al.의 Photo Tourism(2006) 이후 널리 사용되어 왔으며, COLMAP의 표준 파이프라인에서도 증분 SfM으로 채택되었습니다. 한 번에 소수의 미지수만 순차적으로 증가시키기 때문에 안정적인 구현이 가능하며, 불량 이미지 쌍을 쉽게 감지하고 제외할 수 있습니다. 그러나 포즈가 이미지 단위로 누적되기 때문에 초기의 작은 오류가 이후 이미지로 전파되고, 루프(동일한 장소를 반복해서 촬영한 이미지 그룹)가 많은 데이터셋에서는 드리프트가 누적되는 경향이 있습니다. 주기적인 번들 조정과 루프 클로저에 해당하는 재방문 감지를 통해 이러한 누적 오류를 제어할 수 있습니다.
4. 글로벌 SfM: 모든 쌍 관계를 한 번에 해결
글로벌 SfM은 이미지를 순차적으로 등록하지 않습니다. 먼저 모든 이미지 쌍(또는 선택된 하위 집합)에 대해 상대 포즈 (R_{ij},\mathbf{t}_{ij}/\|\mathbf{t}_{ij}\|)을 찾습니다. 그런 다음 두 단계에 걸쳐 전체 그래프를 동시에 추정합니다.
회전 평균화는 쌍별 상대 회전 집합 R_{ij}에서 전역적으로 최소한의 불일치를 갖는 카메라 회전 집합 \{R_i\}을 찾습니다. 일반적으로 사용되는 오류 측정 지표는 리 군 SO(3)에 대한 로그 맵을 사용합니다.
\rho은 잘못된 상대 포즈가 이상치로 작용하는 영향을 억제하는 강건한 손실 함수입니다.
회전이 고정되면 변환 평균화를 통해 상대 변환 방향 집합 \mathbf{t}_{ij}에서 카메라 위치 \{\mathbf{t}_i\}를 찾습니다. 단안 상대 변환은 방향만 제공하기 때문에(에피폴라 기하학 입문에서 논의된 스케일 모호성 참조), 여러 쌍의 방향 제약 조건으로부터 일관된 구성을 찾아야 합니다. 이를 위해 이상치 제거를 포함하는 1DSfM과 같은 접근 방식이 제안되었습니다.
글로벌 SfM은 모든 이미지의 정보를 동시에 사용하기 때문에 원칙적으로 증분 SfM에서 나타나는 순차적 드리프트에 덜 취약하며, 계산적으로 병렬화하기도 더 쉽습니다. 그러나 이상치가 개별 상대 포즈에 섞여 있으면 평균화 단계에서 이상치를 감지하고 제거하지 않는 한 전체 글로벌 솔루션이 왜곡됩니다. Moulon et al.의 연구(ICCV 2013)는 강건한 회전 평균화와 삼중 초점 텐서를 이용한 변환 방향 추정을 결합하여 Global SfM의 실용성을 크게 향상시킨 대표적인 예입니다.
| 측면 | 증분 SfM | 전역 SfM |
|---|---|---|
| 재구성 진행 방식 | 초기 쌍에서 이미지를 하나씩 추가 | 모든 쌍별 관계를 먼저 해결한 후 공동으로 최적화 |
| 드리프트에 대한 저항성 | 순차적 전파 및 누적 오류에 취약 | 전역적으로 최적이므로 누적 오류가 적음 |
| 이상치에 대한 저항성 | 이미지를 추가할 때 개별적으로 감지 및 제거하기 쉬움 | 평균화 전에 이상치를 제거하면 정확도가 결정됨 |
| 계산 비용 | 이미지 수에 따라 순차적으로 처리되므로 대규모에서 부하가 커짐 | 병렬화 가능하지만 평균화를 위해 전역 최적화 필요 |
| 구현 난이도 | 구현 예제가 풍부하고, 견고성을 위한 튜닝이 용이합니다. | 회전/변환 평균화의 이론과 구현은 더 어렵습니다. |
| 대표적인 예 | Bundler, COLMAP(기본값), VisualSFM | openMVG(Global SfM 파이프라인), Theia |
실제로는 두 가지 방식을 엄격하게 양자택일하기보다는, Global SfM을 사용하여 대략적인 전역 포즈를 구축한 후 점진적으로 개선하거나, Global 방식으로 신뢰도가 높은 쌍만 사용하고 나머지는 점진적으로 추가하는 하이브리드 설계도 연구되고 있습니다.
5. 삼각측량 및 트랙 관리
여러 이미지에 대한 포즈를 찾은 후, 대응점을 삼각측량하여 3D 점을 얻는 것은 기본적인 2면 기하학 연산의 확장입니다. SfM에서 중요한 것은 동일한 물리적 점이 세 개 이상의 이미지에서 관찰될 때, 이러한 대응점(트랙)을 관리하는 방법입니다.
-
특징점 매칭은 쌍으로 이루어지기 때문에, 이상적으로는 이미지 A-B와 B-C 사이의 매칭은 A-C 사이의 매칭도 의미해야 하지만, 실제 디스크립터 거리에 따라 항상 성립하는 것은 아닙니다. 삼중 초점 일관성 검사는 트랙의 품질을 보장합니다.
-
트랙에 포함된 관측치가 많을수록 삼각측량은 더욱 안정적이지만, 시차가 작은 이미지로만 구성된 트랙은 여전히 불안정한 깊이 값을 나타냅니다.
-
트랙에 잘못된 매칭이 하나라도 섞여 있으면 해당 점의 3D 위치만 왜곡되는 것이 아니라, 전체 번들 조정의 잔차에도 영향을 미칩니다. 따라서 트랙별 RANSAC 방식 검증과 큰 재투영 오차를 가진 트랙 제거가 모두 필요합니다.
6. 번들 조정으로 가는 다리
선형 삼각측량 또는 순차적 PnP를 통해 얻은 포즈와 구조는 기껏해야 초기값일 뿐입니다. 모든 이미지에 걸쳐 재투영 오차를 동시에 최소화하는 것 —
— 이것이 바로 번들 조정(Bundle Adjustment)이며, 궁극적으로 SfM의 최종 정확도를 결정하는 요소입니다. 이 최적화 기법이 희소 구조를 가지는 이유와 슈어 보완(Schur complement)이 대규모에서도 해결 가능하게 만드는 이유는 번들 조정 입문에서 자세히 다루는 계산 관련 질문입니다. 여기서 중요한 것은 사용 방식의 차이입니다. 증분 SfM은 몇 개의 이미지가 추가될 때마다 로컬 번들 조정을 수행하는 반면, 전역 SfM은 모든 전역 포즈가 확보되면 한 번에 전체 번들 조정을 수행합니다.
7. Visual-SLAM과의 차이점 및 공통점
SfM과 Visual-SLAM은 특징점 매칭, 에피폴라 기하학, PnP, 번들 조정과 같은 동일한 수학적 도구를 공유합니다. 차이점은 목표와 제약 조건에 있습니다.
| Aspect | Structure from Motion | Visual-SLAM |
|---|---|---|
| 처리 방식 | 주로 오프라인 배치 처리 | 온라인 실시간 순차 처리 |
| 입력 순서 | 순서에 상관없이 입력 가능 (여러 대의 카메라가 혼합되어도 문제없음) | 시간 순서대로 연속된 프레임을 가정 |
| 주요 목표 | 정확성과 완전성을 우선시하는 고품질 3D 재구성 | 실시간으로 현재 위치 유지 |
| 최적화 범위 | 모든 이미지에 대한 전역 번들 조정 가능 | 키프레임에 한정된 로컬/전역 최적화 (엄격한 연산 예산 제약 조건 하에서) |
| 재방문 처리 | 모든 쌍을 오프라인에서 검증 가능 | 루프 클로저를 온라인으로 감지하고 수정해야 함 |
| 대표적인 구현 | COLMAP, openMVG, Bundler | ORB-SLAM 계열, VINS 계열 |
실제로는 SfM으로 구축한 고정밀 3D 지도를 SLAM의 초기 지도 또는 스케일 참조로 사용하거나, SLAM의 키프레임 궤적을 오프라인에서 SfM으로 후처리하여 정확도를 높이는 등의 조합이 흔히 사용됩니다. 이 두 기술은 경쟁 관계가 아니라 오프라인/온라인 시간 축을 기준으로 서로를 보완합니다.
8. 대표적인 구현 사례
-
COLMAP: 증분 SfM을 중심으로 하는 이 기술은 현재 가장 널리 참조되고 있는 연구 및 상용 구현 사례로, 특징 추출, 매칭, 기하학적 검증, 재구성부터 번들 조정(bundle adjustment) 및 다중 시점 스테레오(Multi-View Stereo)까지 일관된 파이프라인을 제공합니다.
-
openMVG(Open Multiple View Geometry): 증분 및 전역 SfM 파이프라인을 모두 구현하는 라이브러리입니다. 밀집 재구성을 위해 openMVS와 함께 사용되는 경우가 많습니다.
-
Bundler: Photo Tourism의 결과를 공개하고 이후 많은 연구의 비교 기준이 된 선구적인 증분 SfM 구현체입니다.
-
Meshroom (AliceVision): SfM부터 MVS, 텍스처링까지 모든 과정을 한 번에 처리하는 GUI 기반의 오픈 소스 사진측량 도구입니다.
라이브러리를 선택할 때 "최신이 더 정확하다"는 기준은 적절하지 않습니다. 처리할 이미지 수, GPU/CPU 리소스, EXIF 초점 거리의 신뢰성, 매칭 전략(완전 탐색/순차적/어휘 트리), 그리고 MVS 및 텍스처 생성에 이르기까지 일관된 단일 파이프라인을 사용할지 여부를 기준으로 판단해야 합니다.
9. 어려운 조건 및 일반적인 오류 사례
-
텍스처가 부족하거나 반복적인 장면: 균일한 벽, 타일 모양의 표면, 들판의 작물 줄기 등은 대응점이 전혀 없거나 빈번하게 불일치를 발생시킵니다.
-
시차가 매우 작은 이미지 세트: 망원 렌즈로 촬영한 원거리 장면 사진은 삼각측량을 불안정하게 만들어 큰 깊이 오차를 유발합니다.
-
움직이는 물체와 조명 변화: 관광지 사진 세트에는 사람, 차량, 계절 또는 시간대별 변화가 섞여 있어 정적인 장면이라는 가정을 위반하는 대응점이 발생합니다.
-
분리된 이미지 클러스터: 촬영된 이미지가 겹치는 시야가 없는 두 그룹으로 나뉘는 경우, SfM은 이를 하나의 일관된 좌표계로 통합할 수 없으며, 재구성 결과가 여러 개의 분리된 조각으로 나뉘게 됩니다.
-
대칭적인 장면: 예를 들어, 대칭적인 건물 외관은 기하학적으로는 일관되지만 물리적으로는 잘못된 대칭 해로 수렴할 수 있습니다.
10. 실용적인 선택
-
촬영이 완전히 순서대로 이루어진 경우(비디오 또는 로봇의 연속 프레임), 증분 SfM의 초기 쌍 선택이 간편해지며, COLMAP의 기본 파이프라인으로도 충분한 경우가 많습니다.
-
인터넷 관광 사진과 같이 촬영 순서와 중첩 여부를 알 수 없는 대규모 이미지 모음의 경우, Global SfM의 확장성이 유리한 경향이 있습니다.
-
실시간 성능이 요구되는 애플리케이션(로봇, AR, 자동차)의 경우 SfM 대신 Visual-SLAM 또는 VIO를 고려하십시오. SfM의 주요 적용 분야는 오프라인 고정밀 재구성입니다.
-
조밀한 3D 형상(메시 또는 텍스처 모델)이 필요한 경우, SfM의 희소 포인트 클라우드와 포즈에서 시작하여 다중 시점 스테레오로 넘어가십시오.
11. 요약
Structure from Motion(SfM)은 Incremental SfM 또는 Global SfM 전략을 사용하여 특징점 매칭과 기하학적 검증을 통해 순서가 지정되지 않은 이미지 세트에서 카메라 포즈와 3D 구조를 동시에 복원하는 기술입니다. 증분 방식은 안정적이지만 드리프트에 취약하고, 전역 방식은 드리프트에 강하지만 이상치에 민감합니다. 즉, 상충 관계가 대칭적입니다. 두 방식 모두 최종 정확도는 번들 조정에 의해 결정되며, 이는 다른 시간 축에서 작동하는 자매 기술인 Visual-SLAM과 고밀도 재구성 기술인 Multi-View Stereo에 직접 연결됩니다.
재구성된 SfM 거리는 자동으로 미터 단위로 표시되나요?
단안 재구성은 스케일 모호성을 유지합니다.
알려진 치수 또는 위치 정보를 사용하여 미터법 척도를 설정합니다.참고 문헌
- Snavely, Seitz & Szeliski, Photo Tourism: Exploring Photo Collections in 3D (SIGGRAPH 2006)
- Schönberger & Frahm, Structure-from-Motion Revisited (CVPR 2016)
- Moulon, Monasse & Marlet, Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion (ICCV 2013)
- Wilson & Snavely, Robust Global Translations with 1DSfM (ECCV 2014)
- COLMAP 공식 문서
- openMVG 공식 문서
- Hartley & Zisserman, 컴퓨터 비전에서의 다중 시점 기하학(저자 공식 페이지)
댓글
먼저 로그인해 주세요.
아직 데이터가 없습니다.