[PYTHON] Photogrammetrie von OpenCV aus gesehen. (Warum Säulen dazu neigen, zu verschwinden)

Über dieses Dokument

Photogrammetrie, mit der 3D-Daten aus mehreren Fotos erstellt werden können. Es ist schön, Daten ohne spezielle Ausrüstung generieren zu können ...

Wenn die Photogrammetrie mit 3DF Zephyr durchgeführt wird, kann sie sauber wie ein Baumstamm oder schrecklich wie eine Säule aufgenommen werden. Ich habe ein OpenCV-Buch gelesen und irgendwie den Verarbeitungsinhalt der Photogrammetrie über die Ursache zusammengefasst. (Da es viele Bilder gibt, wird es in verkleinerter Größe angezeigt. Klicken Sie hier, um die tatsächliche Größe anzuzeigen.)

Erstens ein Beispiel, das funktioniert, ein Beispiel, das nicht funktioniert

Die folgende Abbildung zeigt ein strukturiertes Netz, das aus 4 Fotos in 3DZF erstellt wurde. (Erstellt mit Standardeinstellungen)

↓ Ein Fall, der schön dreidimensional sein kann ↓ 木の幹2.jpg

↓ Fall, in dem die Säule enttäuschend ist ↓ ルーセントの柱.jpg

Übersicht über die Photogrammetrieverarbeitung

Verstehe zuerst irgendwie, was Photogrammetrie tut. Um 3D-Daten zu erstellen, sollte die folgende Verarbeitung durchgeführt werden. (Vielleicht.) ** 1. Erkennen Sie die Merkmale des Fotos. ** **. ** 2. Verknüpfen Sie die Funktionspunkte mehrerer Fotos. ** **. ** 3. Schätzen Sie die Position der Kamera. ** **. ** 4. Messen Sie für jeden Merkmalspunkt. ** **. ** 5. Die durch die Umfrage erhaltene Punktgruppe wird gruppiert, um 3D-Daten zu generieren. ** **.

1. 1. Feature-Erkennungsverarbeitung

Finden Sie die charakteristischen Punkte des Bildes. Mit Python-OpenCV können Sie das Bild der Funktion Akaze.detectAndCompute zuführen. Die folgende Abbildung zeigt das Ergebnis der Verarbeitung des Fotos mit Akaze.detectAndCompute. Image1b.jpg

2. Funktionspunkte verknüpfen

Aus mehreren Bildern werden Punkte mit übereinstimmenden Merkmalen verknüpft. Mit Python-OpenCV können Sie die Matchar-Funktion mit einem Bild füttern. Die folgende Abbildung zeigt das Ergebnis der Verknüpfung der beiden Fotos, die durch seitliches Verschieben mit der Matcharfunktion aufgenommen wurden.

3, 4. Schätzen der Position der Kamera, Vermessen der Merkmalspunkte

Wie in der obigen Abbildung gezeigt, bewegen sich in den beiden Bildern, die während der Seitwärtsbewegung aufgenommen wurden, die Merkmalspunkte im Vordergrund stark, und die Merkmalspunkte in der Entfernung bewegen sich nicht viel. Wenn Sie es mit dem Winkel vergleichen, der durch die Dreiecksfunktion der Junior High School gespeichert wird, sieht es wie in der folgenden Abbildung aus. sankakusokuryou.jpg Schätzen Sie anhand des Bewegungsumfangs der Merkmalspunkte zuerst die Position der Kamera (die Position, an der der Tsuji übereinstimmt) und dann die Position jedes Merkmalspunkts aus der Position der Kamera.

↓ Wenn die Punktgruppe aus den Koordinaten der Merkmalspunkte mit 3DF Zephyr ↓ erhalten wurde 3dz1.jpg

5. Gruppierung von Feature-Punkten, Polygongenerierung

Gruppieren Sie danach die Feature-Punkte und machen Sie sie polygonal. ↓ Gruppieren Sie Punkte, um Polygone zu erzeugen. ↓ 3dz2.jpg

↓ Texturmalerei ↓ 3dz3.jpg

Details zu O'REILLY OpenCV3 finden Sie in der Erklärung zur Gruppierung. Lust auf maschinelles Lernen? (Ich bin nicht sicher, weil ich ein Mist bin> <) opencva.jpg

Was ist der Unterschied zwischen dem, was funktioniert und dem, was nicht?

Wenden wir den Prozess des Extrahierens der Feature-Punkte von OpenCV auf das Bild des Stammes und der Säule des Baums am Anfang an.

Ergebnis der Merkmalspunktextraktion auf dem Bild des Baumstamms

↓ Vergrößert. Ich nehme immer noch die Unebenheiten der Kofferraumoberfläche auf.

Ergebnis der Merkmalspunktextraktion auf dem Säulenbild

Im Vergleich zum erfolgreichen Fall ist die Erkennung von Merkmalspunkten voreingenommen. Insbesondere haben Säulen aufgrund ihrer Größe nur wenige charakteristische Punkte.

Wo ist der Feature-Punkt?

Versuchen Sie, Merkmalspunkte der Figur zu extrahieren

Verarbeiten wir gerade und kreisförmige Formen mit Akaze.detectAndCompute. ↓ Ergebnis der Merkmalspunktextraktion ↓ Es gibt Merkmalspunkte in den Kurven und Ecken, aber der gerade Teil ist durch. Ich kann das nicht glauben.

Details zu O'REILLY OpenCV3 enthalten die folgenden Erläuterungen zu den Funktionen. Es scheint, dass der Merkmalspunkt ein Punkt ist, der Graustufen ist und einen großen Unterschied zu den umgebenden Punkten aufweist.

Gerade Linien werden nicht zu Merkmalspunkten

↓ Eine vergrößerte Version des vorherigen Bildes. Die Innenseite der Ecke ist ein Merkmalspunkt. ↓ Im Vergleich zu den Punkten in der Nähe von 8 um Punkt A (schwarz) als Referenz ist Schwarz 3: Weiß 5 (38% Übereinstimmungsmerkmal) Im Vergleich zu den Punkten in der Nähe von 8 um Punkt B (weiß) als Referenz ist Schwarz 5: Weiß 3 (38% Übereinstimmungsmerkmal) Und es gibt viele Punkte mit Werten, die sich von der Mitte unterscheiden.

Im Gegenteil, gerade Linien, die keine Merkmalspunkte sind Im Vergleich zu den Punkten in der Nähe von 8 um Punkt C (weiß) als Referenz ist Schwarz 3: Weiß 5 (62% Übereinstimmung) Schwarz 5: Weiß 3 (62% Übereinstimmung) im Vergleich zu den umgebenden 8 Punkten basierend auf Punkt D (schwarz) Und es gibt viele Punkte mit dem gleichen Wert wie die Mitte. An der Außenseite der Ecke (oben links von Punkt A usw.) ist Weiß der Startpunkt und Schwarz 1: Weiß 7. (88% Übereinstimmung)

Wenn ein Merkmalspunkt einen großen Unterschied zu den umgebenden Punkten aufweist, ist die Innenseite der Ecke als Merkmal stark und die gerade Linie als Merkmal schwach. Dies ist der Grund, warum Feature-Punkte in Spalten und Ebenen nicht auftreten.

Zum Beispiel im Fall des Bildes des Muffins am Anfang マフィン.gif

Wenn die Merkmalspunkte extrahiert werden, werden die dreidimensionalen Daten um das Muffin herum zu den Merkmalspunkten des Muffinpulvers, wodurch es schön aussieht. (Powder Suge)

Andererseits war der Pappbecher zerbröckelt. Wenn Sie sich die Feature-Punkte ansehen, können Sie die Feature-Punkte nicht erhalten. Liegt es daran, dass Farbton und Helligkeit nahe an denen des Hintergrundfachs liegen?

Ich weiß nicht, wie die interne Verarbeitung von 3DFZephyr aussieht, aber ich denke, dass dies hilfreich sein wird, da die Tendenz der Merkmalspunkterkennung von Akaze ähnlich ist.

Ergebnisse erhalten

Gerade Linien und Ebenen werden aufgrund der Beurteilungsbedingungen für Merkmalspunkte häufig ignoriert. Weil es so ein Prozess ist, habe ich keine andere Wahl, als es zu trinken. Reduzieren Sie anschließend Unschärfe und Unschärfe und erfassen Sie kleine Kratzer und Puder als Merkmalspunkte.

Also etwas nutzloses Muffinpulver darüber streuen!

Ich habe das geschrieben, aber wenn eine köstliche Person es tut, wird die gerade Linie der Brotdose genommen. Eine großartige Person zum Unterrichten.

Recommended Posts

Photogrammetrie von OpenCV aus gesehen. (Warum Säulen dazu neigen, zu verschwinden)
Warum ich von Java zu Dart gewechselt bin