Seite 1 von 1

Eight-point problem (Fundamentalmatrix)

Verfasst: 14. Jul 2012 16:10
von Surf_Kiter
With the Eight-point algorithm, I can build the homogeneous linear equation system to estimate the fundamental matrix.
For building up the equation system I need least 8 correspondences (so 8 interest points in each Image or perspective).
The equation system A is solved with the SVD, but before I need to scale and shift all interest points to [-1 .. 1] by applying the transformation matrix.

After solving the equation system using SVD with:

Code: Alles auswählen

[U, D, V'] = SVD(A,0);
I obtain F_tilde by the matrix V' which is to reshape to a Matrix (3x3), so has rank of 3.

Until now, there is no understanding problem (I suppose).

But now for solving this problem, F_tilde should be of rank(F_tilde) = 2. (Slides 74-79)

Why we need rank of 2 ?
I do not understand this step.

Re: Eight-point problem (Fundamentalmatrix)

Verfasst: 14. Jul 2012 16:21
von Surf_Kiter
I think I have now the answer :) .

For estimating the fundamental matrix, we need at least seven degrees of freedom. One equation per correspondence.
But with seven correspondences we get a non-linear system.
So we are using eight corresponding points to get a linear system.

And the Fundamentalmatrix F is (3x3). So we need no rank(F) of 3, but a rank(F) of 2, because of this eight equations.

Is this appraisal correct from me?

Re: Eight-point problem (Fundamentalmatrix)

Verfasst: 15. Jul 2012 13:52
von Toobee
The fundamental matrix is defined as having rank 2. Hence you have to enforce this constraint after using SVD by setting the smalles eigenvalue to zero and then re-caculate the S

This is a chapter of the book Prof. Roth used in the slides:
http://www.robots.ox.ac.uk/~vgg/hzbook/ ... ipolar.pdf

if you take a look at the bottom of page 223 you will find an explanation why it is of rank 2. I still have problems to fully understand it myself, but I think it hast to do with the backgrounds and the properties of epipolar geometry in particular with the epipole and writing a vector as matrix. The epipole-matrix itself seems only to be of rank 2. The fundamental matrix is derived from or based on this epipole/epipolar-line property and hence also has to have rank 2.

It is jsut that this 8-point algorithm will give you a rank 3 matrix, hence you have to force the matrix into the shape it is suppose to have by setting

Code: Alles auswählen

[U, D, V] = svd(A,0);
    Ftilde = reshape(V(:,end), 3, 3)';
    [U, D, V] = svd(Ftilde, 0);
    D(3,3) = 0; %F is supposed to be of rang 2
    F = U*D*V';