I took 3 pictures of the area around where I live for this assignment, using a Nikon digital camera.. The scene includes the First United Methodist Church, Arlington Apartments and neighboring shops. Initially, I intended to use pictures of a notice board (to get a planar surface), such as this:
But, as can be seen, the fish-eye effect was quite prominent at the edges of the notice board, so that straight lines appear curved. So I opted to use pictures of objects at "infinity", to avoid the lens distortion. Hence the building pictures.
The original 640x480 RGB
images (saved in Jpeg format) are shown here. The red crosses (no
pun intended, though some of them are on the church steeple) show the point
correspondences between the first and second images, while the yellow crosses
are for the second and third images. I manually marked them after
zooming in for better precision. I used 6 points for correspondence,
and solved for the projective map using least squares. I believe
this will help reduce errors in the manual registration than if I had used
4 points. (6 points mean that the system of equations is overconstrained.)
Note that there is significant overlap between the second and third images.
The final mosaic image, using the 640x480 input images, is 1020x572 pixels. As of the deadline of this assignment, the image is still being generated. It takes a long time to mosaic something so large. (Maybe I should learn some Matlab tricks to improve speed.)
So I reduced the original
input images to a quarter of their size, i.e. to 160x120 pixels.
The projective maps are recomputed (using the scaled coordinates of the
correspondences), since these maps do not scale linearly. This produced
a mosaic output image of 254x143 pixels, which is shown here. The
viewpoint is from that of the second original image. The mosaic image
is generated for each RBG plane using the destination scan method, and
where necessary, bilinear interpolation is used. The pixel values
from different images are simply averaged with equal weighting, regardless
of pixel position.
Slight edge artifacts are visible in the mosaic. The fence in the foreground is blurred probably due to the low resolution. The church building, which appears in all 3 original images, appears to be well composited. The black patch at the bottom center of the image is actually the shadow of a building, and not a failure of the mosaicing program. The original images have this shadow as well.
I also generated a
mosaic from the half-sized original images. That output is shown
here (509x286). There is better resolution in the fence, at which
slight misalignment is also obvious.
The whole assignment was done entirely in Matlab, which explains the long processing time. This was even after I used as much as 64Mb to store all 3 original images, and to allocate memory for the final mosaic image. I intend to show the large mosaic (1020x572) as soon as it is completed. This is a link to it.