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.