Angenommen, ich habe gute Übereinstimmungen zwischen zwei Bildern und versuche, die Kamerabewegung zwischen ihnen wiederherzustellen. kann ich OpenCV 3 der neuen Anlagen für diese wie folgt verwenden:Kamera Pose Schätzung: Wie interpretiere ich Rotations-und Translationsmatrizen?
Mat E = findEssentialMat(imgpts1, imgpts2, focal, principalPoint, RANSAC, 0.999, 1, mask);
int inliers = recoverPose(E, imgpts1, imgpts2, R, t, focal, principalPoint, mask);
Mat mtxR, mtxQ;
Mat Qx, Qy, Qz;
Vec3d angles = RQDecomp3x3(R, mtxR, mtxQ, Qx, Qy, Qz);
cout << "Translation: " << t.t() << endl;
cout << "Euler angles [x y z] in degrees: " << angles.t() << endl;
Nun, ich habe Probleme Einwickeln meinen Kopf herum, was R
und t
eigentlich bedeuten. Sind sie die Transformation, die benötigt wird, um Koordinaten von Kameraraum 1 zu Kameraraum zwei abzubilden, wie in p_2 = R * p_1 + t
?
dieses Beispiel Betrachten wir mit Ground-Truth manuell beschriftet Korrespondenzen
Der Ausgang I bekommen, ist dies:
Translation: [-0.9661243151855488, -0.04921320381132761, 0.253341406362796]
Euler angles [x y z] in degrees: [9.780449804801876, 46.49315494782735, 15.66510133665445]
Ich versuche, dies zu passen, was ich in dem Bild sehen, und kommen mit der Interpretation, dass [-0.96,-0.04,0.25]
sagt mir, ich habe nach rechts bewegt, wie die Koordinaten entlang der negativen x-Achse bewegt haben, aber es würde mir auch sagen, ich habe mich weiter weg bewegt, wie die Koordinaten mo entlang der positiven z-Achse.
Ich habe auch die Kamera um die y-Achse gedreht (nach links, was ich denke, wäre eine Drehung gegen den Uhrzeigersinn um die negative y-Achse, weil in OpenCV, die y-Achse nach unten zeigt, nicht ?)
Frage: Ist meine Interpretation korrekt und wenn nein, was ist die richtige?
Aber die positive z-Komponente würde mir sagen, dass camera2 auf das Auto bezogen hat, aber das stimmt nicht mit der Interpretation überein, dass camera2 das linke Bild ist. Was vermisse ich? – oarfish
Lies noch einmal, was ich geschrieben habe: "t ist der Vektor, der bei camera1 verwurzelt ist, mit der Spitze an Kamera2". Eine positive Z-Komponente von t bedeutet nur, dass sich das Zentrum der Kamera 2 vor der XY-Ebene der Kamera1 befindet, d. H. Vor der Mitte der Kamera1. Das ist bei Ihren Bildern durchaus plausibel: Stellen Sie sich vor, Sie erweitern die Bildebene in der Sicht auf die Front des Fahrzeugs und entscheiden dann, auf welcher Seite dieser Ebene die Kamera der Seitenansicht sein soll. Auch, bitte upvote/akzeptieren Sie die Antwort, wenn Sie es nützlich finden. –
Wenn ich das tue, scheint es mir, dass das Zentrum der Kamera 2 * hinter * der Kamera 1 ist, also sollte z negativ sein. Aber es ist nicht sehr klar wegen der Rotation. – oarfish