问题
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...
回答1:
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.
来源:https://stackoverflow.com/questions/10161940/different-fundamental-matrix-from-the-same-projection-matrices