In dieser Folge der grundlegenden Turntable-Photogrammetrie-Reihe analysieren wir die grundlegenden Eigenschaften eines Meshroom-Projekts zur Rekonstruktion von Geometrie aus Fotografien.
Videotranskript
Hallo zusammen! In dieser Folge der grundlegenden Turntable-Photogrammetrie-Reihe analysieren wir die grundlegenden Eigenschaften eines Meshroom-Projekts zur Rekonstruktion von Geometrie aus Fotografien.
Zunächst gebe ich einen Überblick über die Benutzeroberfläche und den Workflow von Meshroom. Anschließend gehen wir zu den praktischen Schritten zum Laden von Bildern über.
Nachdem wir Meshroom heruntergeladen und installiert haben, starten wir das Programm. Es werden zwei Fenster geöffnet. Das Konsolenfenster zeigt Daten und Informationen zur Programmausführung an, während das Hauptfenster der Bereich ist, in dem wir an unseren Projekten arbeiten. Wenn eines dieser beiden Fenster geschlossen wird, beendet sich das Programm. Daher müssen beide Fenster geöffnet bleiben.

Meshroom ermöglicht tatsächlich verschiedene Projekttypen, wie ihr durch einen Klick auf New Pipeline im Menü File sehen könnt. Natürlich interessieren wir uns für ein Photogrammetry-Projekt.
Als Erstes sollten wir das Projekt speichern. Ich empfehle, einen eigenen Ordner anzulegen, in dem die Projektdatei gespeichert wird, da bei der Ausführung der Photogrammetrie-Verarbeitung eine ganze Ordnerstruktur erzeugt wird, die wir uns gleich genauer ansehen werden.
Die Projektdatei erhält die Erweiterung MG, was für Meshroom Graphs steht. Die Begriffe Pipeline und Graphs verdeutlichen, dass die Prozesse in Meshroom einer sequenziellen Schritt-für-Schritt-Abfolge folgen. Dies lässt sich im Panel Graph Editor am unteren Fensterrand visuell nachvollziehen, wo die Nodes und ihre Verbindungen dargestellt werden.
Bevor wir diese Pipeline genauer betrachten, werfen wir einen kurzen Blick auf die Benutzeroberfläche des Programms.

Das Panel Image Gallery enthält die Bilder, die wir für die Rekonstruktion verwenden möchten. Zu Beginn ist es leer und weist darauf hin, dass Dateien auch per Drag-and-Drop aus einem Ordner in diesen Bereich gezogen werden können. Soweit ich mich erinnere, funktioniert diese Drag-and-Drop-Funktion unter Windows nicht, wenn Meshroom im Administrator-Modus ausgeführt wird. Bilder können jedoch auch über Import Images im Menü File importiert werden.
Im Panel Image Viewer können wir die geladenen Bilder einzeln betrachten. Dadurch können wir Aufnahmen mit schlechter Qualität aussortieren oder relevante Daten auswerten. In diesem Fenster werden außerdem einige von Meshroom erzeugte Daten angezeigt, beispielsweise die Depth Map, wie wir später sehen werden.
Das Panel 3D Viewer zeigt die Point Cloud an, also die rekonstruierte Szene. Hier können wir auch das zu rekonstruierende Volumen neu definieren, die sogenannte Bounding Box, sodass wir uns nur auf bestimmte Elemente konzentrieren können.
Das Panel Graph Editor zeigt die Abfolge der zu verarbeitenden Nodes und ihre Verbindungen. Jeder Node repräsentiert eine bestimmte Aufgabe, die Schritt für Schritt ausgeführt wird. Dabei werden eingehende Daten über die Input Ports verwendet und ein oder mehrere Ergebnisse über die Output Ports erzeugt.
Ein neues Photogrammetry-Projekt enthält eine grundlegende Pipeline mit Standardparametern, die für viele Projekte gut geeignet ist. Sobald wir das Projekt starten, erstellt Meshroom einen Unterordner namens Cache. Darin werden weitere Unterordner angelegt, jeweils einer für jeden Node, der in der Pipeline vorhanden ist.
Die Pipeline muss nicht in ihrer Standardform bestehen bleiben. Sie kann durch das Hinzufügen neuer Nodes oder durch Änderungen an den Verbindungen erweitert und angepasst werden, wie wir später in dieser Folge sehen werden.
Wenn wir auf einen Node klicken, können wir seine Parameter und Einstellungen im Node-Panel auf der rechten Seite anzeigen. Jeder Node bietet Zugriff auf verschiedene Arten von Informationen, die in den Tabs Attributes, Log und weiteren Registerkarten im unteren Bereich angezeigt werden.

Das letzte Panel der Standardoberfläche ist der Task Manager, der anfangs leer ist. Hier werden später die Ausführungsdetails der verschiedenen Nodes angezeigt.
Im Menü View fällt euch möglicherweise auf, dass das Panel Live Reconstruction fehlt. In dieser Einführungsreihe werde ich es jedoch nicht verwenden, daher können wir es deaktiviert lassen.
Die Option Fullscreen zeigt das Hauptfenster des Programms erwartungsgemäß im Vollbildmodus an.
Bevor wir zu den praktischen Schritten übergehen, möchte ich die Pipeline kurz vorstellen. Sie stellt die Ausführungsreihenfolge der Nodes dar.
Die Pipeline kann in zwei Bereiche unterteilt werden. Im ersten Abschnitt, der bis zum Node Structure From Motion reicht, lädt Meshroom die Bilder und extrahiert bestimmte Informationen, die sogenannten Features. Diese ermöglichen es dem Programm, Referenzpunkte über mehrere Fotografien hinweg zu identifizieren.

Diese Features werden anschließend verwendet, um die Geometrie der Szene zu rekonstruieren. Dieser Prozess findet jedoch erst nach dem Node Structure From Motion statt. In der zweiten Phase berechnet Meshroom Tiefendaten für die erkannten Features und erzeugt daraus eine 3D-Point-Cloud. Anschließend wird die Geometrie rekonstruiert, die als Mesh bezeichnet wird, weil sie aus Vertices besteht, die durch Edges verbunden sind und dadurch dreieckige Faces definieren.
Schließlich werden die ursprünglichen Fotografien zu einem Bild kombiniert, das als Texture bezeichnet wird. Diese repräsentiert die Farben der verschiedenen Bereiche des ursprünglichen 3D-Objekts, jedoch in Form eines zweidimensionalen Bildes.

Aus den in den Fotografien erkannten Features entstehen zunächst einzelne, nicht miteinander verbundene Punkte im Raum. Diese Punkte werden anschließend miteinander verbunden, um Geometrie in Form von Oberflächen zu erzeugen. Auf diese wird dann eine Texture angewendet, damit die rekonstruierte Geometrie die Farben des ursprünglichen Objekts erhält.
Über die Pipeline, die Nodes und den gesamten Ausführungsprozess gibt es noch viel mehr zu sagen. Diese Details werde ich jedoch nach und nach erläutern, während wir mit dem Projekt voranschreiten.
Kommen wir nun zu den praktischen Schritten. Zunächst ziehe ich die Originalfotografien in das Panel Image Gallery.
Im Panel Image Gallery können wir die Gesamtzahl der hinzugefügten Fotos sowie die Anzahl der von Meshroom erkannten Kameras sehen. Diese basiert auf den aus den Bildern extrahierten intrinsischen Daten. Die Zahl wird neben dem Verschlusssymbol am unteren Rand des Panels angezeigt.

Für jedes Foto können wir diese Metadaten, sofern vorhanden, anzeigen, indem wir den Mauszeiger über das Verschlusssymbol in der Bildvorschau bewegen. In diesem Fall sind die Metadaten vorhanden, daher erscheint das Symbol grün. Fehlen die Metadaten, wird das Symbol rot angezeigt, und Meshroom führt die Rekonstruktion so gut wie möglich ohne diese Informationen durch.
Bei einem Turntable-Photogrammetrie-Projekt empfiehlt es sich, den Node Feature Matching auszuwählen und den Parameter Minimal 2D Motion auf den Wert 2 zu setzen. Nachdem diese Anpassung vorgenommen wurde, speichere ich das Projekt.

In einem Projekt, bei dem für die Aufnahmen ein Green Screen verwendet wurde, wie in diesem Fall, kann man versuchen, Meshroom den grünen Hintergrund bereits vor der Feature-Extraktion ausschließen zu lassen. Dazu wird im Graph Editor ein Node Image Masking hinzugefügt, indem man mit der rechten Maustaste auf einen freien Bereich klickt und den Node einfügt.
Am Eingang Structure From Motion Data des neuen Nodes müssen wir den Ausgang Structure From Motion Data des Nodes Camera Init anschließen, indem wir zwischen den beiden Ports klicken und ziehen.
Der Ausgang des neuen Nodes muss anschließend mit den Eingängen Mask Folder der Nodes Feature Extraction und Prepare Dense Scene verbunden werden.
Wenn wir nun den Node Image Masking auswählen, können wir im Node-Panel die auszuschließende Farbe festlegen und die Toleranzwerte für Farbton, Sättigung und Helligkeit anpassen. Diese Methode zum Ausschließen des grünen Hintergrunds ist jedoch nicht besonders praktisch, da sie keine gute Vorschau des Ergebnisses bietet und keine individuellen Einstellungen für jedes einzelne Foto erlaubt. Gerade dieser letzte Punkt könnte in unserem Fall nützlich sein, da die Ausleuchtung des Hintergrundstoffs nicht gleichmäßig ist.
Aus diesen Gründen entferne ich den Node Image Masking wieder, indem ich mit der rechten Maustaste darauf klicke und Remove Node auswähle. Zur Information: Eine Verbindung zwischen Nodes kann entfernt werden, indem man mit der rechten Maustaste auf die Verbindung klickt und Remove auswählt.

Ich entferne außerdem alle Fotografien, denn in der nächsten Folge werde ich euch ein kleines Setup in Blender zeigen, mit dem wir nicht nur den grünen Hintergrund einfacher entfernen können, sondern auch den Green Spill beseitigen. Dabei handelt es sich um den grünlichen Farbstich, der Objekte beeinflusst, die vor einem Green Screen fotografiert wurden.
Die einzige benutzerdefinierte Einstellung, die ich beibehalte, ist der Wert 2 für den Parameter Minimal 2D Motion im Node Feature Matching.
Ich speichere das Projekt nun mit diesen Einstellungen, schließe Meshroom und sehe euch in der nächsten Folge wieder!