Seite 1 von 1

### Eight-point problem (Fundamentalmatrix)

Verfasst: 14. Jul 2012 16:10
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
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
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';