Progress made by checkpoint
Progress made by due date
In order to align images, the user is presented with an interface to pick correspondence points between two input images. Alignment of the images is the done via a homography, and then the images are blended together with feathering. As alpha values, the distance to the nearest invalid pixel is taken. Blending in this way gets rid of seams between images, but also can cause blurring and ghosts to appear. A better approach would be to use a Laplacian pyramid based technique. Also, finding correspondence points between input images can be made automatic eventually, so there will be no need for user input.
Here is an example of a panoramic image made from two separate images. Following the links above, more examples can be found.
Here is an example of putting fake graffiti on the wall of a building by selecting the corners of the "graffiti" picture and then selecting the corners of the side of the building as correspondence points.
Here is an example of putting myself into a panoramic picture multiple times.