3D-Posenschätzung - 3D pose estimation

Posenschätzung in einem Motion-Capture- System

Die 3D-Posenschätzung ist ein Prozess zur Vorhersage der Transformation eines Objekts aus einer benutzerdefinierten Referenzpose bei einem gegebenen Bild oder einem 3D-Scan . Es entsteht in der Computer Vision oder Robotik, wo die Pose oder Transformation eines Objekts zur Ausrichtung von Computer-Aided-Design- Modellen, zur Identifizierung, zum Greifen oder zur Manipulation des Objekts verwendet werden kann.

Von einer unkalibrierten 2D-Kamera

Es ist möglich, die 3D-Rotation und Translation eines 3D-Objekts aus einem einzelnen 2D-Foto abzuschätzen, wenn ein ungefähres 3D-Modell des Objekts bekannt ist und die entsprechenden Punkte im 2D-Bild bekannt sind. Eine übliche Technik zur Lösung dieses Problems war in letzter Zeit "POSIT", bei der die 3D-Pose direkt aus den 3D-Modellpunkten und den 2D-Bildpunkten geschätzt wird und die Fehler iterativ korrigiert werden, bis eine gute Schätzung aus einem einzelnen Bild gefunden wird. Die meisten Implementierungen von POSIT funktionieren nur an nicht koplanaren Punkten (mit anderen Worten, es funktioniert nicht mit flachen Objekten oder Ebenen).

Ein anderer Ansatz besteht darin, ein 3D- CAD-Modell über dem Foto eines bekannten Objekts zu registrieren, indem ein geeignetes Distanzmaß bezüglich der Posenparameter optimiert wird. Das Distanzmaß wird zwischen dem Objekt auf dem Foto und der 3D- CAD-Modellprojektion in einer bestimmten Pose berechnet . Je nach verwendeter Posendarstellung ist eine perspektivische Projektion oder eine orthogonale Projektion möglich. Dieser Ansatz ist für Anwendungen geeignet, bei denen ein 3D-CAD-Modell eines bekannten Objekts (oder einer Objektkategorie) verfügbar ist.

Von einer kalibrierten 2D-Kamera

Bei einem 2D-Bild eines Objekts und der auf ein Weltkoordinatensystem kalibrierten Kamera ist es auch möglich, die Pose zu finden, die das 3D-Objekt in seinem Objektkoordinatensystem ergibt. Dies funktioniert wie folgt.

Extrahieren von 3D aus 2D

Ausgehend von einem 2D-Bild werden Bildpunkte extrahiert, die Ecken in einem Bild entsprechen. Aus den 2D-Punkten werden die Projektionsstrahlen der Bildpunkte rekonstruiert, so dass die 3D-Punkte bestimmt werden können, die mit den rekonstruierten Strahlen einfallen müssen.

Pseudocode

Der Algorithmus zum Bestimmen der Posenschätzung basiert auf dem iterativen Algorithmus des nächsten Punktes . Die Hauptidee besteht darin, die Entsprechungen zwischen 2D-Bildmerkmalen und Punkten auf der 3D-Modellkurve zu bestimmen.

(a) Reconstruct projection rays from the image points
(b) Estimate the nearest point of each projection ray to a point on the 3D contour
(c) Estimate the pose of the contour with the use of this correspondence set
(d) goto (b)

Der obige Algorithmus berücksichtigt keine Bilder, die ein teilweise verdecktes Objekt enthalten. Der folgende Algorithmus geht davon aus, dass alle Konturen starr gekoppelt sind, d. h. die Pose einer Kontur definiert die Pose einer anderen Kontur.

(a) Reconstruct projection rays from the image points
(b) For each projection ray R:
     (c) For each 3D contour:
          (c1) Estimate the nearest point P1 of ray R to a point on the contour
          (c2) if (n == 1) choose P1 as actual P for the point-line correspondence
          (c3) else compare P1 with P:
                   if dist(P1, R) is smaller than dist(P, R) then
                       choose P1 as new P
(d) Use (P, R) as correspondence set.
(e) Estimate pose with this correspondence set
(f) Transform contours, goto (b)

Pose durch Vergleich einschätzen

Es gibt Systeme, die eine Datenbank eines Objekts bei verschiedenen Rotationen und Translationen verwenden, um ein Eingabebild mit der Pose zu vergleichen. Die Genauigkeit dieser Systeme ist auf Situationen beschränkt, die in ihrer Bilddatenbank dargestellt sind, jedoch besteht das Ziel darin, eine Pose zu erkennen, anstatt sie zu bestimmen.

Software

  • posest , eine GPL C / C++ Bibliothek für die 6DoF Posenschätzung aus 3D-2D Korrespondenzen.
  • diffgeom2pose , schneller Matlab-Solver für die 6DoF-Posenschätzung aus nur zwei 3D-2D-Korrespondenzen von Punkten mit Richtungen (Vektoren) oder Punkten an Kurven (Punkt-Tangenten). Die Punkte können SIFT mit Merkmalsrichtungen zugeordnet werden.
  • MINUS : C++ Paket zur (relativen) Posenschätzung von drei Ansichten. Umfasst Fälle von drei entsprechenden Punkten mit Linien an diesen Punkten (wie in Feature-Positionen und -Ausrichtungen oder Kurvenpunkten mit Tangenten) und auch für drei entsprechende Punkte und eine Linienkorrespondenz.

Siehe auch

Verweise

Literaturverzeichnis

Externe Links