Mosaic Madness!!!

Project Overview:
For Project 2 we were required to add code to a program to allow three functions:

  1. Cylindrical Warping - took a fair amount of thought process for the equations, but very little code once I figured them out.

  2. Lucas-Kanade Motion Estimation - had to work to eliminate rounding errors, and search the brain to remember matrix inverses, but the algorithm was straightforward.

  3. Blended Pairs Stitching - even though this one seemed the most straightforward at first, I had to play around with a lot of different tests to get the final warping and translation correct.  Plus, the issue of blending one direction or the other caused some issues.

Project Requirements:
We had to prepare at least 3 images: (1) the stitched test sequence, (2) a stitched image from the Kaidan head, (3) and a stitched image from a hand-held sequence.  Because a sequence was about 15-18 pics and I'm lazy about typing command line prompts, I created a C# app that allowed me to select multiple files, order them, and perform all three steps from above automated.  For the Kaidan head sequence (and the test sequence) this worked wonderful since the Tx and Ty estimations for Lucas-Kanade worked since the pics had a pretty consistent offset.  For the hand-held images this caused some images, which I describe below along with my solution to the images.

Project Artifacts:

Test Sequence
This is the complete panorama test sequence (of the Quad at UW, right?) provided for validating our code.  The result here is (as far as I can visually tell) identical to the sample solution.  So good, so far.


View in LivePicture

Patio
This is a panoramic from the patio deck on a building on Lake Union courtesy of Liam.  Everything looks good here too, with a little bit of intensity issues.


View in LivePicture

Bear Creek
This is taken outside of Millenium-D by the Bear Creek habitat area.  My coworker posed in multiple positions in the pictures.  There's a little bit of a weird warp factor right in the center that I'm not 100% sure what's causing it.


View in LivePicture

Xbox Hallway
This is taken in a hallway inside Millenium-D with some cool pictures on the walls.  The blending seemed to work well here.


View in LivePicture

Xbox Conference Room
This is our fancy conference room with stainless steel everything, demo Xboxes, etc.  We thought it has some cool lines to look at.


View in LivePicture

Xbox Conference Room (Handheld)
This is the same panoramic as the conference room above, but taken as a hand held image.  The first picture is the output of my automated stitching program.  The issue is it uses the same Tx and Ty estimations for every picture, but I'm not that consistent and some of mine are way off.

However I'm lazy and didn't want to re-run for all the images.  So instead I found the pictures that were ghosting below, manually ran Lucas-Kanade on them, and replaced the entries in the pair list with the the more accurate entries.  For this picture, there were only two places that were ghosting, so after I ran the automated version I only had to do the manual runs and updates for two sets of pictures.  The second picture and the LivePicture viewer is the result for those hand modifications.


View in LivePicture

Chaweng Beach, Koh Samui, Thailand (Handheld, Personal DigiCam)
This panoramic is the ultimate test I feel.  I took it before I ever knew I was going to have to do any of this Computer Vision stuff (i.e. for vacation last year), so it's representative of what a typical user would do to take a panoramic.  Also, it's with a camera whose focal length and radial distortion constants I didn't know; therefore I used the box and a book method to get the focal length and tweaked the k values till they worked.  Again my automated tool got most of the pictures right but had a duplicate on the right side, so I manually Lucas-Kanade'd that picture and re-ran to get the final image below.


View in LivePicture