Harris Corners

The Harris Corners module identifies corners present within the image using the Harris Corner detection technique. The technique first identifies vertical and horizontal edges using a Sobel type edge detector. Those edges are then blurred to reduce the effect of any image noise. The resulting edges are then combined together to form an energy map that contains peaks and valleys. The peaks indicate the presence of a corner.

Note that a maximum of 15,000 points will be detected. If your image is very large and requires an even spread across the image increase the threshold to reduce the total number of detected points.



1. Threshold - Select the threshold above which a corner is considered present. Lower values allow more subtle corners to appear whereas higher values reduce the number of corners identified.

2. Data Influence - Select if you want the algorithm to consider color or not. Color can help identify corners between colors but adds additional processing.

3. Fast Harris - While the traditional Harris corner detector can work well it can also be slow for some applications. If speed is a concern of accuracy select the Fast Harris checkbox. This will enable the fast Harris corner detector which optimizes the Harris detector by approximating some steps to achieve additional speed.

4. Perform Non-Maximal Suppression - Unchecking the Non-Maximal Suppression will display the normalized Harris corner energy map instead of the detected corners.

5. Color - Select a color to display the detected corner points ontop of the current image.

6. Shape - Select the shape to use when displaying the detected corner points.

7. Corner Isolation - to eliminate points close to each other select an appropriate corner isolation number. This will ensure that points are at least X pixels from each other and prevents tight clustering of detected points.


SourceDetected Corners


HARRIS_CORNERS - Each corner XY coordinate is saved into an array accessible by the HARRIS_CORNERS variable. Using code similar to the following within a VBScript module will allow you to further process the corner points.

corners = GetArrayVariable("HARRIS_CORNERS")

' write back to messages the first line ..
' note that line segments are defined by two endpoints
Write("First Coord: " & corners(0) & "," & corners(1) & vbCRLF)
Write("Second Coord: " & corners(2) & "," & corners(3))

See Also

Moravec Interest Operator

For more information

Wikipedia - Corner detection
Joost van de Weijer - Research
Peter Kovesi - MATLAB and Octave Functions

 New Post 

Harris Related Forum PostsLast postPostsViews