Zurück

COLMAP

COLMAP ist ebenfalls eine Pipeline zur 3D-Rekonstruktion aus Fotos. Die Pipeline umfasst Structure from Motion und Multi-View Stereo. Sie wurde an der Eidgenössischen Technischen Universität Zürich und der University of North Carolina at Chapel Hill entwickelt. Hauptentwickler ist Johannes L. Schönberger, außer ihm haben noch Jan-Michael Frahm, Marc Pollefeys und Enliang Zheng bei der Entwicklung mitgewirkt. Quellen: COLMAP Structure-from-Motion, COLMAP Multi-View-Stereo

Das Ziel des Projektes COLMAP war es, einen neuen Ansatz für Photogrammetrie zu finden:

Es sollten nicht Objekte aus einzelnen Fotoserien rekonstruiert werden, viel mehr wollte man sich die Macht der Masse zu nutzen machen.

Das bedeutet viele einzelne Fotos aus dem Internet zu nutzen, welche von verschiedenen Personen mit verschiedenen Geräten, zu unterschiedlichen Zeiten gemacht wurden. Dieser Ansatz zielt nicht auf kleine Einzelobjekte ab, hierbei geht es viel mehr um eine großflächige Rekonstruktion z.B. von Gebäuden oder ganzen Stadtteilen.

Das imposanteste Beispiel hierfür ist die Erstellung einer Punktwolke von der Innenstadt von Rom. Aus 74.394 Bildern hat die Software 20.918 Bilder einander zuordnen können und 5,3 Millionen Punkte angeordnet.

COLMAP Punktwolke von Roms Innenstadt

COLMAP Punktwolke von Roms Innenstadt

Quelle: COLMAP Structure-from-Motion

Allgemeines

Colmap bietet eine komplette Pipeline um aus einen Set von Bildern eines Objekts ein 3D-Modell zu kreieren.

Es basiert auf der GPL v3 Lizenz, wobei dessen benötigter Unterbau Ceres-Solver auf der neuen BSD-Lizenz, die nur noch 3 Klauseln beinhaltet, aufbaut.

Colmap bietet neben einem Command-line Interface eine Gui die über den Befehl colmap gui aufzurufen ist.

Colmap ist innerhalb unserer Infrastruktur auf Lovelace und auch auf Fovea installiert.

Kamera Parameter werden im base64 Format als Blobs in der SqLite Datenbank gespeichert. Diese Parameter umfassen nur Informationen zur Bildmitte und die Brennweite.

Matrix für 3D Punkte in 2D umrechnen

Matrix für 3D Punkte in 2D umrechnen

fx und fy entsprechen dem Werten für die Brennweite, während cx und cy die Koordinaten der Bildmitte der Kamera definieren.

Die genutzten Kameradaten werden je nach gewählten Kamera-Typ um weitere Exifdaten Parameter erweitert.

Pipeline

COLMAP nutz die GPU um die Berechnungsprozesse deutlich zu beschleunigen. Das stelle uns vor ein Problem:

die Server der Infrastruktur verfügten, aussgenommen Lovelace, nicht über eine Grafikkarte. Leider war die Grafikkarte in Lovelace nicht komplett eingebunden und so waren wir gezwungen uns eine Alternative zu suchen. Diese fanden wir dem Desktop-Rechner Fovea, welcher bei unserem Vorgänger-Projekt zum Einsatz kam.

Die Pipeline sollte wie folgt funktionieren:

  1. Aufruf eines Skriptes aus der Infrastruktur, diesem wird der Pfad mit den Bildern übergeben.
  2. Das Skript kopiert die Bilder auf Fovea und schreibt den Pfad zu dem erstellten Verzeichnis in eine Liste.
  3. Ein Skript auf Fovea, prüft in kurzen zeitlichen Abständen diese Liste.
  4. Bei einem neuen Eintrag wird dieser an ein Skript übergeben, welches dann den Photogrammetrie Prozess von COLMAP initialisiert.
  5. Das Ergebniss wird an einem definierten Ort gespeichert.

Ursprünglich war geplant die Resultate direkt wieder in die Infrastruktur zu kopieren (siehe Skizze der Pipeline). Dies wurde jedoch aus Sicherheitsgründen verworfen, da Fovea kein vollwertiger Bestandteil der Server-Infrastruktur ist.

Ursprünglicher Entwurf der COLMAP Pipeline

Ursprünglicher Entwurf der COLMAP Pipeline