Search code examples
opencvcomputer-visionpose-estimation

Camera pose estimation


I'm currently working on a project that deals with the reconstruction based on a set of images, in a multi-view stereo approach. As such I need to know the several images pose in space. I find matching features using surf, and from the correspondences I find the essential matrix.

Now comes the problem: It is possible to decompose the essential matrix with SVD, but this can lead to 4 different results, as I read in a book. How can I obtain the correct one, assuming this is possible?

What other algorithms can I use for this?


Solution

  • Thanks to Zaphod answer I was able to solve my problem. Here's what I did:

    First I calculated the Essential Matrix (E) from a set of point correspondences in both images.

    Using SVD, decomposed it into 2 solutions. Using the negated Essential Matrix -E (which also satisfies the same constraints) I arrived at 2 more solutions for a total of 4 possible camera positions and orientations.

    Then, for all solutions I triangulated the point correspondences and determined which intersected in front of both cameras, by taking the dot product of the point coordinate and each of the cameras viewing direction. I both are positive, then that intersection is in front of both cameras.

    In the end the solution that delivers the most intersections in front of the cameras is the chosen one.