Canny Edge Detector

This subsection describes a classic edge detector proposed by J.Canny, see [Canny86 ]. The detector uses a grayscale image as an input and outputs a black-and-white image, where non-zero pixels mark detected edges. The algorithm consists of three stages described below.

Stage 1: Differentiation

Assuming two-dimensional convolution, the image data are differentiated with respect to the directions x and y. The gradient of the surface of the convoluted image function in any direction is possible to compute from the known gradient in any two directions.

From the computed x and y gradient values, the magnitude and angle of the slope can be calculated from the hypotenuse and arctangent.

Note iconNote

The ippiSobel functions perform the first stage and Canny edge detector functions use their output.

Stage 2: Non-Maximum Suppression

With the rate of intensity change found at each point in the image, edges must now be placed at the points of maximum, or rather non-maximum must be suppressed. A local maximum occurs at a peak in the gradient function, or alternatively where the derivative of the gradient function is set to zero. However, in this case it is preferable to suppress non-maximum perpendicular to the edge direction, rather than parallel to the edge direction, since the edge strength is expected to continue along an extended contour.

The algorithm starts off by reducing the angle of gradient to one of 4 sectors shown in Figure “Gradient Sectors”. The algorithm passes 3x3 neighborhood across the magnitude array. At each point, the center element of neighborhood is compared with its two neighbors along line of the gradient given by the sector value.

If the central value is non-maximum, i.e., not greater than the neighbors, it is suppressed.

Gradient Sectors

Stage 3: Edge Thresholding

The Canny operator uses the so-called “hysteresis” thresholding. Most thresholders use a single threshold limit, which means that if the edge values fluctuate above and below this value, the line appears broken. This phenomenon is commonly referred to as “streaking”. Hysteresis counters streaking by setting an upper and lower edge value limit. Considering a line segment, if a value lies above the upper threshold limit it is immediately accepted. If the value lies below the low threshold it is immediately rejected. Points which lie between the two limits are accepted if they are connected to pixels which exhibit strong response. The likelihood of streaking is reduced drastically since the line segment points must fluctuate above the upper limit and below the lower limit for streaking to occur.

J.Canny recommends the ratio of high to low limit be in the range two or three to one, based on predicted signal-to-noise ratios.

Example “Edge detection using the ippiCanny function” shows how to use the Intel IPP functions for the Canny edge detector.


Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.