I took CSC2503 Computational Vision which is probably one of the most interesting (i.e. best course) I have taken in University (it has opened up a whole new world). The project consisted of me reading  several times in order for me to understand the mathematical background (which is still not complete). I had to write matlab code in order to simulate the projective coordinate transform. I had to understand the existing matlab and mex code as well as the C version of video orbits. I also had to learn to program perl and use LYX (finally, my assignments look like homework).
I used existing utilities such as pnmcut, pnmfile, pnmpaste, gimp, xv and a whole lot of perl. I proceed to cut up the image into a 6x6 or 7x7 grid. Then I estimate P for each section and record the MSE. The MSE errors are plotted in matlab and you can visually inspect to see which regions have a high MSE.
The high MSE regions are masked out in the original image by pasting in squares of NaN into the regions of high MSE. Then we reestimate P and record the new MSE. Theoretically, the new MSE should be lower because the parameters P will be more ``exact''. Also, the inverse masking can be done and we can calculate a new P for those sections with a high MSE. The new P for these regions should result in a much lower MSE.