Warning

This page is located in archive.

This homework is split into two weeks.

Having a fundamental matrix `F`

and camera calibration `K`

, the essential matrix `E`

can be computed from the equation

$F = K^{-\top} E K^{-1}\,.$

First, matrix `E1`

is computed as

$E1 = K^{\top} F K\,.$

Due to errors in data used to estimate `F`

and/or `K`

, the obtained matrix `E1`

is not a true essential matrix, its two non-zero singular values are not equal. So the matrix must be modified in order to make these singular values equal. The matrix `E1`

should be decomposed using the singular value decomposition, the matrix `D`

replaced by diag(1,1,0) and correct esential matrix `E`

is composed back.

$E1 = U D V^{\top}$

$E = U \left[\begin{array}{ccc}1&0&0\\0&1&0\\0&0&0\end{array}\right]V^{\top}$

Finally, `K`

should be applied to compute a fundamental matrix `Fe`

consistent with `K`

from `E`

(this matrix will differ from the original `F`

).

Find two essential matrices. A possibly bad `Ex`

and the best `E`

- Compute essential matrix
`Ex`

using your best fundamental matrix`F`

estimated in HW-08 and internal calibration from HW-04. Compute also the fundamental matrix`Fx`

consistent with`K`

from`Ex`

and`K`

- Draw the 12 corresponding points IX (from HW-08) in different colour in the two images. Using
`Fx`

, compute the corresponding epipolar lines and draw them into the images in corresponding colours. Export as`09_egx.pdf`

. - Draw graphs of epipolar errors
`d1_i`

and`d2_i`

w.r.t`Fx`

for all points. Draw both graphs into single figure (different colours) and export as`09_errorsx.pdf`

. - Find essential matrix
`E`

by minimizing the maximum epipolar error of the respective fundamental matrix`Fe`

consistent with`K`

using the same correspondences:- Generate all 7-tuples from the set of 12 correspondences and estimate fundamental matrix
`F`

for each of them. - For each tested
`F`

, compute essential matrix`E`

using internal calibration`K`

. - Compute fundamental matrix
`Fe`

consistent with`K`

from`E`

and`K`

and**its**epipolar error over all matches. - Choose such
`Fe`

and`E`

that minimize maximal epipolar error over all matches.

- Draw the 12 corresponding points in different colour in the two images. Using
`Fe`

, compute the corresponding epipolar lines and draw them into the images in corresponding colours. Export as`09_eg.pdf`

. - Draw graphs of epipolar errors
`d1_i`

and`d2_i`

w.r.t`Fe`

for all points. Draw both graphs into single figure (different colours) and export as`09_errors.pdf`

. - Save
`F`

,`Ex`

,`Fx`

,`E`

,`Fe`

and`u1`

,`u2`

,`point_sel_e`

(indices of seven points used for computing`Fe`

) as`09a_data.mat`

.

- Decompose the best
`E`

into relative rotation`R`

and translation`C`

(four solutions). Choose such a solution that reconstructs (most of) the points in front of both (computed) cameras. - Construct projective matrices
`P1`

,`P2`

(including`K`

). - Compute scene points
`X`

. - Display the images, draw the input points as blue dots and the scene points
`X`

projected by appropriate`P_i`

as red circles. Draw also the edges, connecting the original points as yellow lines. Export as`09_reprojection.pdf`

. - Draw graph of reprojection errors and export as
`09_errorsr.pdf`

. - Draw the 3D point set (using 3D plotting facility) connected by the edges as a wire-frame model, shown from the top of the tower, from the side, and from some general view. Export as
`09_view1.pdf`

,`09_view2.pdf`

, and`09_view3.pdf`

. - Save
`Fe`

,`E`

,`R`

,`C`

,`P1`

,`P2`

,`X`

, and`u1`

,`u2`

,`point_sel_e`

as`09b_data.mat`

.

The first part: upload an archive consisting of:

`09_errorsx.pdf`

,`09_errors.pdf`

`09_egx.pdf`

,`09_eg.pdf`

`09a_data.mat`

`hw09a.m`

or`hw09a.py`

– your implementation- any other files required by your implementation

The second part: upload an archive consisting of:

`09b_data.mat`

`09_reprojection.pdf`

`09_errorsr.pdf`

`09_view1.pdf`

,`09_view2.pdf`

,`09_view3.pdf`

`hw09b.m`

or`hw09b.py`

– your implementation- other files required by your implementation

courses/gvg/labs/hw-09.txt · Last modified: 2020/04/14 21:43 by xmatousm