Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different fundamental matrix from the same projection matrices

I use two projection matrices P1 and P2 (for example I'm using dinosaur dataset) and I need to compute the fundamental matrix F. So I use two Matlab functions:

  • Peter Kovesi's function: www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m
  • Zisserman: www.robots.ox.ac.uk/~vgg/hzbook/code/vgg_multiview/vgg_F_from_P.m

These functions should do the same thing, but I have a different F value! How it's possible? Which is the right functions?

If two points X1 and X2 are "the same" in two different images, X2^T*F*X1 = 0 ... So I found two corresponded points from two rotated images (5 degrees) by using SURF, but X2^T*F*X1 is never equal to zero with this two funtcions. Any ideas?

Instead if I use this function that computes F from matches points:

  • ransac fit fundamental matrix by Peter Kovesi: ransacfitfundmatrix.m

I have that X2^T*F*X1 = 0 .... Obviously F is different from the two F I had with the other two functions...

like image 904
Roberto Iacono Avatar asked Oct 08 '22 02:10

Roberto Iacono


1 Answers

Well for one thing, it's overwhelmingly likely that the points aren't perfectly rotated version of each other. SURF uses a lot of approximations, bi-linear interpolation and a whole slew of things that break true rotational invariance. So there might not exist such a fundamental matrix (if there's no linear relationship between the two sets of points.) Yes, this is true even after you do point matching.

That said, your X2^T*F*X1 should probably be small if the matching is really good, but I'd be surprise if it's ever exactly zero for any real image.

like image 196
Chris A. Avatar answered Oct 13 '22 12:10

Chris A.