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
<latex>F = K^{-\top} E K^{-1}\,.</latex>
First, matrix E1
is computed as:
E1 = K' * 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:
[U D V] = svd( E1 ); D(2,2) = D(1,1); E = U * D * V';
To summarize, starting with regular matrix G
obtained from the 8-point algorithm, we apply SVD two times. First, G
is decomposed, the smallest singular value zeroed and F
is composed. Secondly, K
is applied, E1
is decomposed and the two singular values are made equal giving raise to essential matrix E
. Finally, K
can be applied to compute a fundamental matrix Fe
consistent with K
from E
.
Find two essential matrices. A possibly bad Ex
and the best E
Ex
using your best fundamental matrix F
estimated in HW-09 and internal calibration K.mat from HW-04. Compute also the fundamental matrix Fx
consistent with K
from Ex
and K
Fx
, compute the corresponding epipolar lines and draw them into the images in corresponding colours. Export as 09_egx.pdf
.
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
.
E
by minimizing the maximum epipolar error of the respective fundamental matrix Fe
consistent with K
using the correspondences from HW-09:
F
(via G
) for each of them.
Fe
consistent with K
from E
and K
and its epipolar error over all matches.
Fe
and E
that minimize maximal epipolar error over all (i.e. the 12 + the mesh) matches.
Fe
, compute the corresponding epipolar lines and draw them into the images in corresponding colours. Export as 09_eg.pdf
.
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
.
F
, Ex
, Fx
, E
, Fe
and u1
, u2
, point_sel
(same as in HW-09) as 09a_data.mat
.
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.
P1
, P2
(including K
).
X
.
X
projected by appropriate P_i
as red circles. Draw also the edges, connecting the reprojected points as yellow lines. Export as 09_reprojection.pdf
.
09_errorsr.pdf
.
09_view1.pdf
, 09_view2.pdf
, and 09_view3.pdf
.
Fe
, E
, R
, C
, P1
, P2
, X
, and u1
, u2
, point_sel
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
– your Matlab implementation entry point.
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
– your Matlab implementation entry point.