For Part 3, I have to create a calibration matrix.

I wrote a program in MatLab based on Prof. Berg's calculations.

The result is a Homogeneous Transformation Matrix M that represents the calibration.

M is not (homogeneous) diagonal as expected. M is either wrong, or must be factored in some way. With the second column being zero, it doesn't look promising.

Rather than using complicated math to get an approximate solution that seems wrong, I solve Am=0 exactly on my TI89. I get exactly what I wanted Homogeneous diagonal. Although, as it turns out my calculator gives me a diagonal of free variable (1 degree of freedom). In retrospect this is proper, because Psx is only constrained to be the ratio of u'/w'. Scalar multiples of the projection are the same projection. Also the TI89 switched the last 2 columns. Again, it should be free to do that as the last 2 components of the Homogeneous Screen Coordinates are both the same w'.

I figured out why the Eigenvector Matrix MatLab was returning wasn't working. As it turns out the MatLab eigenvectors were columns not rows. I just had to transpose v. I recovered the correct normalized diagonal homogeneous matrix.

I went further and used a nontrivial Perspective Projection (Non-Orthographic). I used 6 toy points. I transformed them with a homogeneuous diagonal. I SVD the screen points. I get my transform back. This time exact without 3rd coord switched with 4th coord. It correctly transforms my toy points.