1) The goal of the first questions is to implement some code that performs calibration using the method described in the book; by first computing a projection matrix, and then decomposing that matrix to find the extrinsic and intrinsic parameters. On the web site I have given you a program, written in C that uses OpenCV, called assign3-projection-shell.c. This program takes ten 3d points, and projects them using the given camera matrix, rotation matrix and translation vector. Your goal is to write the two routines that are missing, which are computeprojectionmatrix and decomposeprojectionmatrix. The first routine computes the projection matrix using the method described in Section 6.3.1 of the book, and the second uses the method in Section 6.3.2 to decompose the projection matrix into a camera matrix, rotation matrix and translation vector.
It should be the case that the computed camera matrix, rotation matrix and translation vector are the same (or very similar) to the original versions that were used to create the projected points. The program assign2-projection-shell.c is on the web site, and I will also e-mail it to you. You hand in your program source and the resulting output file assign2-out created by running the program.
2) There are two ways to fit an ellipse to a set of points, one uses algebraic distance the other geometric distance. Given one advantage and disadvantage of using algebraic distance, and one advantage and disadvantage of using geometric distance for fitting an ellipse.