Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Why does recoverPose return a non-zero position when identical point vectors are supplied?

By accident I tried estimating the relative position of an image to itself (don't ask). I would expect a result of 0 translation and 0 rotation.

Surprisingly, I get a non-zero translation result. In fact I get a rather significant result: 0.0825 -0.0825.

In essence my code is as follows:

cv::Point2d pp(u0, v0); cv::Mat R, t, mask; cv::Mat E = cv::findEssentialMat(points1, points2, focal, pp, cv::RANSAC, 0.999, 1.0, mask); cv::recoverPose(E, points1, points2, R, t);

In the above code, t != 0. My question is: is a non-zero result for recoverPose valid when points1 and points2 are identical? If so, why?

click to hide/show revision 2
No.2 Revision

Why does recoverPose return a non-zero position when identical point vectors are supplied?

By accident I tried estimating the relative position of an image to itself (don't ask). I would expect a result of 0 translation and 0 rotation.

Surprisingly, I get a non-zero translation result. In fact I get a rather significant result: 0.0825 -0.0825.

In essence my code is as follows:

cv::Point2d pp(u0, v0);
 cv::Mat R, t, mask;
 cv::Mat E = cv::findEssentialMat(points1, points2, focal, pp, cv::RANSAC, 0.999, 1.0, mask);
 cv::recoverPose(E, points1, points2, R, t);

t);

In the above code, t != 0. My question is: is a non-zero result for recoverPose valid when points1 and points2 are identical? If so, why?