OpenCV Projection Matrix Choice

asked 2016-07-29 07:52:23 -0500

Dysth gravatar image

Hi, I am currently facing a problem, to depict you what my programm does and should do, here is the copy/paste of the beginning of a previous post I've made.

This program lies on the classic "structure from motion" method.

The basic idea is to take a pair of images, detect their keypoints and compute the descriptors of those keypoints. Then, the keypoints matching is done, with a certain number of tests to insure the result is good. That part works perfectly.

Once this is done, the following computations are performed : fundamental matrix, essential matrix, SVD decomposition of the essential matrix, camera projection matrices computation and finally, triangulation.

The result for a pair of images is a set of 3D coordinates, giving us points to be drawn in a 3D viewer. This works perfectly, for a pair.

However, I have to perform a step manually, and this is not acceptable if I want my program to efficiently work with more than two images.

Indeed, I compute my projection matrices according the classic method, as follows, at paragraph "Determining R and t from E" :

I have then 4 possible solutions for my projection matrix.

I think I have understood the geometrical point of view of the problem, portrayded in this Hartley and Zisserman paper extract (chapters 9.6.3 and 9.7.1) :

Nonetheless, my question is : Given the four possible projection matrices computed and the 3D points computed by the OpenCV function triangulatePoints() (for each projection matrix), how can I elect the "true" projection matrix, automatically ? (without having to draw 4 times my points in my 3D viewer, in order to see if they are consistent)

Thanks for reading.

edit retag flag offensive close merge delete