Contents — find the section you need

Structure from Motion은 특징점들만 연결된 희소한 3D 포인트 클라우드를 복원합니다. 건물의 외곽선이나 표면의 모서리는 식별할 수 있지만, 벽이나 곡면은 거의 포인트가 없어 결과물을 그대로 "형태"로 사용할 수 없습니다. 반면, Multi-View Stereo(MVS)는 SfM이나 카메라 캘리브레이션을 통해 이미 알려진 카메라 포즈를 기반으로 이미지의 거의 모든 픽셀에 대한 깊이를 추정하여 조밀한 포인트 클라우드 또는 메쉬를 생성합니다. 포즈 추정은 SfM의 역할이고, 조밀한 형태 복원은 MVS의 역할이라는 역할 분담은 이 두 기술의 관계를 이해하는 출발점입니다.

0. 30초 요약

  • MVS(Modified Veracity Score)는 알려진 포즈를 가진 여러 이미지로부터 픽셀 단위로 조밀한 깊이 정보를 추정하고, 이를 포인트 클라우드 또는 메시로 통합하는 기술입니다. 이는 SfM(Structure from Motion)의 희소한 포인트 클라우드를 조밀한 형태로 채우는 후속 공정입니다.

  • MVS의 핵심 원리는 사진 일관성입니다. 3D 포인트의 깊이가 정확하다고 가정하면, 해당 포인트를 촬영한 여러 이미지에서 대응하는 픽셀들은 유사한 색상과 밝기를 가져야 합니다.

  • 대표적인 고전적인 접근 방식으로는 깊이 후보들을 평면으로 스캔하면서 일관성을 평가하는 평면 스윕(Plane-Sweep) 방식과 작은 패치를 반복적으로 확장하고 필터링하는 패치 기반 MVS(PMVS) 방식이 있습니다.

  • 최근에는 컨볼루션을 통해 비용 볼륨을 처리하는 딥러닝 기반 방식(예: MVSNet)이 정확도와 견고성 면에서 고전적인 방식을 점점 능가하고 있습니다.

  • 생성된 다중 시점 깊이 맵은 포인트 클라우드로 직접 사용되거나, TSDF 융합 또는 포아송 표면 재구성을 통해 메시로 변환됩니다. 스테레오 또는 깊이 카메라를 이용한 실시간 깊이 추정은 사진 일관성 원리를 공유하지만, 시점 개수, 오프라인 처리 가능성, 연산 능력 측면에서 차이가 있습니다.

1. 입력값은 무엇이며, 어떤 결과를 도출하는가?

MVS의 입력은 SfM 또는 카메라 캘리브레이션을 통해 이미 얻은 다음 정보입니다.

  • 각 이미지(i)의 카메라 포즈 및 내부 파라미터(P_i = K_i[R_i\mid\mathbf{t}_i])(알려진 것으로 간주)
  • 대상 장면을 촬영한 이미지 세트(\{I_1,\dots,I_N\})

출력은 각 이미지(또는 선택된 참조 이미지 세트)에 대한 조밀한 깊이 맵(\{D_i\}) 또는 이를 통합하여 얻은 포인트 클라우드/메시입니다. SfM의 출력인 희소 포인트 클라우드와 카메라 포즈가 "골격"이라면, MVS는 그 골격에 "살"을 붙이는 과정입니다. 포즈를 알 수 없는 상태에서는 조밀한 형상을 복원할 수 없습니다. MVS는 항상 SfM 또는 캘리브레이션 이후에 위치하므로, 처음부터 이 순서를 염두에 두는 것이 중요합니다.

2. 희소 포인트 클라우드로는 충분하지 않은 이유는 무엇일까요?

SfM이 밀집 포인트 클라우드를 직접 출력하지 않는 이유는 입력 데이터가 특징점 매칭에 의존하기 때문입니다. 특징점 검출 입문에서 살펴본 것처럼, 모서리나 가장자리와 같은 "특징적인" 픽셀만 안정적으로 검출하고 매칭할 수 있습니다. 평평한 벽처럼 질감이 균일한 영역에는 특징점이 전혀 없으므로 SfM의 3D 포인트 클라우드에는 큰 공백이 생깁니다.

반면, MVS는 포즈가 이미 알려져 있다는 강력한 제약 조건을 활용할 수 있으므로 특징점이 전혀 필요하지 않습니다. 어떤 픽셀이든 "이 깊이 후보가 다른 이미지에서도 일관성을 유지하는가?"를 직접 평가할 수 있습니다. 이를 통해 최소한의 패턴이나 음영만 있다면 질감이 부족한 벽에서도 깊이를 추정할 수 있습니다(완전히 특징이 없는 표면은 여전히 약점으로 남아 있습니다. 이에 대해서는 아래에서 자세히 설명합니다).

3. 핵심 원칙: 사진 일관성

거의 모든 MVS 방법은 사진 일관성이라는 가정에 기반합니다. 참조 이미지에서 픽셀 \mathbf{u}에 해당하는 3D 점의 깊이가 d라고 가정해 보겠습니다. 이 3D 점은 다음과 같이 복원될 수 있습니다.

\mathbf{X}(\mathbf{u}, d) = \pi_{\text{ref}}^{-1}(\mathbf{u}, d)

그리고 사진 일관성 가정에 따라, 이 점을 다른 이미지 k에 재투영했을 때, 픽셀 \mathbf{u}' = \pi_k(\mathbf{X}(\mathbf{u},d))에서의 색상과 밝기는 I_{\text{ref}}(\mathbf{u})에 가까워야 합니다. 이는 스테레오 카메라의 시차 탐색을 2개의 시점에서 N개의 시점으로 일반화한 것으로 이해하는 것이 가장 쉽습니다. 시차 탐색은 심도 카메라 작동 방식 및 스테레오 카메라 작동 방식에서 다룬 바와 같이, 밝기를 일치시켜 좌우 이미지 간의 대응 픽셀을 찾는 과정입니다. 실제로, 두 눈 스테레오 카메라의 깊이는 다음과 같은 간단한 공식으로 계산됩니다.

Z = \frac{fB}{d_{\text{disp}}}

여기서 초점 거리 f, 베이스라인 길이 B, 그리고 시차 d_{\text{disp}}가 사용됩니다. MVS는 바로 이러한 "시차를 찾고 깊이로 변환하는" 연산을, 어떤 배열의 카메라든 개수에 관계없이 확장한 것입니다.

일반적인 구현에서는 픽셀 주변의 작은 윈도우 W를 사용하고 정규화된 상호 상관(NCC)으로 일치도를 측정합니다.

\mathrm{NCC}(\mathbf{u}, d) = \frac{\sum_{\mathbf{x}\in W}\left(I_{\text{ref}}(\mathbf{x})-\bar I_{\text{ref}}\right)\left(I_k(\mathbf{x}')-\bar I_k\right)} {\sqrt{\sum_{\mathbf{x}\in W}\left(I_{\text{ref}}(\mathbf{x})-\bar I_{\text{ref}}\right)^2}\sqrt{\sum_{\mathbf{x}\in W}\left(I_k(\mathbf{x}')-\bar I_k\right)^2}}

\mathbf{x}'은 깊이 후보 d에 로컬 평면이 있다고 가정하고 \mathbf{x}을 이미지 k에 매핑하여 얻은 대응점입니다. \mathrm{NCC}은 밝기 스케일 및 오프셋 변화에 강건하므로 이미지 간의 노출이나 조명 차이가 있더라도 작동합니다. 모든 이미지 쌍과 모든 깊이 후보에 대해 이 일치도 점수를 계산하고 가장 높은 점수를 받은 깊이를 선택하는 것이 MVS의 계산 골격입니다.

4. 기본 파이프라인

Diagram 1 · Use the button to switch views
The basic MVS pipeline A diagram showing the flow from a set of images with known camera poses, through estimating each image's dense depth map via either Plane-Sweep or Patch-based methods, to fusing multi-view depth maps into a dense point cloud or mesh. Image set +known camera poses Plane-Sweepsweep depth candidates,evaluate photo-consistency Patch-basedexpand patches,filter by visibility Dense depth mapfor each image Depth mapfusion Point cloud/mesh

고전적인 MVS 기본 형태는 2단계 구조입니다. 먼저 각 이미지의 조밀한 깊이 맵을 찾기 위해 평면 스윕(Plane-Sweep) 또는 패치 기반(Patch-based) 방식을 선택한 다음, 두 번째 단계에서 이를 하나의 일관된 3D 형태로 융합합니다. 최신 딥러닝 기반 방법들은 대부분 이와 동일한 2단계 구조를 따르면서 깊이 추정의 내부를 신경망으로 대체합니다.

5. 평면 스윕 방식

평면 스윕 방식은 1996년 CVPR에서 Collins가 제안한 공간 스캐닝 다중 이미지 매칭 접근 방식에서 유래했습니다. 이 방식은 기준 카메라의 광축에 수직(또는 장면에 따라 방향이 지정됨)인 기준 카메라의 시야 절두체 내에 일정한 간격으로 배치된 가상 평면을 정렬하고, 스윕하면서 평가합니다. 얕은 곳에서 깊은 곳으로의 깊이 탐색.

어떤 깊이(d)에 평면이 있다고 가정하면, 해당 평면의 점들은 호모그래피 변환을 통해 참조 이미지에서 다른 이미지로 매핑될 수 있습니다. 호모그래피 입문에서 다룬 H = K_k(R+\mathbf{t}\mathbf{n}^\mathsf{T}/d)K_{\text{ref}}^{-1} 형태의 변환을 사용하여, 다른 이미지 I_k를 참조 시점으로 워핑합니다. 워핑된 이미지와 참조 이미지 사이의 모든 픽셀에서 사진 일관성(이전 섹션의 NCC와 같은)을 계산하고, 각 깊이 후보에 대한 비용을 누적합니다.

d^*(\mathbf{u}) = \arg\min_{d\in\mathcal{D}} \sum_{k} \rho\left(1-\mathrm{NCC}_k(\mathbf{u},d)\right)

모든 깊이 후보에 대한 비용이 계산되면, 픽셀 단위로 최소 비용이 드는 깊이를 선택합니다. 이는 이산 깊이 탐색으로, GPU 병렬화에 적합하여 여러 깊이 가설을 한 번에 평가할 수 있습니다. 많은 구현에서 이를 준지역적 비용 집계(정규화와 유사한 방식)와 결합합니다. 준전역 매칭(Semi-Global Matching)은 텍스처가 부족한 영역에서도 인접 정보로부터 깊이를 부드럽게 보간합니다. COLMAP의 밀집 재구성 모듈 또한 평면 스윕(Plane-Sweep)과 유사한 접근 방식을 채택하여 픽셀 단위 뷰 선택(Pixelwise View Selection)을 최적화합니다. Schönberger 등이 ECCV 2016에 발표한 논문이 대표적인 예입니다.

6. 패치 기반 방식(PMVS)

패치 기반 방식은 픽셀 단위로 깊이를 스캔하는 대신, 장면 표면을 덮는 작은 직사각형 패치들을 직접 생성하고 확장합니다. 2010년 IEEE TPAMI에 Furukawa와 Ponce가 발표한 PMVS(Patch-based Multi-View Stereo)가 대표적인 예입니다.

처리 과정은 "매칭, 확장, 필터링"의 세 단계를 반복합니다.

  1. 매칭: 먼저 SIFT 또는 Harris 코너와 같이 특징점으로 쉽게 감지할 수 있는 대응점들로부터 소수의 초기 패치를 생성합니다. 각 패치는 중심 위치, 법선 방향, 그리고 깊이 정보를 포함합니다. 해당 지점을 볼 수 있는 이미지 집합(가시성).
  2. 확장: 초기 패치 주변으로 새로운 패치를 전파하여 커버 영역을 주변 픽셀까지 확장합니다. 전파된 각 패치의 위치와 법선은 주변 이미지와의 사진 일관성을 최대화하도록 로컬에서 최적화됩니다.

  3. 필터링: 가시성 모순이 있는 패치(예: 패치가 다른 패치 뒤에 있음에도 불구하고 보이는 경우) 또는 사진 일관성이 낮은 패치를 제거합니다.

픽셀별로 깊이를 독립적으로 결정하는 Plane-Sweep과 달리, PMVS는 패치 법선의 추가 정보를 가지고 있으므로 경사면에서 더 높은 재구성 정확도를 보이는 경향이 있습니다. 반면에, 반복적인 확장 및 필터링을 기반으로 하기 때문에 초기 패치 수가 적거나 텍스처가 좋지 않은 영역에서는 확장이 잘 진행되지 않아 재구성에 구멍이 생길 수 있습니다.

7. 딥러닝 기반 방법: 비용-볼륨 개념

최근 몇 년 동안, 깊이별 후보 일치도를 나타내는 방법들이 등장했습니다. (NCC와 같은) 수작업으로 설계된 측정 지표이지만, 컨볼루션 신경망으로 학습된 특징과 비용 볼륨을 사용하는 방식이 주류로 자리 잡았습니다. 대표적인 예로 Yao 등이 ECCV 2018에서 발표한 MVSNet이 있습니다.

MVSNet은 학습된 특징 추출기를 통해 각 이미지에서 특징 맵을 추출하고, 기준 카메라의 시야 절두체 내에 이산적인 깊이 평면이 있다고 가정하며, 미분 가능한 호모그래피 워프를 통해 각 이미지의 특징 맵을 기준 시점에 정렬합니다. 여러 이미지의 특징 맵 간의 분산을 단일 비용 볼륨으로 결합하고, 3D 컨볼루션으로 정규화한 다음, 깊이 방향을 따라 소프트맥스를 사용하여 깊이를 회귀합니다. 기본 골격은 Plane-Sweep의 "깊이 후보를 탐색하고 평가"하는 아이디어를 따르지만, 기존 방식과의 차이점은 사진 일관성 계산 자체가 학습 가능해진다는 점입니다.

학습 기반 방식은 수작업으로 설계된 사진 일관성 측정 지표가 어려움을 겪는 조건, 즉 반복적인 패턴과 같은 상황에서 더 견고한 성능을 보이는 경향이 있습니다. 텍스처가 약한 경우에도 훈련 데이터에 유사한 상황이 포함되어 있다면 성능이 유지됩니다. 반면, 훈련 데이터셋의 분포에서 크게 벗어난 장면(익숙하지 않은 재질, 극단적인 조명)에서는 성능이 저하될 수 있습니다.

8. 깊이 맵 융합 및 메시 생성

다중 시점 깊이 맵은 각각 독립적으로 추정되기 때문에, 단순히 3D 포인트로 중첩하는 것만으로는 노이즈와 가림 현상으로 인한 모순이 발생합니다(동일한 위치의 포인트가 여러 레이어에 걸쳐 약간씩 어긋나거나, 시점 간 깊이가 일치하지 않는 경우). 융합은 이러한 깊이 맵들을 하나의 일관된 표현으로 통합하는 과정입니다.

  • 포인트 클라우드 융합: 시점 간 깊이가 일관된 픽셀만 사용하고, 신뢰도가 낮은 깊이는 버린 후 통합합니다. COLMAP 등의 모델이 이러한 방식으로 조밀한 포인트 클라우드를 출력합니다.

  • TSDF(Truncated Signed Distance Function) 융합: 1996년 SIGGRAPH에서 Curless와 Levoy가 제안한 체적 방법으로, 공간을 복셀로 나누고 부호 있는 거리를 누적합니다. 각 복셀에서. 실시간 깊이 카메라 융합(예: KinectFusion)에 널리 사용되며, MVS 깊이 맵 융합에도 적용 가능합니다.

  • 메싱: 포인트 클라우드 또는 부호 있는 거리 필드에서 Kazhdan 등이 개발한 Poisson Surface Reconstruction(2006)과 같은 방법을 사용하여 부드러운 폴리곤 메쉬를 생성합니다. 텍스처 매핑을 추가하면 시각적으로도 사용 가능한 3D 모델이 완성됩니다.

9. 대표 알고리즘 비교

방식 평면 스윕 패치 기반(PMVS) 학습 기반(MVSNet 계열)
원리 깊이 평면을 스윕하고 픽셀 단위로 사진 일관성을 평가합니다. 작은 패치를 반복적으로 확장하고 필터링합니다. CNN을 사용하여 비용 볼륨을 정규화하고 깊이를 회귀합니다.
정확도 깊이 해상도 및 비용 집계 설계에 따라 다름; 중간에서 높음 비스듬하거나 복잡한 국부 형상에 대해 정확도가 높은 경향이 있음 훈련 데이터와 유사한 조건에서 높은 정확도를 보임
계산 비용 GPU 병렬 처리가 용이하여 빠름 반복 처리로 인해 Plane-Sweep보다 느린 경향이 있음 훈련 후 추론 속도가 빠름; 훈련 비용은 별도 계산
견고성 텍스처가 부족한 영역에서 취약함 초기 패치가 적은 영역에서 구멍이 생기는 경향이 있음 텍스처가 약하거나 반복적인 패턴에 비교적 견고함
구현 난이도 중간 (호모그래피 워핑 및 비용 집계) 높음 (가시성 관리 및 반복 확장 설계) 높음 (훈련 데이터 및 네트워크 설계 필요)
대표적인 구현 COLMAP dense, 다수의 상용 사진측량 도구 PMVS/CMVS MVSNet, 이후의 학습 기반 방법들

10. 스테레오 및 깊이 카메라와의 관계

MVS는 "여러 시점 간의 대응 관계를 통해 깊이를 찾는다"는 기본 원리를 스테레오 카메라와 공유합니다. 스테레오 카메라와 심도 카메라는 서로 다른 위치에 설치됩니다.

  • 스테레오 카메라는 고정된 두 개의 눈 배열을 사용하여 시차 탐색을 에피폴라 선을 따라 한 차원으로 제한하며, 실시간 처리를 전제로 설계되었습니다. MVS의 평면 스윕(Plane-Sweep) 방식은 이러한 시차 탐색을 카메라 개수나 배열에 관계없이 일반화한 것으로 이해할 수 있습니다.

  • 심도 카메라(구조광, ToF, 액티브 스테레오)는 능동적으로 빛을 투사하여 표면 질감이 부족한 경우에도 안정적으로 거리를 측정할 수 있습니다. MVS는 수동적인 사진 일관성에만 의존하기 때문에 패턴이 적은 표면에서는 본질적으로 불리하며, 이는 액티브 심도 카메라와의 명확한 차이점입니다.

  • MVS는 기본적으로 오프라인 방식으로, 수십에서 수백 장의 이미지를 사용하여 고정밀, 고밀도 형상을 구축하는 반면, 스테레오 및 심도 카메라는 최적화되어 있습니다. 깊이 정보를 프레임 단위로 실시간으로 출력합니다.

실시간 성능이 필요한 로봇이나 AR 시스템에는 스테레오/깊이 카메라가 적합하고, 문화유산 기록, 건축 측량, 사진 측량 등을 위한 고정밀 3D 모델에는 MVS가 적합합니다.

11. 어려운 조건 및 일반적인 오류 사례

  • 텍스처가 부족하거나 균일한 표면: 흰 벽, 평평한 바닥, 하늘은 사진과의 일관성을 판단하기 어려워 깊이가 결정되지 않거나 주변 노이즈로 인해 잘못된 값으로 측정될 수 있습니다.

  • 반사, 투명 또는 반투명 물체: 유리, 수면, 금속 광택은 시점에 따라 모양이 변하여 사진과의 일관성 가정을 무너뜨립니다.

  • 반복적인 패턴: 타일, 벽돌, 밭의 작물 줄은 잘못된 깊이 값에도 불구하고 국부적으로는 높은 사진 일관성을 보이는 "고스트 솔루션"을 생성할 수 있습니다.

  • 가려짐: 특정 시점에서만 보이는 영역 가시성 추정이 잘못되면 잘못된 이미지를 사용하여 사진 일관성을 평가하게 되어 깊이 추정이 깨질 수 있습니다.

  • 불충분한 시점 또는 시차: 커버링 시점의 수가 적거나 시차가 너무 작으면 처음부터 깊이 방향으로 해상도를 얻을 수 없습니다.

12. 실용적인 선택

  • SfM 또는 캘리브레이션을 통해 포즈를 이미 알고 있고 정확도를 최우선으로 하는 오프라인 3D 재구성(문화유산 기록, 건축 측량, 비디오 제작용 사진 측량)이 목표인 경우, COLMAP의 밀집 파이프라인과 같은 평면 스윕 계열 구현이 접근하기 쉬운 시작점입니다.

  • 경사면이나 복잡한 국부 형상에 대한 정확도가 특히 중요한 경우, PMVS 계열의 패치 기반 접근 방식이나 해당 아이디어를 통합한 하이브리드 구현을 고려하십시오.

  • 장면의 텍스처가 부족하거나 반복적인 패턴이 많은 것을 미리 알고 있는 경우, 학습 기반 방법(MVSNet 계열)이 더 견고한 경향이 있습니다. 성능 측면에서 훈련 데이터 분포 범위를 벗어난 장면에서는 성능이 저하될 수 있으므로, 채택하기 전에 목표 도메인에 가까운 데이터로 평가하십시오.

  • 로봇, AR/VR, 자율 주행에서의 장애물 감지와 같이 실시간 성능이 요구되는 애플리케이션의 경우, MVS 대신 스테레오 카메라 또는 심도 카메라를 고려하십시오. MVS는 주로 오프라인, 고밀도, 고정밀 재구성 분야에 사용됩니다.
  • 최종 결과물이 메시 또는 텍스처가 적용된 3D 모델이어야 하는 경우, 심도 맵 융합 단계에서 TSDF 융합 또는 포아송 표면 재구성을 선택하십시오. 포인트 클라우드만으로 충분한 경우, 이 단계에서 작업을 중단할 수 있습니다.

13. 요약

멀티뷰 스테레오(MVS)는 SfM 또는 캘리브레이션을 통해 이미 알려진 카메라 포즈를 입력으로 받아, 사진 일관성을 단서로 사용하여 고밀도 심도를 복원합니다. 두 가지 고전적인 접근 방식인 평면 스윕(Plane-Sweep)과 패치 기반 방식은 각각 다른 장단점을 가지고 있으며, 최근에는 비용 볼륨을 학습하는 MVSNet 계열 방식이 정확도와 견고성을 더욱 향상시키고 있습니다. 전체 과정은 결과 깊이 맵을 융합하고 메시를 생성하는 단계로 이어지는데, MVS가 정확도를 위해 실시간 성능을 희생하는 반면 스테레오/깊이 카메라는 실시간 성능을 우선시한다는 점을 이해하는 것이 올바른 실용적인 선택을 위한 기초입니다.

이해력 점검
더 조밀한 포인트 클라우드가 더 정확한 지오메트리를 보장합니까?

더 많은 잘못된 깊이 데이터가 정확도를 향상시키지는 않습니다. 다중 뷰 일관성, 가림, 반사 및 텍스처는 밀도와 별도로 확인해야 합니다.

참고 문헌

What to read next

Review the background번들 조정 입문 — 카메라 포즈와 3D 포인트를 완벽하게 결합하는 비선형 최소 제곱법Continue the series음성/영상 입문 - 카메라와 IMU를 이용한 모션 추정의 실용적인 기초Explore another aspect of this field이미지 밝기·휘도 Lab — 노출, 감마, 클리핑 비교