1. 개요[편집]
| Structure from Motion 움직임으로부터의 구조 복원 | |
|---|---|
| 약칭 | SfM |
| 입력 | 같은 장면을 찍은 영상 여러 장 — 순서도, 자세도, 초점거리도 몰라도 된다 |
| 출력 | 카메라 자세 $\{R_i,\mathbf t_i\}$ + 희소 3차원 점군 |
| 근본 한계 | 단안이면 절대 스케일을 원리적으로 알 수 없다 |
| 두 진영 | 점진적(incremental) vs 전역(global) |
| 대표 구현 | COLMAP · OpenMVG · Bundler 계열 |
관광객이 찍은 콜로세움 사진 1만 5천 장을 인터넷에서 긁어모아 놓으면, 아무도 카메라 위치를 적어 두지 않았는데도 콜로세움의 3차원 모형이 나온다. 그게 SfM이다.
Structure from Motion(SfM)은 여러 시점에서 찍은 2차원 영상들만으로 촬영 카메라의 자세와 장면의 3차원 구조를 동시에 복원하는 문제다. 이름의 「motion」은 카메라가 움직였다는 뜻이고 「structure」는 장면의 형상이다. 시점이 여러 개면 같은 점이 서로 다른 화소에 찍히고, 그 어긋남이 카메라 배치와 점 깊이를 동시에 구속한다 — 이 구속을 전부 모아 푸는 것이 전부다.
스테레오 비전과의 차이가 정의를 가장 잘 설명한다. 스테레오는 자세를 이미 알고 밀집 시차를 구하는 문제이고, SfM은 자세를 모르는 대신 희소한 점만 다룬다. 그래서 실제 파이프라인에서는 SfM이 먼저 자세를 만들고, 그 자세를 받아 다중 시점 스테레오(MVS)가 밀집 모형을 만든다. SLAM과의 차이는 시간 제약이다 — SLAM은 프레임이 들어오는 속도로 처리해야 하고, SfM은 사진 뭉치를 던져 놓고 밤새 돌려도 된다. 이 한 가지 차이가 알고리즘 선택 전부를 바꾼다.1
2. 파이프라인[편집]
교과서적 순서는 여섯 단계다. 각 단계가 실패하는 방식이 서로 다르다는 점이 중요하다.
- 특징 검출과 기술 — 특징점 검출로 반복 검출 가능한 점을 뽑고 스케일·회전 불변 기술자를 붙인다. 사진마다 수천 개.
- 매칭 — 영상 쌍마다 기술자를 대응시킨다. 사진 장이면 쌍이 개라 순진하게 하면 에서 5천만 쌍이다. 그래서 시각 단어 가방·어휘 트리로 후보 쌍을 먼저 좁힌다.
- 기하 검증 — 매칭된 쌍마다 RANSAC으로 에피폴라 기하(기초행렬·본질행렬)나 호모그래피를 맞추고, 내점이 충분치 않으면 그 쌍을 버린다. 살아남은 쌍들의 그래프가 장면 그래프(scene graph)이며 이후 모든 결정의 기반이 된다.
- 초기화 — 기선이 충분히 길고 내점이 많은 쌍 하나를 골라 상대자세 를 뽑고 두 시점만으로 첫 점군을 만든다.
- 증분 등록 — 이미 복원된 3차원 점을 보고 있는 새 사진을 하나씩 붙인다. 3D-2D 대응으로 자세를 푸는 문제(PnP)를 RANSAC 안에서 풀고, 새로 보이는 점을 삼각측량으로 추가한다.
- 번들 조정 — 새 사진을 몇 장 붙일 때마다 번들 조정으로 자세와 점을 함께 정련한다. 이 단계를 빼면 오차가 즉시 눈덩이가 된다.
상대자세를 뽑는 대수(8점·5점 알고리즘, 에서 를 꺼내는 네 개의 해와 가시성 검사)는 에피폴라 기하 문서가 전부 다루므로 여기서는 반복하지 않는다.
이 중 2~3단계가 전체 시간의 대부분을 먹는다. 사진이 두 배가 되면 후보 쌍은 네 배이므로 순진한 전수 매칭은 곧 벽에 부딪히고, 그래서 규모가 커지면 매칭 자체를 검색 문제로 바꾼다. 기술자들을 계층적으로 군집화한 어휘로 영상을 히스토그램 하나로 요약하고 역색인으로 유사 영상 상위 개만 꺼내 실제 매칭을 시도하는 방식이 표준이다. 매칭 도중에 초반 대응 수가 임계 이하인 쌍을 조기에 포기하는 선점적 매칭, GNSS나 촬영 시각으로 후보를 좁히는 방법도 흔히 함께 쓴다.
기하 검증에서 살아남은 쌍만 남긴 장면 그래프는 이후 모든 결정의 기반이다. 이 그래프가 연결되어 있지 않으면 재구성이 여러 조각으로 나오고, 다리 역할을 하는 간선이 하나뿐이면 그 간선의 오차가 두 덩어리 사이의 상대 자세를 통째로 결정한다. 「사진을 어디에 더 넣어야 하나」의 답은 언제나 이 그래프에서 읽는다.
3. 계보 — 인수분해에서 증분 재구성까지[편집]
SfM의 역사는 「무엇을 가정할 수 있는가」의 역사다.
- 1981년, 본질행렬. 보정된 두 시점의 상대자세를 8개 대응점의 선형 문제로 푸는 결과가 나온다. 두 시점 문제가 대수적으로 닫힌 순간이며, 오늘날까지 모든 SfM의 첫 단추다.
- 1992년, 인수분해법. 아핀(직교투영 근사) 카메라 아래에서 모든 관측을 하나의 측정행렬로 쌓으면 그 계수가 3이 되고, 특이값 분해 한 번으로 운동과 형상을 동시에 분리해 낼 수 있다. 반복도, 초기값도, 비선형 최적화도 필요 없는 아름다운 결과였다. 이후 사영 카메라로의 확장도 나왔다.
- 그런데 인수분해법이 이기지 못했다. 이유가 정확히 하나다 — 측정행렬에 빈칸이 없어야 한다. 즉 모든 점이 모든 영상에서 보여야 하는데, 현실 데이터에서 가시성 행렬은 거의 전부 빈칸이다(가림·시야 밖·매칭 실패). 결측 데이터를 채우는 변형들이 나왔지만 강건성에서 증분 방식을 따라가지 못했다.
- 2000년대 중반, 인터넷 사진. 관광지 사진을 긁어모아 재구성하는 시스템들이 등장하며 「순서도 자세도 초점거리도 모르는 사진 뭉치」가 표준 입력이 됐고, 파이프라인의 골격(매칭 → 기하 검증 → 증분 등록 → BA)이 이때 굳었다.
- 2010년대, 성숙기. 장면 그래프 관리·다음 시점 선택·재삼각측량·이상치 필터링 같은 「공학적 세부」를 체계적으로 정리한 구현들이 나오면서, SfM은 연구 주제에서 도구로 넘어갔다. 오늘날 오픈소스 SfM 파이프라인은 사진 수천 장을 사람 손 없이 처리하는 것이 기본 사양이다.
4. 두 시점 초기화 — 첫 걸음이 전체를 정한다[편집]
초기 쌍 선택이 SfM에서 가장 저평가된 단계다. 나쁜 초기 쌍을 고르면 그 뒤 수천 장을 붙여도 회복되지 않는다. 좋은 초기 쌍의 조건은 서로 상충한다.
- 내점이 많아야 한다 — 매칭이 신뢰할 만하다는 뜻.
- 삼각측량 각이 커야 한다 — 두 시선의 교차각이 작으면 깊이가 결정되지 않는다. 실무 임계는 보통 3~5° 이상.
- 호모그래피로 설명되지 않아야 한다 — 내점의 대부분이 하나의 호모그래피로 설명되면 그 쌍은 순수 회전이거나 평면 장면이고, 둘 다 구조를 복원할 수 없다.
세 번째 검사가 특히 실질적이다. 같은 대응 집합에 와 를 둘 다 맞춰 보고 모형 선택 점수를 비교해, 가 이기면 그 쌍을 초기화에 쓰지 않는다. 순수 회전에서 를 억지로 추정하면 이동량이 거의 0인 상태로 나눗셈을 하게 되어 점군이 무한대로 날아간다.
5. 증분 등록과 삼각측량[편집]
새 사진을 붙이는 과정은 겉보기보다 조심스럽다.
등록. 새 사진의 특징점 중 이미 3차원 좌표를 가진 것들과의 대응을 모아 자세를 푼다. 내부파라미터를 알면 최소 3점(P3P), 모르면 6점 이상이 필요하고, 오대응이 있으므로 RANSAC 안에서 돌린다. 내점 수가 임계 이하면 그 사진은 등록하지 않고 나중으로 미룬다 — 억지로 붙이는 것이 이 파이프라인에서 가장 흔한 사고 원인이다.
삼각측량. 두 개 이상의 시선을 교차시켜 새 점을 만든다. 잡음이 있으면 시선들이 한 점에서 만나지 않으므로, 실제로는 재투영 오차를 최소화하는 점을 찾는다. 선형 해(각 관측이 주는 두 개의 방정식을 모아 특이값 분해로 푸는 형태)를 초기값으로 쓰고 비선형으로 정련하는 것이 표준이다. 여기서 각도 검사와 양의 깊이 검사(모든 카메라 앞에 있는가)를 통과하지 못한 점은 만들지 않는다.
재삼각측량. 초기에는 각이 작아 버렸던 점들이, 카메라가 더 붙고 자세가 정확해진 뒤에는 성공적으로 삼각측량된다. 그래서 성숙한 구현은 등록-BA 사이클을 돌면서 버려진 관측을 주기적으로 다시 시도한다. 이 한 단계가 최종 점군 밀도를 눈에 띄게 올린다.
다음 시점 선택. 어떤 사진을 다음에 붙일지는 이미 복원된 점을 많이 보면서 그 점들이 화면에 고르게 퍼진 사진을 선호하는 점수로 정한다. 점이 화면 한구석에만 몰려 있으면 자세 추정의 조건수가 나쁘다.
6. 점진적 SfM과 전역 SfM[편집]
같은 문제를 푸는 두 철학이 있고, 트레이드오프가 명확하다.
| 점진적 SfM | 전역 SfM | |
|---|---|---|
| 순서 | 사진을 한 장씩 붙이며 BA 반복 | 모든 상대자세를 먼저 구해 한꺼번에 정렬 |
| 강건성 | 매우 높다 — 매 단계에서 이상치를 걸러낼 기회 | 낮다 — 잘못된 상대자세 하나가 전역 정렬을 오염 |
| 계산량 | BA를 수백 번 반복해 초선형으로 증가 | 회전 평균화가 상대적으로 저렴, BA는 마지막에 한 번 |
| 드리프트 | 누적됨. 큰 루프에서 눈에 보인다 | 원리적으로 작다 — 모든 구속을 대칭적으로 사용 |
| 순서 의존성 | 있다. 초기 쌍과 등록 순서가 결과를 바꾼다 | 없다 |
| 실무 위치 | 사실상 표준 | 항공·규칙적 촬영처럼 매칭이 깨끗한 데이터에서 강함 |
전역 SfM의 골격은 두 단계다. 먼저 상대 회전 들을 모아 를 만족하는 전역 회전을 찾는 회전 평균화(rotation averaging)를 푼다 — 회전만 다루므로 스케일 문제가 없고, 삼중항(triplet)의 회전 곱이 단위행렬에 가까운지로 이상치 간선을 걸러낼 수 있어 의외로 강건하다. 그다음 이동 벡터를 정렬하는 이동 평균화가 진짜 난관이다. 상대 이동은 방향만 알고 크기를 모르므로(각 쌍마다 스케일이 미지수) 문제가 훨씬 나쁜 조건이 되고, 여기서 전역 SfM의 강건성이 무너진다.
절충안도 많다. 삼중항이나 부분 집합을 먼저 재구성하고 병합하는 계층적 SfM, 회전만 전역으로 풀고 이동·구조는 증분으로 붙이는 혼합형 등이다. **결국 전역 SfM이 이기는 조건은 「상대자세 추정이 신뢰할 만할 때」**이고, 인터넷 사진처럼 지저분한 데이터에서는 점진적 방식이 아직 실질적 승자다.2
7. 스케일 모호성과 드리프트[편집]
SfM이 복원하는 것은 닮은꼴까지의 구조다. 전체를 회전·이동·확대해도 모든 영상이 정확히 똑같이 나오므로, 단안 SfM의 해는 유사변환군의 7자유도만큼 불확정하다(번들 조정의 게이지 자유도가 바로 이것이다). 실용적으로는 「이 모형이 몇 미터인가」를 알 수 없다는 뜻이며, 처방은 외부 정보를 넣는 것뿐이다.3
- 장면 안 두 점의 실제 거리를 하나 알려 준다(자 하나 놓고 찍기 — 문화재 스캔의 국룰).
- GNSS나 지상 기준점을 카메라 위치에 사전정보로 얹는다(항공·드론 촬영의 표준).
- 스테레오 리그로 찍는다 — 기선이 스케일을 준다.
- 관성센서를 붙인다 — 가속도의 절대 크기가 스케일을 준다.
내부파라미터까지 미지수로 두고 아무 제약도 걸지 않으면 불확정성이 사영변환 15자유도까지 커진다. 여기서 「자기보정」으로 유사변환까지 좁히는 이야기는 카메라 보정 문서로 넘긴다.
드리프트는 이와 다른 문제다. 각 등록 단계의 작은 오차가 누적되어, 긴 통로를 따라 촬영한 데이터의 끝에서는 형상이 완만하게 휘고 스케일도 서서히 변한다. 전역 BA가 이걸 대부분 잡아 주지만, 잡아 주는 근거는 「멀리 떨어진 두 사진이 같은 점을 본다」는 관측이 존재할 때뿐이다. 그런 관측이 없으면(한 방향으로만 쭉 찍은 데이터) 전역 BA조차 휘어진 형상을 그대로 유지하며 잔차만 줄인다. 촬영 계획에서 루프를 닫고 교차 촬영을 넣으라는 조언이 여기서 나온다.
8. 축퇴 구성 — 조용히 틀리는 경우들[편집]
| 구성 | 무슨 일이 벌어지나 | 처방 |
|---|---|---|
| 순수 회전(제자리 팬·틸트) | 기선이 0이라 삼각측량 불가. 추정이 수치적으로 폭발 | 모형 선택으로 검출, 파노라마로 처리 |
| 평면 장면(벽·바닥·항공 저고도) | 의 해가 유일하지 않음(내점이 로 다 설명됨) | 를 분해해 상대자세를 얻거나 평면 가정 명시 |
| 좁은 기선 | 깊이 방향 오차가 폭발, 점군이 시선 방향으로 늘어짐 | 삼각측량 각 임계, 프레임 건너뛰기 |
| 반복 무늬(창문·타일·펜스) | 확신 있게 틀린 매칭 → 건물이 겹쳐 접힘 | 기하 검증 강화, 대칭 구조 탐지 |
| 대칭 건축물 | 반대편 벽이 같은 벽으로 융합 | 삼중항 일관성, GNSS 사전정보 |
| 오토포커스·줌 | 사진마다 초점거리가 다른데 하나로 묶음 | 사진 그룹별 내부파라미터 분리 |
반복 무늬와 대칭이 특히 고약하다. 무늬가 없으면 매칭이 실패해 「모르겠다」는 신호가 나오지만, 반복 무늬는 모든 신뢰도 지표를 통과하는 잘못된 대응을 만든다. 유리 커튼월 건물의 SfM 결과가 유독 자주 접히는 이유다.
9. 이후 단계 — MVS와 그 너머[편집]
SfM의 산출물은 자세와 희소 점군이다. 여기서 갈라진다.
- 다중 시점 스테레오(MVS) — 자세를 상수로 받아 화소 단위 깊이를 복원한다. 평면 스윕이나 패치 기반 전파를 쓰며, 결과는 밀집 점군이다. 그다음 메시 생성과 텍스처 매핑으로 넘어간다.
- 포토그래메트리 — 위 전체를 계측 목적으로 쓰는 공학 분야. SfM+MVS가 그 안의 알고리즘 계층이고, 포토그래메트리는 거기에 기준점·정확도 검증·좌표계 정의를 붙인다. 「모형이 예뻐 보인다」와 「±2 cm를 보증한다」의 차이다.
- 신경 표현 — 장면을 신경망 필드나 가우시안 집합으로 들고 렌더링 잔차로 최적화하는 계열. 흥미로운 점은 이들 대부분이 SfM으로 얻은 자세를 입력으로 요구한다는 것이다. 표현이 바뀌어도 자세를 만드는 문제는 여전히 SfM의 몫이다.
10. 현업에서의 현실[편집]
- 촬영이 알고리즘보다 중요하다. 인접 사진 간 중첩 70~80%, 노출 고정, 오토포커스 끄기, 루프 닫기. 이 네 개를 지킨 데이터는 어떤 구현으로도 되고, 안 지킨 데이터는 어떤 구현으로도 안 된다.
- 매칭이 전체 시간의 대부분을 먹는다. 사진 수가 두 배면 매칭 쌍은 네 배다. 어휘 트리로 후보를 좁히는 것이 정확도 문제가 아니라 생존 문제다.
- 결과가 여러 조각으로 나뉘어 나오면(모형 두세 개) 그건 장면 그래프가 끊어졌다는 뜻이다. 사진을 더 넣을 자리는 그 끊긴 지점이다.
- 하늘·수면·움직이는 사람은 정적 장면 가정을 위반한다. 마스킹 한 번이 파라미터 튜닝 열 번보다 낫다.
- 「사진 몇 장 있으면 되나요」에 대한 정직한 답은 각 3차원 점이 최소 3장, 되도록 5장 이상에서 보여야 한다는 것이다. 두 장에만 보이는 점은 자기 좌표를 스스로 맞춘 것이라 검증되지 않는다.
11. 관련 문서[편집]
- 에피폴라 기하 · 호모그래피 · RANSAC · 삼각측량
- 번들 조정 · 카메라 보정 · 오도메트리 · SLAM
- 스테레오 비전 · 특징점 검출 · 광류 · 이미지 정합
- 점군 정합 · 메시 생성 · 포토그래메트리 · COLMAP
- 특이값 분해 · 최소자승법 · 리 군 · 회전행렬
12. Footnotes[편집]
-
그래서 두 분야는 같은 수식을 쓰면서 정반대의 미덕을 갖는다. SLAM 논문은 “30 Hz에서 돈다”를 자랑하고 SfM 논문은 “사진 10만 장을 처리했다”를 자랑한다. 요즘은 경계가 흐려져서 SLAM이 오프라인 전역 BA를 돌리고 SfM이 실시간 증분 구현을 내놓는다. 굳이 한 문장으로 구분하면 입력이 스트림이면 SLAM, 뭉치면 SfM이다. ↩
-
관광지 사진 데이터셋이 이 분야를 밀어붙인 데는 이유가 있다. 연구자가 직접 찍은 데이터는 아무리 노력해도 「연구자가 잘 찍은 데이터」가 되어 버리는데, 인터넷 사진은 노출·초점거리·시간대·심지어 계절까지 제멋대로다. 이 지옥에서 돌아가는 코드는 현장에서도 돌아간다. 반대로 실험실 회전대에서만 검증한 SfM은 밖에 나가면 대체로 첫날에 무너진다. ↩
-
스케일을 모른다는 것이 얼마나 실전적인 문제인지는 문화재 실측 현장에 한 번 가 보면 안다. 100장을 찍고 정교한 모형을 만들었는데 “이게 몇 미터냐”에 답할 수 없어서 다시 가서 자를 놓고 두 장을 더 찍는 일이 실제로 벌어진다. 그래서 요즘 현장 수칙 1번은 “일단 스케일바부터 놓는다”다. ↩