I took 10 images using the Kodak digital camera standing on Flagstaff hill over in the park. I didn't use a tripod, because all of the objects in the scene are pretty far away. I figured it wouldn't make a difference, and it didn't. Here are the 10 images I took.
I wrote two programs in C for this assignment. The first, called "matcher" allows the user to zoom in and out of images in order to pick matching pairs of points between images at subpixel resolution. "matcher" is written using the XForms library, Xlib graphics, and libtiff. "matcher" outputs a file with all of the corresponding points listed, which will serve as the input for "transform," which is the second program. Here are the 10 images with the 4 matched points shown as little yellow plus signs. You will have to look closely to see them, but they are there.
"transform" reads in the file of matching points, computes the projective transformation between each pair of images in both directions. The program then mosaics N images together into one larger PPM image. "transform" uses the weighted average blending function and bilinear interpolation as described in class to generate smooth overlap between images. "transform" uses 4 pairs of points matched between each consecutive pair of images.
I generated three image mosaics. The first two are 5 image mosaics: one looking towards Phipps, and one looking towards the Cathedral of Learning. The third is a mosaic of all 10 images.
Mosaic 2 - Towards the Cathedral
Mosaic 3 - The whole thing
NEW - I generated a fourth mosaic from 5 other images I took of the student center. This one didn't come out as well as the others, but I figured I would put it up anyways. Check out the "ghost rider" on a bicycle towards the right of the image.
Runtime - The amount of time "transform" takes to run depends on the number of pixels in the output image. If the output image is less than 1200 x 1000, the program takes less than 10 seconds to run.
Blending - The weighted average blending function did an excellent job on these images. My images were overlapped by at least 50% or so. I can't see the seams between the images.
Hardware Issues - I wrote the "matcher" program in a hurry, so it isn't particularly portable. It requires a specific graphics mode (i.e. the one my office computer is currently running. RH Linux 5, 16 bpp).
Best Aspects of My Solution - My transform program will generate N image mosaics and can use subpixel resolution correspondences. The subpixel resolution coupled with the blending function made the seams in my images invisible.
Worst Aspect of My Solution - The matching points have to be picked by the user. Also, "transform" cannot solve for the least squares solution to the transformation equations if I pick more than 4 points in each image. It just ignores the extra correspondences.Mike Montemerlo, Sept. 1999