Project 2: Panoramic
CS 766 - Fall 2009
Faisal Khan, Varghese
all images in a given directory.
an image onto cylindrical coordinates.
the homography between two images using SIFT.
executable from the SIFT Program.
version of Matlab SIFT.
that does feature matching using SIFT features. Based on match.c in
two images and the homography between the, this code stitches them
together using the feathering blending method.
the core module. This code takes a set of images, and an array of
pairwise homographies, and creates the panorama from them. It can
create both partial and complete (full 360 degree) panoramas.
a wrapper over run.m. This code take a directory as argument, loads all
the images in the directory, rotates them as specified, computes
pairwise homographies and then calls run to create the complete
code is aimed towards creating high dynamic range panoramas. This takes
a list of directories, and a key directory as argument. For creating
HDR panorama, all constituent panoramas at different exposures should
be stitched together using the same homographies. So we compute
homography using the images in the key directory and then use that
homography to create panoramas for images in each of the given
directories in the list.
- We captured 18 images each for 3 full view (360 degree)
- We also captured 10 images for one vertical partial
panorama of a building.
- We tried to capture 11 (different exposures) * 18 images
for an HDR panorama. However, fully charged batteries only last for 11
x 13 images on the given camera model. Therefore we could only gather
11 x 13 images for a partial HDR panorama.
- We captured all images in Manual mode, fixing all tunable
parameters to reduce vignetting.
Equipment used and parameters:
- We captured one of the panoramas with "Canon SX100 IS, tag
6418204024". However, the Kaidan head provided with it was causing a
huge Y-drift. So we had to get that replaced. (Still in the extra time
we were given, we coded up a complete shear algorithm which recovered
the panorama from this image set.
- We captured the rest of the images with "Canon SX100 IS,
Step2: Warping each image into cylindrical coordinates.
- For this, we take each point (x,y) on the cylindrical
surface, and compute the inverse transform using the formulae discussed
in the class to get (x', y') which is the coordinate on the source
image. Now we copy pixel (x', y') of source image onto pixel (x,y) on
target cylindrical image.
- The advantage
of doing it this way is that, we ensure that every pixel on the
cylinder surface get assigned a value.
- We also incorporate the lens distortion model into our
cylindrical projection code, to remove all distortions.
Step3: Computing the alignment of images in pairs.
- We use SIFT to get us a list of key points.
- Then we use the match algorithm to get potential matches.
We model our match algorithm based on the match.c code provided with
- After the match, we evaluate the best fitting homography
using RANSAC algorithm iterating 1 to 100.
- We also note that the shear in Y direction is given by the
ratio of the cumulative homography translation along Y direction to
that along the X direction.
Step4: Stitching and cropping the images
- Here we stitch one image at a time onto the cululative
- We also do feathering to blend the images so that there's
no intensity change bands visible.
- We actually
stitch half of the first image at the beginning and half at the end
(for full view panoramas) to improve accuracy.
Step4.5 (bonus): Shearing.
- Often we notice that the images have a shear in the Y
direction (due to bad kaidan heads). We incorporate a shearing
algorithm to completely
remove this effect.
- This step is done between Stitching and cropping of the
Step5: Configuring the viewer
- We basically followed the instructions provided.
Lathrop Hall Garden (this is our preferred image)
Indoors: CS department Conference room 4310
Note that we captured the
images such that we figure
in multiple locations in this panorama !!! :D
test image panorama
Bonus1: HDR Panorama (partial because battery died).
The final HDR Image
The different panoramas at different exposures
Bonus2: Vertical Panorama
Here, we apply the
panorama technique to stitch multiple images in the vertical direction
to create a wide angle vertical image.
Bonus3: Correcting Shear - Eagle Heights Garden
In this pictures, the
shear in Y direction and our
success at correcting it
using our bonus shear
algorithm is distinctly visible.