Recovering relative translation/rotation from fundamental matrix

asked 2013-01-13 07:35:18 -0500

Majek gravatar image

Hello, I am trying to do 3d reconstruction using multiple views of an object. What I have up to now is the following: 1.) Camera Intrinsics are known, so undistort() all images. 2.) Do SIFT on all images. 3.) Match all keypoints. (results visually tested, seem very good) 4.) Use findfundamentalmat(), reprojection error is also very good, and epilines look right. 5.) Extract 4 possible solutions from f using SVD, as stated in Wikipedia 6.) Build a unit cube, translate along z, and reproject it to all images, relative to the first. Also compute the epilines to the points of the cube using computed f.

The problem I have now is, by my understanding, the four possible solutions should let the reprojected cube lie on it's matching epilines from the first images. But they do not. The transformation "seems" right, but even trying interactively different scalings of the translation the points of the reprojected cube are never on the epilines. Here are some screenshot to illustrate the situation. The epilines seem right to me.

Image 0: (R|t) = (0|0) image0

image 1 : (R|t) = computed transformation according to wikipedia (already picked the "right" solution) image1

I know this seems to be a problematic thing, I found lots of thread about similar problems but no solutions... :/ please help!

edit retag flag offensive close merge delete