Inhaltsverzeichnis:

3D-Rekonstruktion aus einem einzigen Foto - Gunook
3D-Rekonstruktion aus einem einzigen Foto - Gunook

Video: 3D-Rekonstruktion aus einem einzigen Foto - Gunook

Video: 3D-Rekonstruktion aus einem einzigen Foto - Gunook
Video: 3D Modell aus Fotos mit Handy oder Kamera erstellen | Photogrammetrie Software Tutorial in Deutsch 2024, November
Anonim
3D-Rekonstruktion aus einem einzigen Foto
3D-Rekonstruktion aus einem einzigen Foto
3D-Rekonstruktion aus einem einzigen Foto
3D-Rekonstruktion aus einem einzigen Foto

Die Aufgabe der 3D-Rekonstruktion ist in der Regel mit binokularem Sehen verbunden. Alternativ können Sie eine einzelne Kamera um das Objekt herum bewegen. Wenn die Form des Objekts bekannt ist, kann die Aufgabe mit einem einzigen Foto gelöst werden. Das heißt, Sie haben nur eine Kamera und sie bewegt sich nicht. Schauen wir uns Schritt für Schritt an, wie es geht. Wir werden Rubik's Cube verwenden, da er gut standardisiert ist und über eine Vielzahl von Funktionen verfügt. Es kann als sehr einfaches Objekt und gleichzeitig als kompliziertes Konstrukt angesehen werden. Die Bildverarbeitung muss also erhebliche Hindernisse überwinden, um die Aufgabe zu erfüllen.

Schritt 1: Bewerten Sie die Komplexität der Aufgabe

Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe
Bewerten Sie die Komplexität der Aufgabe

Auf den ersten Blick ist die Aufgabe einfach. Finden Sie den zentralen Knoten, an dem 3 Kanten des Würfels zusammenkommen, und zeichnen Sie diese Kanten. Aus ihren Koordinaten lassen sich der Abstand zur Kamera und Drehwinkel berechnen. Das Problem ist, dass diese Zeilen nicht existieren. Aus dem linken Bild sehen Sie, dass jede Kante durch 2 parallele Linien dargestellt wird. Darüber hinaus zeigt das Bild oben rechts, dass jeder von ihnen in 3 Segmente unterteilt ist. Wenn wir außerdem eine Variante der beliebten Hough-Transformation anwenden, die Liniensegmente erkennen kann, führt sie die Aufgabe mit einigen Fehlern aus, die eine Erkennung des zentralen Knotens unmöglich machen. Wenn sich die Enden nicht erreichen, gibt es keinen einzigen Punkt. Wenn die Erkennung über das Ende hinausschießt, sieht es wie der Knoten in der Mitte der Kante aus, wie Sie auf den 2 verbleibenden Bildern sehen.

Schritt 2: Finden Sie den richtigen Ansatz

Finden Sie den richtigen Ansatz
Finden Sie den richtigen Ansatz

Wenn zu viele Details deterministische Algorithmen unbrauchbar machen, ist es an der Zeit, einen probabilistischen Ansatz in Betracht zu ziehen. Wenn wir gemittelte Parameter des Bildes berechnen, werden deren Fehler erheblich verringert und die Methode wird paradoxerweise zuverlässiger. Die Standard-Hough-Transformation gibt keine Liniensegmente aus. Nur seine Steigung Theta und der Abstand Rho vom Koordinatenursprung. Sie bilden den Hough-Raum, von dem oben gezeigt wird. Hier entspricht Theta der horizontalen Achse. Helle Punkte markieren mögliche Linien im Bild. Beachten Sie, dass mehrere solcher Spots übereinander liegen. Kein Wunder, auf unserem Bild gibt es viele parallele Linien. Sie haben das gleiche Theta und unterschiedliche Rho.

Schritt 3: Theta-Histogramm berechnen

Theta-Histogramm berechnen
Theta-Histogramm berechnen

Lassen Sie uns solche Cluster erkennen. Zu diesem Zweck werden wir die Messwerte für alle Punkte im Hough-Raum mit demselben Theta zusammenfassen. Das entsprechende Histogramm sehen Sie in der Abbildung. Ein paar Hinweise zu den Messungen. Wenn Sie mit Bildern in Pixelkoordinaten arbeiten, verläuft die X-Achse wie gewohnt, aber Y zeigt nach unten, sodass der Koordinatenursprung die obere linke Ecke ist und Theta von der X-Achse im Uhrzeigersinn gemessen werden sollte. Wenn man bedenkt, dass der gesamte Theta-Schwenk im Bild 180 Grad beträgt, können Sie ungefähr überprüfen, ob 3 Hauptspitzen 3 vorherrschende Neigungen im Bild darstellen.

Schritt 4: Rho-Histogramm berechnen

Rho-Histogramm berechnen
Rho-Histogramm berechnen

Da wir nun 3 Hauptcluster von parallelen Linien kennen, lassen Sie uns Linien in jedem von ihnen trennen. Wir können den gleichen Ansatz wiederholen. Nehmen wir eine Spalte aus dem Hough-Raum, die einem Peak im Theta-Histogramm entspricht. Als nächstes berechnen wir ein weiteres Histogramm, bei dem die X-Achse den Rho-Wert darstellt und Y - die zusammengefassten Messwerte für diese Rho. Offensichtlich wird die Summe geringer sein, so dass dieses Diagramm nicht so glatt ist. Dennoch sind Peaks deutlich sichtbar und deren Anzahl (7) entspricht exakt der Anzahl paralleler Linien auf dem Quellbild. Leider sind nicht alle Charts so perfekt, aber das Prinzip ist klar.

Schritt 5: Finden Sie den zentralen Knoten

Finde den zentralen Knoten
Finde den zentralen Knoten

Wenn wir für jedes Theta den zentralen Peak im Rho-Histogramm nehmen, erhalten wir 3 Linien, die auf dem Bild rot sind. Ihr Schnittpunkt markiert den notwendigen Punkt.

Schritt 6: Wählen Sie aus 2 Alternativen

Wählen Sie aus 2 Alternativen
Wählen Sie aus 2 Alternativen
Wählen Sie aus 2 Alternativen
Wählen Sie aus 2 Alternativen

Sie sehen, dass jede Linie vom Mittelpunkt in beide Richtungen verläuft. Wie bestimmt man die richtige Hälfte? Nehmen wir theta3. Nehmen wir an, wir nehmen den unteren Teil dieser Zeile. Lassen Sie uns noch einen weiteren Hough-Raum berechnen, nur für den Teil des Bildes von 2 grünen Linien bis zur oberen rechten Ecke des Bildes. Erstellen Sie dann ein Theta-Histogramm dafür. Sie sehen, dass der dritte Peak vollständig verschwunden ist, also haben wir die richtige Wahl getroffen.

Schritt 7: Bestimmen Sie die Außenecken

Bestimmen Sie die Außenecken
Bestimmen Sie die Außenecken

Jetzt können wir den ersten und den letzten Peak auf Rho-Histogrammen verwenden, um blaue Linien zu zeichnen, die die roten Kanten schneiden und die restlichen Ecken markieren. Die Aufgabe ist gelöst.

Schritt 8: Probieren Sie es in der Praxis aus

Die Illustrationen für dieses Instructable wurden mit Perception 1.0 erstellt. Dies ist eine kostenlose Software, die OpenCV verwendet - eine leistungsstarke Bibliothek für Computer Vision. Es kann auch mit WinNB verknüpft werden, das in meinem anderen Instructable verwendet wurde und so die Sichtfähigkeit für die Robotik bietet. Sie können beide Programme von nbsite herunterladen. Führen Sie zur Installation einfach die heruntergeladene exe-Datei aus. Später können Sie es mit dem Standardtool von Windows entfernen. Die Site enthält auch Ressourcen zu Computer Vision und verwandten Themen. In Perception finden Sie neben vielen anderen auch die beschriebene Methode der 3D-Rekonstruktion. Der Vorteil dieses Programms besteht darin, dass es das Endergebnis zusammen mit Zwischendaten ausgibt. Sie können erforschen, wie Computer Vision funktioniert, ohne Programmierer zu sein. Was die Eingabe angeht, hat jede Methode speziell ausgewählte typische Proben. Natürlich können Sie auch Ihre eigenen verwenden. Es ist möglich, Bilder aus einer Datei oder von der Kamera des Computers einzugeben. Bei Fragen oder Anregungen können Sie sich gerne an mich wenden.

Empfohlen: