Frage

Ich versuche, die 3D-Koordinaten aus mehreren Paaren von zwei Blickpunkten zu berechnen.
Zuerst habe ich die Matlab-Funktion verwendet estimateFundamentalMatrix() um das zu bekommen F der übereinstimmenden Punkte (Anzahl > 8), also:

F1 =[-0.000000221102386   0.000000127212463  -0.003908602702784
     -0.000000703461004  -0.000000008125894  -0.010618266198273
      0.003811584026121   0.012887141181108   0.999845683961494]

Und meine Kamera – die diese beiden Bilder aufgenommen hat – wurde mit der intrinsischen Matrix vorkalibriert:

K = [12636.6659110566, 0, 2541.60550098958
     0, 12643.3249022486, 1952.06628069233
     0, 0, 1]

Aus diesen Informationen habe ich dann die wesentliche Matrix berechnet mit:

E = K'*F*K

Mit der SVD-Methode habe ich endlich die projektiven Transformationsmatrizen erhalten:

P1 = K*[ I | 0 ] 

Und

P2 = K*[ R | t ]

Wo R Und t Sind:

R = [ 0.657061402787646 -0.419110137500056  -0.626591577992727
     -0.352566614260743 -0.905543541110692   0.235982367268031
     -0.666308558758964  0.0658603659069099 -0.742761951588233]

t = [-0.940150699101422
      0.320030970080146
      0.117033504470591]

Ich weiß, dass es vier mögliche Lösungen geben sollte, meine berechneten 3D-Koordinaten schienen jedoch nicht korrekt zu sein.
Ich habe mit der Kamera ein FLACHES Objekt mit markierten Punkten fotografiert.Ich habe die Punkte von Hand abgeglichen (was bedeutet, dass es keine offensichtlichen Fehler bezüglich des Rohmaterials geben sollte).Das Ergebnis war jedoch eine Oberfläche mit leichten Streifen.
Ich schätze, das könnte daran liegen, dass die Bilder nicht mit Verzerrungen verarbeitet wurden (ich erinnere mich aber, dass das der Fall war).

Ich möchte nur wissen, ob diese Methode das Problem der 3D-Rekonstruktion löst, oder?Vor allem, wenn wir die intrinsische Matrix der Kamera bereits kennen.

Von JCraft am 4. August bearbeitet:Ich habe den Vorgang noch einmal durchgeführt und einige Bilder erhalten, die das Problem zeigen. Ich werde eine weitere Frage mit Einzelheiten schreiben und dann den Link posten.

Von JCraft am 4. August bearbeitet:Ich habe eine neue Frage gepostet: Die kalibrierte Kamera erhält übereinstimmende Punkte für die 3D-Rekonstruktion, der Idealtest ist fehlgeschlagen.Und @Schorsch weiß Ihre Hilfe bei der Formatierung meiner Frage sehr zu schätzen.Ich werde versuchen zu lernen, wie man Eingaben in SO macht, und auch versuchen, meine Grammatik zu verbessern.Danke!

War es hilfreich?

Lösung

Wenn Sie nur über die Grundmatrix und die intrinsischen Werte verfügen, können Sie nur eine maßstabsgetreue Rekonstruktion erhalten.Das ist Ihr Übersetzungsvektor t in einigen unbekannten Einheiten.Sie können die 3D-Punkte in realen Einheiten auf verschiedene Arten erhalten:

  • Sie benötigen einige Referenzpunkte auf der Welt mit bekannten Abständen zwischen ihnen.Auf diese Weise können Sie ihre Koordinaten in Ihren unbekannten Einheiten berechnen und den Skalierungsfaktor berechnen, um Ihre unbekannten Einheiten in reale Einheiten umzuwandeln.
  • Sie müssen die Extrinsiken jeder Kamera relativ zu einem gemeinsamen Koordinatensystem kennen.Sie können beispielsweise irgendwo in Ihrer Szene ein schachbrettartiges Kalibrierungsmuster haben, das Sie extrinsische Effekte erkennen und daraus berechnen können.Sieh dir das an Beispiel.Wenn Sie die Extrinsiken kennen, können Sie übrigens die Fundamentalmatrix und die Kameraprojektionsmatrizen direkt berechnen, ohne Punkte abgleichen zu müssen.
  • Sie können eine Stereokalibrierung durchführen, um R und t zwischen den Kameras abzuschätzen, wodurch Sie auch die Fundamental- und Essential-Matrizen erhalten.Sieh dir das an Beispiel.

Andere Tipps

Flache Gegenstände sind kritische Oberflächen, mit denen man sein Ziel nicht erreichen kann.Versuchen Sie, zwei (oder mehr) Punkte außerhalb des Flugzeugs hinzuzufügen (siehe Hartley und Zisserman oder einen anderen Text zu diesem Thema, falls weiterhin Interesse besteht)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top