Struktur aus Bewegung, Rekonstruieren der 3D-Punktwolke bei gegebener 2D-Bildpunktkorrespondenz
Anwendungsfall
Ein Objekt dreht sich mit unterschiedlicher Geschwindigkeit um sein ZentrumEine feste Kamera schaut auf das ObjektBei gegebener 2D-Bildpunktkorrespondenz wird die 3D-Punktwolke rekonstruiertWenn sich das Objekt dreht, sieht die Kamera einen anderen Teil davon, und somit werden verschiedene Punkte und Übereinstimmungen erkannt.Szene
ein. N Bilder
b. N-1 Bildpaare
c. N-1 2D-Punkt-Korrespondenz (zwei 2D-Punkt-Arrays)
Implementierung
Für jede der (N-1) 2D-Punktkorrespondenzen
Kamerarelative Pose berechnenTriangulieren, um die 3D-Punkte zu erhaltenLeiten Sie für jeweils 2 3D-Punkte-Arrays die Korrespondenz mithilfe der 2D-Korrespondenz ab, die unter [c] angegeben ist.Leiten Sie mithilfe der von @ [3] abgeleiteten 3D-Korrespondenz die Spur jedes 3D-Objektpunkts ab, und erhalten Sie eine einzelne Spur für jeden der Objektpunkte / -scheitelpunkteErgebnis:
A (N – 2) 3D-Punktarrays, Korrespondenzen, Kameraposen und Spuren (eine Spur für jeden Objektpunkt)
Ansatz zur Behebung des Problems:
Berechnen Sie die Punktwolke, da das Triangulationsergebnis bis zu einer Skala genau ist.
A. Jedes der Triangulationsergebnisse und die kamerarelativen Übersetzungen sind
ausgedrückt in nicht homogenen Koordinaten (jedes Ergebnis hat eine andere Skala).
B. Unter der Annahme, dass die Objektstruktur solide ist und sich somit nicht ändert,
Der Abstand der 3D-Punkte zu ihrer Mitte sollte für alle Kamerapositionen identisch sein.
C. Unter Berücksichtigung von [B] alle triangulierten 3D-Punkte bei [A] und Kameraübersetzungen
kann in ein homogenes Koordinatensystem umgewandelt werden.
D. Wählen Sie eine der Kameraposen und transformieren Sie den ersten Punkt in jeder Spur (definiert mit @ [4]).
zu dieser Kamerapose (Transformation durch die Umkehrung der akkumulierten Kamera)
Pose), woraus sich der erwartete Punkt ergeben könnte.