Augmented Reality SDK mit OpenCV [geschlossen]

94

Ich entwickle ein Augmented Reality SDK auf OpenCV. Ich hatte einige Probleme, Tutorials zu diesem Thema zu finden, welche Schritte zu befolgen sind, mögliche Algorithmen, schnelle und effiziente Codierung für Echtzeitleistung usw.

Bisher habe ich die nächsten Informationen und nützlichen Links gesammelt.

OpenCV-Installation

Laden Sie die neueste Release-Version herunter .

Installationsanleitungen finden Sie hier (Plattformen: Linux, Mac, Windows, Java, Android, iOS).

Online- Dokumentation .

erweiterte Realität

Für Anfänger gibt es hier einen einfachen Augmented Reality Code in OpenCV. Es ist ein guter Anfang.

Für alle, die nach einem gut gestalteten SDK auf dem neuesten Stand der Technik suchen, habe ich einige allgemeine Schritte gefunden, die jede auf Marker-Tracking basierende Augmented Reality unter Berücksichtigung der OpenCV-Funktionen ausführen sollte.

  1. Hauptprogramm: Erstellt alle Klassen, initialisiert, erfasst Bilder aus Videos.

  2. AR_Engine-Klasse: Steuert die Teile einer Augmented Reality-Anwendung. Es sollte 2 Hauptzustände geben:

    • Erkennung : Versucht, den Marker in der Szene zu erkennen
    • Tracking : Sobald es erkannt wurde, werden niedrigere Berechnungstechniken verwendet, um den Marker in kommenden Frames zu verfolgen.

Es sollte auch einige Algorithmen geben, um die Position und Ausrichtung der Kamera in jedem Bild zu finden. Dies wird erreicht, indem die Homographietransformation zwischen dem in der Szene erkannten Marker und einem 2D-Bild des Markers, den wir offline verarbeitet haben, erkannt wird. Die Erklärung dieser Methode hier (Seite 18). Die Hauptschritte für Posenschätzungen sind:

  1. Laden Sie die intrinsischen Parameter der Kamera . Zuvor offline durch Kalibrierung extrahiert. intrinsische Parameter

  2. Laden Sie das Muster (Marker), um es zu verfolgen: Es ist ein Bild des planaren Markers, den wir verfolgen möchten. Es ist notwendig, Features zu extrahieren und Deskriptoren ( Schlüsselpunkte ) für dieses Muster zu generieren , damit wir später mit Features aus der Szene vergleichen können. Algorithmen für diese Aufgabe:

  3. Führen Sie für jede Frame-Aktualisierung einen Erkennungsalgorithmus zum Extrahieren von Features aus der Szene aus und generieren Sie Deskriptoren. Auch hier haben wir mehrere Möglichkeiten.

    • SIEBEN
    • SCHNELL
    • SURFEN
    • FREAK : Eine neue Methode (2012) soll die schnellste sein.
    • ORB
  4. Finden Sie Übereinstimmungen zwischen dem Muster und den Szenendeskriptoren.

  5. Finden Sie die Homografiematrix aus diesen Übereinstimmungen. RANSAC kann zuvor verwendet werden, um Ausreißer / Ausreißer in der Reihe der Übereinstimmungen zu finden.

  6. Auszug Kamera Pose von Homografie.

Vollständige Beispiele:

Jav_Rock
quelle
1
Leider ist dies "nicht konstruktiv", suchen Sie nach Vorschlägen.
Bfavaretto
3
In Bezug auf die Installationsaufgabe wurde OpenCV jetzt auf GIT migriert. Zum Herunterladen des Cource-Codes muss daher ein "git clone git: //code.opencv.org/opencv.git" ausgeführt werden.
Carlos Cachalote
12
47 Up-Votes wegen alberner Regeln noch geschlossen.
SvaLopLop

Antworten:

19

Da AR-Anwendungen häufig auf Mobilgeräten ausgeführt werden, können Sie auch andere Funktionen als Detektor / Deskriptor in Betracht ziehen:

Muffo
quelle
3
Vielen Dank! Es gibt auch eine "schnelle" Version von FAST, die in Echtzeit auf Mobiltelefonen ausgeführt wird, pyramidenförmig ist und die SIFT-Deskriptoren reduziert sind
Jav_Rock
2
Ich habe fast perfekte Ergebnisse mit ORB
dynamische
Wenn
3
Freak ist der letzte Algorithmus, der den Deskriptor auf AR verarbeitet. Schneller als SCHNELL.
Goe
13

Wenn Sie die Markierungen auswählen können, erkennen Sie im Allgemeinen zuerst ein quadratisches Ziel mithilfe eines Kantendetektors und dann entweder Hough oder einfach Konturen. Identifizieren Sie dann die jeweilige Markierung anhand des internen Designs. Anstatt einen allgemeinen Punktvergleich zu verwenden.

Werfen Sie einen Blick auf Aruco, um einen gut geschriebenen Beispielcode zu erhalten.

Martin Beckett
quelle
4
Ja, der Referenzansatz ist der einfachste, aber nicht ganz auf dem neuesten Stand. Ich denke jetzt sollte man auf strukturierte Marker zeigen. Vielen Dank. Das Beispiel ist sehr interessant, da es jedoch gut erklärt ist.
Jav_Rock
1
Wenn Sie die Pose kennen möchten, müssen Sie die 3D-Position der Markierungsmerkmale an die entsprechenden Bildkoordinaten anpassen. Regelmäßig geformte Ziele machen dies einfacher, müssen aber nicht planar sein
Martin Beckett
Aber wenn sie nicht planar sind, benötigen Sie das 3D-Modell oder ein CAD-Modell, andernfalls ist die Homografie von 2D zu 3D keine gültige Methode mehr, oder? Ich meine die direkte lineare Transformation, die in der Findhomographie verwendet wird
Jav_Rock
Ja, wenn Sie einen 3D-Marker haben, müssen Sie das echte Wort 3D-Form kennen (von CAD oder messen), aber es gibt eine bessere Lösung
Martin Beckett