Harry's Project 2 (heb47)

Design Strategy

Dominant orientation

For computing MOPS, I decided to take the dominant orientation as being the sum of the two sobel operator values about the point. I tested a few other ways such as just doing finite differences, but sobel was definitely easiest and seemed to work the best by eye test.

Harris threshold

Custom descriptor

For the custom descriptor, I decided to modify the MOPS descriptor into a lightweight and better descriptor. The goal of this descriptor was to lower the amount of disk space required per feature, while still maintaining good accuracy. The motivation was that this could then be used to more effectively operate on gigapixel-type images.

The descriptor was created as follows:

First, sample the rotated descriptor in a 40x40 window (as done with MOPS). Then, instead of downsampling to 8x8 as we did in our MOPS, we instead downsample to 5x5, and use a 5x5 gaussian blur kernel about each point. At the same time, also add into each sample what would be a 5x5 gaussian weightings on each subsection of the sample space (i.e. divide the whole sample into 5x5 subspaces of 8x8, and weight those). I believe that doing this type of methodology is essentially smoothing a lot of the noise that may occur, and adding in the second, larger blur should help make it a bit less sensitive to false positives.

In the end, these features took up a little less than half the space of the original MOPS descriptors (25 samples opposed to 64), but more importantly had about the same or better performance.

 

Performance Evaluation

ROC Curves

graf:Yosemite:
ROC:
Harris image 1
(lightened by x100)
Clearly, MOPS did not perform as well as SIFT, but still did a pretty good job at finding matches.

AUC Data

  Simple 5x5 Descriptor 8x8 MOPS Descriptor Custom Descriptor
  SSD Ratio SSD Ratio SSD Ratio
graf 0.645043 0.666412 0.808915 0.838099 0.814044 0.841747
leuven 0.285077 0.575136 0.761406 0.870697 0.764435 0.873667
wall 0.377435 0.656242 0.892220 0.906554 0.894182 0.898355
bikes 0.405664 0.660941 0.890127 0.883677 0.893404 0.897715

 

Analysis

Strengths

Certainly, the MOPS features implemented here are nice because they seem to work nicely for rotations, and even work well as seen with graf with skews in the plane. The algorithm is also relatively quick; it took only a few seconds to run computations, matching, and graph them on my computer.

Weaknesses

For this pass of the MOPS implementation, I did not implement scale invariance, and as the ROC curves show, it is not as robust as SIFT. It also needs to have parameters tweaked to work effectively. It works fairly well under base parameters, but to achieve the best output, the thresholds do need tweaking.

Other feature detection!

These two images worked pretty well when the parameters were tweaked. Under the basic parameters, however, they didn't work as well as I would have liked. Changing some of the thresholds though, gives 9 matches.