CS 6670 Computer Vision, Spring 2011

Project 1: Feature Detection and Matching



Tsung-Lin (Chuck) Yang




Custom Descriptor

The goal for the feature descriptor is to have a way to represent a feature in order to be used in the matching process later on in the stage. A 45x45 window centered around the feature detected is rotated and downsampled to 9x9 patch. The custom descriptor that I made is of the SIFT descriptor and MOPS descriptor. The steps of generating my custom descriptor is following:


Design Choices

My implementation is closely related to the lecture slides. However, there are some difference:


Performance

The performance of my implementation can be evaluated by using benchmark as command line argument and benchmark with provided image sets. Each image set aims to identify the most difficult problem in feature detection and matching. The provided image sets includes:

YosemiteTranslation
grafPerspective/Skew
leuvenIllumination
bikesBlurring
wallPerspective/Scale

ROC curves on given image sets

Harris Operator Results

Benchmark Results

Image setChallengeAvg. Error(pixels)Avg. AUC SSDAvg. AUC Ratio
grafPerspective/Skew38.4045170.2963140.289008
leuvenIllumination 333.829547 0.110459 0.424730
bikesBlurring 291.833798 0.479446 0.522791
wallPerspective/Scale 364.706387 0.314215 0.511421

Strengths and Weakness

As Shown in the ROC plots above, the custom descriptor has higher false postive rate and smaller AUC comparing to SIFT features. Which is kind of expected, I didn't think I implemented it the SIFT like descriptor correctly. Among the two feature matching method, the ratio test yields better true positive rate and more AUC score usually. In the benchmark image sets, the average AUC scores showed how the custom descriptor performs. In graf image set, the average AUC is only 0.296 which shows that my custom descriptor implementation is weak in handling perspective/skew difference. When benchmarked on the bikes, the average AUC score was the highest; this shows that my custom descriptor implementation performs better when handling blurring differences.


Others

I tried the MOPS feature detection and matching that I implemented on the picture that I took. But note that I do not know the homography matrix of the two images, so I couldn't plot the ROC curve to compare the performance. So I plotted the features detected and the matches in between the features visually on the picture and here is some result:

Snapple result

In this image, I slightly rotated the camera with an angle, and it turns out that the MOPS works great when there are lots of distinct features to track and it is easier for it to match correctly.

Guitar result

In the image above, I tried to capture the guitar at a different distance resulting a difference in scale. But the result was bad because of the ambiguous features detected around the guitar fret.

NYrush result

In the image above, I blurred the second image. But the performance wasn't very good as I took away many features in the image.