OpenCV Q&A Forum - RSS feedhttp://answers.opencv.org/questions/OpenCV answersenCopyright <a href="http://www.opencv.org">OpenCV foundation</a>, 2012-2018.Wed, 24 Feb 2016 01:15:59 -0600Which Essential Matrix to choose from the 10 solutions of five-point algorithm?http://answers.opencv.org/question/88408/which-essential-matrix-to-choose-from-the-10-solutions-of-five-point-algorithm/The five-point algorithm returns 10 solutions for the Essential matrix. Which matrix to choose among the 10 solutions and resolve the ambiguity?
What is the criteria on which matrix to choose from the 10 Matrices? Thank you.Prasad_MyWayWed, 24 Feb 2016 01:15:59 -0600http://answers.opencv.org/question/88408/findEssentialMat() pose estimation: wrong translation vector in some caseshttp://answers.opencv.org/question/68328/findessentialmat-pose-estimation-wrong-translation-vector-in-some-cases/ I am currently using epipolar geometry based pose estimation for estimating pose of one camera w.r.t another, with non-zero baseline between the cameras. I am using the five-point algorithm (implemented as findEssentialMat in opencv) to determine the up-to-scale translation and rotation matrix between the two cameras.
I have found two interesting problems when working with this, it would be great if someone can share their views: I don't have a great theoretical background in computer vision:
1. If the rotation of the camera is along the Z axis i.e., parallel to the scene and the translation is non-zero, the translation between camera1 and camera2 (which is along X in the real world) is wrongly estimated to be along Z. Example case: cam1 and cam2 spaced by approx 0.5 m on the X axis, cam2 rotated clockwise by 45 deg.
Image pair
![image pair1][1]
Output:
Translation vector is [-0.02513, 0.0686, 0.9973] (wrong, should be along X)
Rotation Euler angles: [-7.71364, 6.0731, -43.7583] (correct)
2. The geometry between image1 and image2 is not the exact inverse of the geometry between image2 and image1. Again while an image1<=>image2 correspondence produces the correct translation, image2<=>image1 is way off (rotation values are close though). Example below, where camera2 was displaced along X and rotated for ~30 degrees along Y
Image 1 to image 2
![1to2][2]
Output: Rotation [-1.578, 24.94, -0.1631] (Close) Translation [-0.0404, 0.035, 0.998] (Wrong)
Image 2 to image 1
![2to1][3]
Output: Rotation [2.82943, -30.3206, -3.32636] Translation [0.99366, -0.0513, -0.0999] (Correct)
Looks like it has no issues figuring the rotations out but the translations are a hit or miss.
As to question 1, I was initially concerned because because the rotation is along the Z axis, the points might appear to be all coplanar. But the five point algorithm paper particularly states: "The 5-point method is essentially unaffected by the planar degeneracy and still works".
Thank you for your time!
[1]:http://s14.postimg.org/umezzqt7z/case1.jpg
[2]:http://s14.postimg.org/h5moo3wtr/1to2.png
[3]:http://s14.postimg.org/x55c7nsvj/2to1.pngsaihvMon, 10 Aug 2015 21:35:12 -0500http://answers.opencv.org/question/68328/What method does solvepoly use?http://answers.opencv.org/question/54432/what-method-does-solvepoly-use/ The method findEssentialMat uses findPoly to determine roots of a 10th order polynomial. Can anyone tell me which method it uses to determine these zeros? DrugbirdTue, 03 Feb 2015 08:44:58 -0600http://answers.opencv.org/question/54432/How to use five-point.cpphttp://answers.opencv.org/question/17584/how-to-use-five-pointcpp/Hi there,
I notice a nice little function has appeared in opencv : five-point.cpp.
However I can't figure how to use the various functions inside. Is there an example available ?
If the functions are not mature yet, I would be glad to test them.
Best regards,
GuidoGuidoFri, 26 Jul 2013 07:27:27 -0500http://answers.opencv.org/question/17584/