The program takes the name of two images as command-line input and opens them in separate windows. In order to register the two images, the user must type 'i' (to enter 'i'nput mode) and then the point number that he or she wishes to select. By this, I mean that if the user hits '1', then points selected in the two pictures will be designated as the "first" point and thus will be correlated when the mosaic is calculated. Unless input mode is turned off (by pressing 'i' once again), any mouse click will be taken to be a registration point, thus overwriting previous points. There are helpful little output messages that let you know which point is being selected and when input mode is turned on or off (so the user doesn't get lost...)
After the user has indicated all of points 1 to 4 in both images (this is important as the program is not idiot proof at this point), the user pushes 'c' to 'c'alculate the projection. The projection is calculated in the plane of the first image and thus the second image is warped. Then, a file "output.tif" is created with the composited image. It merely averages the pixel values of the two input images if a pixel in the output image maps to pixels in both of them, and this is what causes the noticeable artifacts. Additionally, as you can see from the originals above, the input image on the right is darker than the one on the left (environmental conditions??), which also contributed to the banding effect.
Here is the example mosaic that I created. Again, click on it for a larger view.
The only problems I encountered during this assignment were time-related, and the great extent of that was figuring out how to get Linux set up and working properly for the assignment (being an extreme Linux-newbie, it was a somewhat humbling experience). This also resulted in the incredibly pedestrian interface and utter lack of "cool extras" that I implemented (hopefully to be rectified in later assignments... stay tuned!).