How To: Photogrammetry mit Meshroom unter Ubuntu 16.04.

SYSTEM
10.12.2018 14:55:48
Ich bin zufällig durch dieses Video:

Quelle: Youtube, Titel: Photogrammetry 2 – 3D scanning simpler, better than ever!



auf die Möglichkeit gestoßen mit einem Programm Fotos zu einem 3D Mesh zu kombinieren. Das in diesem How-To benutzte Programm nennt sich Meshroom und ist zu finden unter https://github.com/alicevision/meshroom. Man kann sich dieses Programm allerdings auch schon fertig compiliert herunter laden unter https://github.com/alicevision/meshroom/releases.

Ich habe mich auf Grund meines Betriebssystemes Ubuntu 16.04. für die https://github.com/alicevision/meshroom/releases/download/v2018.1.0/Meshroom-2018.1.0-linux.tar.gz entschieden.

Nach dem herunter laden wird die Datei einfach entpackt und man kann in der console über


BASH code

  1. ./Meshroom

das Tool einfach starten.

Bei mir gab es ein kleineres Problem beim starten. Es wurde nur ein Fenster aufgebaut, was aber komplett schwarz und ohne Elemente war. Außerdem spamte in der Console ununterbrochen folgende Meldung:


BASH code

  1. QOpenGLShaderProgram::uniformLocation(matrix): shader program is not linked
  2. QOpenGLShaderProgram::uniformLocation(opacity): shader program is not linked
  3. QOpenGLShaderProgram::uniformLocation(pixelSize): shader program is not linked
  4. QOpenGLShaderProgram: could not create shader program
  5. QOpenGLShader: could not create shader
  6. QOpenGLShader: could not create shader
  7. shader compilation failed:
  8. ""


Dieses Problem umgeht man, in dem Meshroom wie folgt aufgerufen wird:


BASH code

  1. LD_LIBRARY_PATH=/usr/lib/nvidia-390 ./Meshroom


hiermit verlinkt man die librarys des aktuell installierten Nvidia Treibers und gibt so Meshroom die Möglichkeit darauf zuzugreifen und damit korrekt zu arbeiten.

Nachdem ich dann per drag&drop meine Bilder importiert hatte und per klick auf Start das Rendern starten wollte, bekam ich beim ersten Node (Cermainit) nur einen roten Balken. Man hat nun 2 Möglichkeiten das ganze zu debuggen.

1. Möglichkeit: Man hat die Anwendung über die Console gestartet, dann sieht man die Ausgabe der Log Datei in der Console.

2. Möglichkeit: Man klickt auf die jeweilige Node, worauf sich rechts ein weiteres Widget einblendet, in dem unten links 2 Reiter hat. Zum einen Attributes, zum anderen Log. Klickt man dort auf Log sieht man ebenfalls die Ausgabe der Log.

In beiden Fällen weißt uns das Plugin in der Log darauf hin, dass unsere Kamera unbekannt ist:


BASH code

  1. [12:57:16.547937][error] Sensor width doesn't exist in the database for image(s) :
  2. [12:57:16.548135][error] image: '20181209_124932.jpg'
  3. - camera brand: LG Electronics
  4. - camera model: LG-H815


Ich habe damit ein wenig recherchiert und https://www.cameradebate.com/2015/sensor-size-lg-g4-camera/, dass der Chip meiner Kamera eine breite von 5.95mm hat. Das trage ich nun in die Datei cameraSensors.db ein. Diese Datei liegt im Installationsordner von Meshroom unter /aliceVision/share/aliceVision/. Da diese Datei ein CSV Format besitzt, ist es einfach sie zu erweitern. Man trägt am Ende nun lediglich die Daten zum Sensor mit Semikolon getrennt ein:


BASH code

  1. LG Electronics;LG-H815;5.95


und speichert die Datei ab.

Nun steht dem Erstellen von 3D Objekten mit Hilfe von Fotos nichts mehr im Weg.

Viel Spaß.