CS 194-26 Fall 2021 - Project 4B

Feature Matching and Autostitching

George Gikas


Harris Corners

In order to produce the harris corners that will be passed into ANMS and feature matching, I used the skeleton code implementation. This produced a large number of points that needed to be reduced. Below is an image of the lounge in my dorm with harris corners identified:

Harris corners

Adaptive Non-Maximal Suppression

In order to perform the ANMS algorithm, I take the 500 points that possess the largest radii for maximum harris value. These are the corners that stand out the most within the image. Below is an image of the same image in the lounge with the 500 points identified.


Feature Descriptor Extraction

For feature descriptor extraction, I saampled a 40x40 pixel patch surrounding the interest point. Following this, I subsample to get a 8x8 patch, which I resized as a 1x48 vector that acts as a feature descriptor for that point.


Feature Matching

For each interest point in one of the images being warped to the center image, I compute the ratio of the SSE for the NN of the point in the center image to the SSE of the 2-NN. If this ratio is less than a threshold (which I defined as 0.5), then the point and its NN are included as a correspondence pair between the two images.


RANSAC

As defined in lecture, I implemented RANSAC to compute the homography for four random points. I then used these points to warp the image to the center, and formed a set of correspondence points that were warped accurately enough. After 10000 iterations, I then returned the homography that produced the greatest number of correctly warped correspondence points.


Mosaics

Below are three mosaic results, using ANMS, feature matching, and RANSAC to produce the correspodences. I reused my code from part 1 to perform the warping to the larger mosaic:



What I learned

I found the ANMS algorithm to be incredibly intuitive. I thought it was quite interesting that the algorithm was solving for the 500 points with the maximum radius around them, which could be gotten when comparing Harris values against other points then getting the distances to them.