본문 바로가기

3D 스캔

Runnning COLMAP in windows

개념부터 잡고 가자.

 

📌 COLMAP 한 줄 요약

여러 각도에서 찍은 사진들만 가지고, 자동으로 3D 포인트 클라우드와 카메라 위치를 추정하는 도구


🧠 COLMAP이 하는 일 (기능 요약)

단계이름설명
1️⃣ Feature Extraction 각 이미지에서 특징점(SIFT 등)을 추출
2️⃣ Feature Matching 이미지 쌍 사이에서 특징점이 어디서 대응되는지 찾음
3️⃣ Structure-from-Motion (SfM) 특징점 정보를 바탕으로 카메라 위치와 **포인트 클라우드(3D 점)**를 추정
4️⃣ Image Undistortion 왜곡 보정 및 MVS 입력용 정제 이미지 생성
5️⃣ (선택) Multi-View Stereo (MVS) COLMAP 안에서도 dense reconstruction 가능 (or 외부 MVS 도구로 연결)

📦 COLMAP이 만들어내는 결과물

  • 3D 포인트 클라우드
    • 이미지에서 추출된 특징점들이 실제 공간상 어디에 있는지를 추정
  • 카메라 포즈
    • 사진을 찍은 카메라의 위치/방향을 3D 좌표로 추정
  • 매칭 정보
    • 어떤 이미지의 어떤 점이, 다른 이미지의 어떤 점과 대응되는지
  • 메쉬 (선택적)
    • dense reconstruction을 통해 텍스처가 입혀진 3D 모델 생성 가능

🖼️ 예시 시나리오

  1. 어떤 조각상 주변을 360도 돌면서 사진을 50장 찍었다고 가정하면,
  2. COLMAP은 이 사진들만 가지고:
    • 사진마다 카메라가 어디 있었는지 계산하고
    • 조각상의 3D 형태를 포인트로 복원합니다.
    • 추가로 OpenMVS를 붙이면 정밀한 3D 메쉬까지 생성됩니다.

🧰 COLMAP이 쓰이는 분야

  • 포토그래메트리 (사진 기반 3D 재구성)
  • NeRF / 3D 가우시안 스플래팅 등 AI 기반 모델의 사전 처리
  • SLAM/AR/VR용 데이터셋 생성
  • 문화재 복원, 디지털 트윈, 3D 프린팅 등

🎓 COLMAP의 핵심 알고리즘 요약

기술설명
SIFT 이미지에서 강인한 특징점 추출
Epipolar Geometry 두 이미지 간 관계로 카메라 위치 추정
Bundle Adjustment 전체 카메라와 포인트를 반복적으로 최적화
PnP + RANSAC 카메라 포즈 robust 추정
Depth Fusion 이미지 기반 뎁스맵을 병합하여 dense 모델 생성 (옵션)

 

COLMAP 돌려보기

 

https://github.com/colmap/colmap/releases

 

Releases · colmap/colmap

COLMAP - Structure-from-Motion and Multi-View Stereo - colmap/colmap

github.com

 

위 링크로 가서, 가장 최신 버전을 받아본다.

 

쿠다 버전으로 다운로드 완료

 

압축을 풀면 이렇게 나오고, 

그냥 런테스트를 돌리면 이렇게 된다...

 

가만 보아하니, 이런 저런 기능들을 하나하나 돌리는 것 같다.

 

테스트가 실패하는 부분도 있고, 성공하는 부분도 있어서 괜찮은건지 궁금해졌다.

라고 해서, 질의해보니, 기본적인 기능만 작동하면 괜찮을 것 같다.

 

그래서 colmap.bat를 실행해봤더니

 

이런식으로 화면이 잘 나오는 것을 확인할 수 있었다. 일단 넘어가보자.

 

이제 사진을 준비해준 뒤, 

 

이 과정을 실행해본다.

 

우선 파일을 준비해두고

 

colmap 프로그램 내에서 아래와 같이 세팅해보았다. 

recon.db는 원래 파일이 없었던거라 새롭게 생성해주었다.

 

다음으로 피쳐 추출을 해본다.

그랬더니 옵션이 많이 뜬다.

 

뭘고를지 몰라서 추가 질문을 gpt에게 해준다.

✅ 추천 카메라 모델 설정 (갤럭시 플립5 기준)

설정 항목추천값

 

Camera Model PINHOLE 또는 SIMPLE_RADIAL
Single Camera ✅ 체크 (모든 이미지가 같은 카메라로 찍혔다면)

📷 주요 카메라 모델 설명

모델명설명스마트폰 적합도
SIMPLE_PINHOLE Focal length + principal point만 고려 ❌ 정확도 낮음
PINHOLE f, cx, cy 모두 명시, 왜곡 없음 ✅ 기본적으로 안정적
SIMPLE_RADIAL PINHOLE + 단일 왜곡 계수 k1 ✅ 스마트폰용으로 추천
RADIAL PINHOLE + k1, k2 왜곡 계수 ✅ 더 정밀하게
OPENCV fx, fy, cx, cy, k1~k4 등 다양한 왜곡 포함 ⛔ 복잡하지만 유연함

 

이런 답변이 나왔다.

 

하나의 카메라에서 찍은거라서 아래와 같이 세팅해주고 

 

실행해본다. mask_path는 새로 만들어서 넣어주었다. 

 

그러면 우측 로그가 이런식으로 뜬다. 

 

마지막에 이런 에러가 뜬다. 애초에 이미지가 아닌 파일을 읽었기 때문에 발생한 에러라서 무시해도 좋을 것 같다.

 

자 이제 다음스텝,

 

피쳐 매칭을 해준다.

 

옵션이 많은데 일단 그냥 런을 시켜본다.

 

SIFT GPU 피쳐 매쳐가 돌아가고, 열일한다.

 

다음단계 

 

여기 Start reconstruction이 있어서 실행해보았다. 가만보니 automatic reconstruction이 있는데, 저걸 실행하면 지금까지 했던 작업을 자동으로 수행하는 모양이다....

 

아무튼 열일하고 있는 COLMAP. 열심히 카메라 위치를 찾고, 포인트 클라우드를 만들어내고 있다. 

 

그 결과는 다음과 같았다.

 

얼추 archer 이미지랑 비슷한게 나왔다. 

 

이제 나의 다음스텝은 이걸 Nerf 같은 시스템에 넘기는 작업인데, 그러려면 어떻게 해야 하나....

 

이 기능을 통해서 익스포트를 했고,

 

 

그 결과 카메라, 이미지, 포인트 정보가 추출된 것을 확인했다. 그럼 다음스텝으로 가보자!

 

 

'3D 스캔' 카테고리의 다른 글

texrecon 돌려보기  (0) 2022.06.22
MVE API 분석 1편. MakeScene  (0) 2022.06.17
kinfu with azure kinect  (0) 2022.06.14
OpenCV contrib와 함께 빌드하기  (0) 2022.06.10