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
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
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 same correspondences:
F for each of them.
F, compute essential matrix E using internal calibration K.
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 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_e (indices of seven points used for computing Fe) 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 original 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_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
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