SIVP Toolbox
Last update : August, 2006

edge - Find edges in a single channel image.

### Calling Sequence

  `E = edge(im, method)`
  `E = edge(im, method, thresh)`
  `E = edge(im, method, thresh, direction)`
  `E = edge(im, method, thresh, sigma)`
  `[E, thresh] = edge(im, method, ...)`

### Parameters

- `im`: Input image which must be a single channel image.
- `method`: may be 'sobel'(default), 'prewitt', 'log', 'fftderiv' or 'canny'. Other methods will appear in the future.
- `thresh`: sets the threshold level, from 0 to 1. Defaults to 0.2. If negative, then the output image, `E`, will have the un-thresholded gradient image.
- `direction`: may be 'horizontal', 'vertical' or 'both'(default). This determines the direction to compute the image gradient.
- `sigma`: Controls the ammount of high-frequency attenuation in some methods (only the 'fftderiv' method uses this parameter). This can be used to obtain different levels of detail and to filter out high-frequency noise.
- `E`: edge image which is boolean matrix and has the same size as `im`. If `thresh<0`, `E` is a double un-thresholded image.

### Description

The function edge performs edge detection on a grayscale intensity image. The user may set the method, the threshold level, the direction of the edge detection, etc.

E=edge(im, 'sobel', thresh, direction)
  Detects edges in `im`, using the sobel gradient estimator.
E=edge(im, 'prewitt', thresh, direction)
  Detects edges in `im`, using the prewitt gradient estimator.
E=edge(im, 'log', thresh, sigma)
  Detects edges in `im`, using the the Laplacian of Gaussian method. `sigma` is the standard deviation of the LoG filter and the size of the LoG filter is nxn, where n = ceil(sigma*3)*2+1. The default value for `sigma` is 2.
E=edge(im, 'fftderiv', thresh, direction, sigma)
  Detects edges in `im`, using the FFT gradient method, default sigma 1.0
E=edge(im, 'canny', thresh, sigma)
  Detects edges in `im`, using Canny method. `thresh` is a two-element vector, in which the fist element is the low threshold and the seond one is the high threshold. If `thresh` is a scalar, the low threshold is `0.4*thresh` and the high one is `thresh`. Besides, `thresh` can not be negative scalar. `sigma` is the Aperture parameter for Sobel operator, which must be 1, 3, 5 or 7. default thresh 0.2; default sigma 3.

Supported classes: INT8, UINT8, INT16, UINT16, INT32, DOUBLE.

### Examples

        im = imread('lena.png');
        im = rgb2gray(im);
        E = edge(im, 'sobel');
        imshow(E);

        E = edge(im, 'canny', [0.06, 0.2]);
        imshow(E);

        E = edge(im, 'sobel', -1);
        imshow(mat2gray(E));

### Authors

  Shiqi Yu <shiqi.yu[at]gmail.com>
  Ricardo Fabbri <ricardofabbri[at]users.sf.net>

### Bibliography

"Shape Analysis and Classification", L. da F. Costa and R. M. Cesar Jr., CRC Press, section 3.3.

### Availability

The latest version of SIVP can be found at

http://sivp.sourceforge.net

### See Also

`fspecial`, `imfilter`, `filter2`,