Edge Detectors

In many applications it is necessary to find boundaries of objects that appear in images. Edge detection consists of creating a binary image from a gray scale image where non-background pixel values correspond to object boundaries. Edges can be detected with the help of gradient/derivative type operators. As such they tend to be sensitive to noise so an effective edge detection method depends on the nature of the image and the characteristics of the noise. Igor supports eight built-in edge detection methods that vary in performance depending on the contents of the source image.

Canny Canny edge detector uses smoothing before edge detection and thresholding. You can optionally specify the threshold using the /T flag and the smoothing factor using /S.
Frei Calculates the Frei-Chen edge operator (see Pratt p. 503) using only the row and column filters.
Kirsch Edge detector (see Pratt p. 509). Performs convolution with 8 masks calculating gradients.
Marr Marr-Hildreth edge detector. Performs two convolutions with Laplacian of Gaussian and then detects zero crossings. Use the /S flag to define the width of the convolution kernel.
Prewitt Calculates the Prewitt compass gradient filters. Returns the result for the largest filter response.
Roberts calculates the square root of the magnitude squared of the convolution with the Robert's row and column edge detectors.
Shen Shen-Castan optimized edge detector. Supposed to be effective in the presence of noise. The flags that modify this operation are: /F for the threshold ratio (0.9 by default), /S for smoothness factor (0.9 by default), /W for window width (default is 10 ), /H for thinning factor which by default is 1.
Sobel Sobel edge detector using convolutions with row and column edge gradient masks.

In addition to the direct edge detection methods listed above Igor supports a method for detecting edges that is based on active contours/snakes ImageSnake.