CS 766 - Project 2

Betsy Wayner

Algorithm

Step 1: Taking Images I took two sets of 18 images with the Canon SX100 IS on the KiWi tripod. Thumbnails of the first set are:






Step 2: Create a panorama The mosaicStitch program does the following steps:

  1. Warp each image to cylindrical coordinates
  2. Use RANSAC to map the image to the panorama
The mosaicStitch program should do the following steps and totally doesn't:
  1. Blend the resulting image
  2. Warp the resulting image to remove vertical drift
  3. Crop the resulting image

Running the Program

The program is run through an executable jar file mosaicStitch.jar, and the arguments are the images to be input. For example:
%mosaicStitch.jar 1.JPG 2.JPG 3.JPG
It will need to be run on a machine with capabilities of converting .jpgs to .pgms (possibly through an image editor) and running the Sift program.
The user will be required to perform these tasks independently when prompted (currently, though, the pgm files and key files reside in the /img folders because running those through is a hassle. if the user wishes to just copy-paste the key file names they may use:
img2/warped1.key img2/warped2.key img2/warped3.key img2/warped4.key img2/warped5.key img2/warped6.key img2/warped7.key img2/warped8.key img2/warped9.key img2/warped10.key img2/warped11.key img2/warped12.key img2/warped13.key img2/warped14.key img2/warped15.key img2/warped16.key img2/warped17.key img2/warped18.key
The program was only tested on a Linux machine, but I can't think of a reason it wouldn't be platform-independent. It will probably crash as I didn't have time to finish debugging it. When it does, the panorama it has completed prior to the crash will be saved in 'panotemp.jpg' of the file the source images are found in.


External Code

The program makes use of the Jama Java Matrix Package and ports the supplied SIFT match.c program to Java and made use of the lecture notes and Brown and Lowe's Recognising Panoramas paper for the algorithm.

Results

As previously stated, the program doesn't completely work. But until it breaks, it does what it is supposed to do. The mapping of the image to the panorama is sort of speckly, resulting from doing a forward warp from the image to the panorama as opposed to a reverse warp that would ensure no pixels were skipped. The images are cut off at the top of the panorama image, as well. But the basics are working, so that's something.

Panorama image created by my program:



Panorama image created by my program:



Panorama image created by autostitch:



Panorama image created by autostitch:


Project Break-up
Betsy Wayner-100% of what actually got done
And a good chunk of things that were done but didn't work so couldn't be used
Sadly, though, not quite everything.