Week 12 - Multiple-view geometry

Camera geometry from multiple views. Structure from motion (SfM), full bundle adjustment (BA) and multiple-view stereo processing.

Lectures

Recommended reading

  • Szeliski: Ch 11.4, 12.1.2, 12.7

Lab: Structure from Motion and 3D reconstruction

In today's lab you have three options where you can play around and explore the theory in practice


1. SfM and MVS with COLMAP

COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MSV) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections.

Install

You can download binaries for Windows and Mac from https://demuc.de/colmap/

On Ubuntu (x86_64) you can install COLMAP like this:

sudo apt-get install colmap

You need CUDA in order to perform MVS. For this to work on Ubuntu, you will have to build COLMAP yourself.

Experiment

Follow the tutorial: https://colmap.github.io/tutorial.html

You can use the Holmenkollen dataset from https://github.com/tek5030/lab-camera-pose-py/tree/master/data, or caputure your own data.


2. Simple BA-experiments in python

Lab 5 from Tryms VSLAM course at NTNU covers python implementations for MOBA, SOBA and full BA.

BA-experiment illustration

Experiment

Follow the experiments in https://github.com/ttk21/lab_05#readme


3. Advanced incremental SfM experiment in Python

Trym has written a simplified implementation of incremental SfM based on the Holmenkollen dataset where the correspondences already have been found:

https://github.com/tussedrotten/sfm_example

Experiment

Run and play around with https://github.com/tussedrotten/sfm_example/blob/main/incremental_sfm.py

You can study the dataset with image correspondences and corresponding 3d points in https://github.com/tussedrotten/sfm_example/blob/main/explore_matches_data.py and https://github.com/tussedrotten/sfm_example/blob/main/explore_map_data.py