Description of Feature Detector:

 

First I implemented the Harris feature detector, and a simple 5x5 window as a feature descriptor.  I also implemented the Ratio test for matching features.

 

I then implemented a second feature descriptor that computed the dominant orientation for each feature and stored a 5x5 pixel descriptor rotated to the dominant orientation. 

 

Briefly, the descriptor looks at a 7x7 window around each feature.  It then calculates the orientation from the gradient at each point in the window by computing r and theta.  The orientations are binned into bins of 45 degrees and the descriptor stores the r value as a weight for that orientation.  The binned weights are then summed over the entire window and the bin with the largest summed weight is the dominant orientation.  This weighted voting scheme has the advantage of taking into account every pixel in the window as well as allowing the strength of orientation to affect the dominant orientation.  Other methods of calculating the dominant orientation from the weighted binned angles that could also be used are mode, max, unweighted voting (histogram/probability density function) and vector average.  When a feature descriptor is created the 5x5 window around the feature is first rotated by the dominant orientation.  Storing the descriptor in its already rotated form makes comparisons easy, especially with the skeleton code already written.

 

Shown below are two pictures along with a representation of the Harris features.  In the right panel of each picture, the color of the dots represents the Harris score.  The whiter the pixel the higher its Harris score.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                                                                                                                                                                       

 

 

 

 

 

 

 

 

 

Below are figures detailing ROC analysis.  The figure in the left column is for the Yosemite images.  The figure on the right is for the graf images.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

The table below indicates benchmark performance for the two feature descriptors:

Harris Operator with Simple Descriptor

AUC-SSD

AUC-Ratio

Pixel Error

Graf

0.31

0.42

326

bikes

0.72

0.79

375

leuven

0.19

0.53

414

wall

0.24

0.46

370

 

 

 

 

 Harris Operator with Dominant Orientation Descriptor

AUC-SSD

AUC-Ratio

Pixel Error

Graf

0.45

0.45

323

bikes

0.73

0.81

371

leuven

0.3

0.51

416

wall

0.27

0.57

374

 


Below are examples of the Harris features for some pictures I took, convention is the same as above, except that pixel brightness is increased by 10 percent for display purposes: