Ich führe einen einfachen Test für OpenCV Kamera Pose Schätzung. Wenn ich ein Foto und das gleiche Foto hochskaliert (gezoomt) habe, benutze ich sie, um Merkmale zu erkennen, die essentielle Matrix zu berechnen und Kameraposen wiederherzustellen.Ist die Funktion recoverPose() in OpenCV linkshändig?
Mat inliers;
Mat E = findEssentialMat(queryPoints, trainPoints, cameraMatrix1, cameraMatrix2,
FM_RANSAC, 0.9, MAX_PIXEL_OFFSET, inliers);
size_t inliersCount =
recoverPose(E, queryGoodPoints, trainGoodPoints, cameraMatrix1, cameraMatrix2, R, T, inliers);
Also, wenn ich das Originalbild als erste angeben, und das gezoomte Bild als die zweiten, bekomme ich Übersetzung T der Nähe von [0; 0; -1]. Die zweite Kamera (gezoomt) ist jedoch näher am Objekt als die erste. Wenn also die Z-Achse von der Bildebene in die Szene geht, sollte die zweite Kamera einen positiven Versatz entlang der Z-Achse haben. Für das Ergebnis, das ich bekomme, geht die Z-Achse von der Bildebene zur Kamera, die unter anderen Achsen (X geht nach rechts, Y nach unten) linkshändiges Koordinatensystem bildet. Ist das wahr? Warum unterscheidet sich dieses Ergebnis von dem dargestellten Koordinatensystem here?