3. Experimental Results
We present some experimental results of both algorithms in the section. Most results are generated with the best choices (with bundle adjustment, with up-vector selection, and two-band blending). The images are resized and cut to make a better view. You may click the links to see the full and high-resolution panoramas and live pictures.
Strength and weakness:
Implement three advanced issues and obtain better results as shown in Section 2. Consider the accerelation and the program is relatively fast for use.
Further improvement may be deghosting (you may see artifacts when people move in multiple images), correcting exposure difference between images, a panorama where the same person appears multiple times, etc.
Appendix How to Run
Using the program to align/stitch images into the panorama consists of the following steps:
(0) If the images have radial distortion, use a series of commands such as: panorama rdWarp img_i.tga goodimg_i.tga f k1 k2
(1) Compute the features for each of the images using SIFT executable. Then each image has a file *.key.
(2) Create a text file (e.g. image_list.txt), which looks like:
and a configuration file config.ini (if this file does not exist, default parameters will be used), like:
where matchDistRatio is the threshold for a distinctive feature (default value 1.0), CenterImageIndex is for the use of up-vector selection (value 1 is "to use" and default value 0 means "not to use"), doBundleAdjust shows whether the bundle adjustment is applied (default is true), doANN shows whether ANN or simple search is used (default is ANN), doMultiBand shows whether two-band or single-band blending is used (default value 0), and zeroXAngle can shift the panorama center by a certern degree to make a better view (default value 0.0).
To match all of the input images and compute their pairwise alignments, use
panorama alignAll image_list.txt orientations.txt minMatches f nRANSAC RANSACthresh bundleAdjustIters [sift]
This will output a file orientations.txt with the global orientations (one rotation matrix per image).
(3) Stitch the images into the final panorama outimg.tga: panorama blendAll orientations.txt outimg.tga f blendRadius
I would like to thank Prof. D. Lowe for his SIFT implementation, Prof.'s D. Mount & S. Ayra for their ANN library and Prof. T. Davis for his CSparse library. I also adopt two image sets from Cornell CS6670 course webpage and two image sets from Dr. C. Liang's webpage.
 R. Szeliski, Image alignment and stitching: A tutorial, Microsoft Tech. Report, 2004. [Link]
 David G. Lowe, Distinctive image features from scale-invariant keypoints, International J. Computer Vision, 60 (2), pp. 91-110, 2004. [Link]
 M. Brown and D.G. Lowe, Recognising panoramas, Proc. International Conf. Computer Vision, 2003. [pdf]
 Martin A. Fischler and Robert C. Bolles, Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography, in Communications of the ACM, 24 (6), pp. 381-395, 1981.
 P. J. Burt and Edward H. Adelson, A multiresolution spline with application to image mosaics, in ACM Transactions on Graphics, 4 (2), pp. 217-236, 1983.
 R. Szeliski and H. Shum, Creating Full View Panoramic Image Mosaics and Environment Maps. Siggraph, 1997.