5

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:

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^TFX1 = 0 ... So I found two corresponded points from two rotated images (5 degrees) by using SURF, but X2^TFX1 is never equal to zero with this two funtcions. Any ideas?

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

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

1
  • I'm sure that Peter Kovesi's function is right, it functions correctly! Commented Apr 18, 2012 at 10:13

2 Answers 2

2

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.

2

The fundamental matrix is unique only up to a scale.

So, even if you have different fundamental matrices, both can be correct for your images.

Not the answer you're looking for? Browse other questions tagged or ask your own question.