CS 6670 Computer Vision (Spring 2011)

Project 1: Feature Detection and Matching


Description

In this project, I implemented Harris Corner detection, MOPS descriptor and simplified version SIFT descriptor. For extra credit, a kd-tree based near neighbor search is implemented using ANN library.

Design Choices

Harris:

  1. Threshold for harris operator: 0.1
  2. Extract harris corners and orientation of corners
    1. Convert the original image to grayscale image
    2. Run sobel filter 3 × 3 in both x and y directions
    3. Compute Ixy using Ix and Iy
    4. Perform Gaussian blur on Ix, Iy and Ixy
    5. For each point in the original image, compute harrsi matrix H
    6. Compute harris value by det(H)/tr(H)
    7. Compute orientation using atan2
  3. For each point p in the image, if it's harris value is greater than the threshold and it's the maximum among a 3 × 3 window, output that point as a corner
Simple descriptor:
  1. For each corner, take pixels in 5 × 5 window and convert them to a 25 dimensional vector as descriptor.
MOPS descriptor:
  1. For each corner, take pixels 41 × 41 window
  2. Rotate the window according to the orientation of that corner
  3. Run Gaussian blur on the window
  4. Downsample the window to 8 × 8, and conver it to a 64 dimensional vector as descriptor
SimpleSIFT descriptor:
  1. For each corner, take pixels 16 × 16 window
  2. Rotate the window according to the orientation of that corner
  3. Run Gaussian blur on the window, where the kernel size is 7 × 7
  4. Compute gradient for each point in the window
  5. For each 4 × 4 window, compute histogram for angles
  6. Concatenate the histograms to form a 128 dimensional vector as descriptor

Performance

  1. Plots of ROC Curves
  2. graf yosemite

    Left image shows a plot of 6 curves for graf while the other shows a plot of 6 curves of yosemite. Note that for yosemite, SimpleSIFT+SSD and SimpleSIFT+ratio test are overlapped.

  3. Plots of Threshold Curves
  4. graf yosemite

    Left image shows threshold plot for graf and right image shows threshold plot for yosemite, on mops.

  5. Images of Harris Operator
  6. graf grap_harris
    yosemite yosemite_harris
  7. Average AUC
  8. Graf Leuven Bikes Wall
    MOPS + SSD 0.655 0.620 0.511 0.700
    MOPS + Ratio Test 0.612 0.558 0.597 0.544
    SimpleSIFT + SSD 0.552 0.613 0.568 0.573
    SimpleSIFT + Ratio Test 0.522 0.620 0.551 0.660
    Simple + SSD 0.462 0.420 0.304 0.649
    Simple + Ratio Test 0.558 0.531 0.489 0.580

Discussion

MOPS:

SimpleSIFT:

My Results

pic1
pic2

Extra Credits

  1. I implemented a fast ratio test using ANN library.