image warping and mosaicing

Yash Agarwal

OVERVIEW

For this project, we explore building mosaics using several sophisticated image manipulation techiniques including caluculating homographies, image warping and rectification, multiresolution blending and auto-stitching. We also implement techniques like harris interest point detection, adaptive non-maximal suppression, and feature matching from the paper Multi-Image Matching using Multi-Scale Oriented Patches by Brown et al.

PART 1

SHOOTING PICTURES

I clicked the following set of pictures using my iPhone camera.

 Left image Right image

RECOVERING HOMOGRAPHIES

The first step is finding the corresponding transformation between the two images. I did by formulating an overdetermined system of linear equations using the manually marked corresponding points in the two images. This involved manipulating the points and the p_dash = H*p equation to formualte a least squares problem.

IMAGE WARPING AND RECTIFICATION

Here are the results of rectification:

 original rectified

BLENDING INTO A MOSAIC

Once we've warped the images, the next step is to blend the warped images into a single image. For this, I tried several blending techniques including averaging the images and linera blending. What worked the best for me was multiresolution laplacian building from Project 2. Here are some of the results.

 Warped left image Warped right image Combined Mosaic

For part 1, I was really fascinated by the way be computed homographies and warped the images. The fact that we can click several images and build a panorama is pretty cool.

PART 2: AUTO-STITCHING

HARRIS INTEREST POINT DETECTION

Using the code provided in the spec, I ran the Harrison interest point detection alogrithm on my images. We see that we get a lot of points. I got a lot more points initially but decreased them by tuning the mininum distance parameter of the algorithm. Below you can see some results.

To reduce the number of corners, we need to select the strongest corners. These corners also need to be spread evenly across the image. I used a KD - Tree to implement the alogrithm. The algorithm runs on each of the corners, queries the 20 nearest neighbours, checks which of them have a higher Harisson corner score and assigns each points a maxmimum suprression radius equal to the distance of nearest neighbour with a higher harrison corner score. Below you can see the results for the top 100 corner points in each of the image.

FEATURE MATCHING

For feature matching, the first step is build feature descriptors. For this, I sampled a region of 40x40 pixels around the corner point, and resized it to an 8x8 image. I build another KD Tree of all the features for the second image. Then, for each of the features in the first image, I query the nearest two neighbours from the KD Tree and check if it is a match. Below, you can see some results after feature matching.

RANSAC

Now that we had a good set of features, we need to calculate the honography matrix. For this, we use the RANSAC alogrithm. This algorithm essentially samples 4 points from the matched features, solves the system of linear equations and calculates the homography matrix. Once, we've calculated this matrix we now transform all of the points in the feature set of the first image and compare it to the feature set of the second image. Choosing a value of episilon, we get a certain number of matches. Across several iterations of choosing random samples, we record the highest number of matches that we see. We then use this set of matched points to formulate an over-determined system of equations and finally use least squares to calculate the homography matrix.

AUTO-MOSAICING

Finally, using all of the above techniques, we calculate the homography matrices, warp the images and blend them together.

 Manually Chosen Points Auto - Stitched

For the first image, we actually get a mosaic that I think is better than the manaully created one. For the next two, the results seem to be as good as the manual one if not better.

LEARNINGS

I really enjoyed the systematic approach of part B to compute the homography matrix. Implementing ANMS and Feature Matching were the coolest parts of the project for me.