Programming Assignment 2: Harris Corners Solution



The goal of this assignment is extract corner features from photographs.

Part 1 – Harris Corners (60 points):

Write a program that loads an image, extracts Harris Corners using the algorithm discussed in class, and displays the corners overlaid on the image. Your program may not make use of any existing functions/code that extract features. Start by using the checkerboard image to test your code.

Part 2 – Ranking Corners (20 points):

After you’ve assigned “cornerness” measurements to every pixel, use the following three techniques to choose corners and compare them.

  1. Find the max “cornerness” measurement in the image. Label all pixels whose “cornerness” is greater than a certain percentage of this value (i.e. 10%) as corners. The exact percentage you use will probably change based on the image.

  2. Label the n pixels in the entire image with the highest “cornerness” values as corners.

  3. Partition your image into small sections (i.e. 100×100 pixel neighborhoods). Label the n pixels in each neighborhood with the highest “cornerness” values for that neighborhood as corners.

For all of these approaches, play with the parameters (percentage, neighborhood size, n). You’ll probably use different values for different images to get good corners.

Part 3 – Data (5 points):

Run your code on at least five additional images that have differences in content, lighting, rendering style, (landscape, cityscape, people, animals, still-life, drawing, painting, day, night, inside, outside, etc.). Feel free to take your own photographs.

Report and Submission (15 points):

Submit your source code and a PDF of a report. The report should include a description of the assignment and of the Harris Corner algorithm, equations used, images of your results (on 6+ images), and any issues encountered. For at least one image, show the results for all three corner ranking criteria. On every image you include, specify what approach and parameter values you used to extract corners. Include observations on how the algorithm performs on different types of data. Embed the images in your file. Each section should be labeled and images should be referenced with figure numbers. Do not upload separate image files.

Bonus (10/15 points):

Visualize the range of “cornerness” values computed for an image. You can do this in grayscale for up to 10 points or RGB for up to 15 as shown below.