## Documentation Center |

Create predefined 2-D filter

`h = fspecial(type)h = fspecial(type, parameters)`

`h = fspecial(type)` creates
a two-dimensional filter

`h = fspecial(type, parameters)` accepts
the filter specified by

The following list shows the syntax for each filter type. Where applicable, additional parameters are also shown.

`h = fspecial('average', hsize)`returns an averaging filter`h`of size`hsize`. The argument`hsize`can be a vector specifying the number of rows and columns in`h`, or it can be a scalar, in which case`h`is a square matrix. The default value for`hsize`is`[3 3]`.`h = fspecial('disk', radius)`returns a circular averaging filter (pillbox) within the square matrix of size`2*radius+1`. The default`radius`is 5.`h = fspecial('gaussian', hsize, sigma)`returns a rotationally symmetric Gaussian lowpass filter of size`hsize`with standard deviation`sigma`(positive).`hsize`can be a vector specifying the number of rows and columns in`h`, or it can be a scalar, in which case`h`is a square matrix. The default value for`hsize`is`[3 3]`; the default value for`sigma`is 0.5.`h = fspecial('laplacian', alpha)`returns a 3-by-3 filter approximating the shape of the two-dimensional Laplacian operator. The parameter`alpha`controls the shape of the Laplacian and must be in the range 0.0 to 1.0. The default value for`alpha`is 0.2.`h = fspecial('log', hsize, sigma)`returns a rotationally symmetric Laplacian of Gaussian filter of size`hsize`with standard deviation`sigma`(positive).`hsize`can be a vector specifying the number of rows and columns in`h`, or it can be a scalar, in which case`h`is a square matrix. The default value for`hsize`is`[5 5]`and`0.5`for`sigma`.`h = fspecial('motion', len, theta)`returns a filter to approximate, once convolved with an image, the linear motion of a camera by`len`pixels, with an angle of`theta`degrees in a counterclockwise direction. The filter becomes a vector for horizontal and vertical motions. The default`len`is 9 and the default`theta`is 0, which corresponds to a horizontal motion of nine pixels.To compute the filter coefficients,

`h`, for`'motion'`:Construct an ideal line segment with the desired length and angle, centered at the center coefficient of

`h`.For each coefficient location

`(i,j)`, compute the nearest distance between that location and the ideal line segment.`h = max(1 - nearest_distance, 0);`Normalize

`h`:`h = h/(sum(h(:))`

`h = fspecial('prewitt')`returns the 3-by-3 filter`h`(shown below) that emphasizes horizontal edges by approximating a vertical gradient. If you need to emphasize vertical edges, transpose the filter`h'`.[ 1 1 1 0 0 0 -1 -1 -1 ]

To find vertical edges, or for

*x*-derivatives, use`h'`.`h = fspecial('sobel')`returns a 3-by-3 filter`h`(shown below) that emphasizes horizontal edges using the smoothing effect by approximating a vertical gradient. If you need to emphasize vertical edges, transpose the filter`h'`.[ 1 2 1 0 0 0 -1 -2 -1 ]

`fspecial` supports the generation of efficient,
production-quality C/C++ code from MATLAB. For best results, all inputs
must be constants at compilation time. Expressions or variables are
allowed if their values do not change. To see a complete list of toolbox
functions that support code generation, see List of Supported Functions with Usage Notes.

`conv2` | `del2` | `edge` | `filter2` | `fsamp2` | `fwind1` | `fwind2` | `imfilter` | `imsharpen`

Was this topic helpful?