Mosaic Madness!!!
Project Overview:
For Project 2 we were required to add code to a program to allow three
functions:
Cylindrical Warping - took a fair amount of thought process for the equations, but very little code once I figured them out.
Lucas-Kanade Motion Estimation - had to work to eliminate rounding errors, and search the brain to remember matrix inverses, but the algorithm was straightforward.
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.
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.
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.
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.
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.
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.
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.