Matlab fspecial 用法详述,附示例

Matlab 的fspecial函数用法详述

fspecial Create predefined 2-D filters.
    H = fspecial(TYPE) creates a two-dimensional filter H of the
    specified type. Possible values for TYPE are:
 
      'average'   averaging filter
      'disk'      circular averaging filter
      'gaussian'  Gaussian lowpass filter
      'laplacian' filter approximating the 2-D Laplacian operator
      'log'       Laplacian of Gaussian filter
      'motion'    motion filter
      'prewitt'   Prewitt horizontal edge-emphasizing filter
      'sobel'     Sobel horizontal edge-emphasizing filter

Depending on TYPE, fspecial may take additional parameters
    which you can supply.  These parameters all have default
    values. 

fspecial函数用于建立预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,para)
其中type指定算子的类型,para指定相应的参数;
type的类型有:
1、'average'
averaging filter

为均值滤波,参数为hsize代表模板尺寸,默认值为【3,3】。
H = FSPECIAL('average',HSIZE) returns an averaging filter H of size

HSIZE. HSIZE can be a vector specifying the number of rows and columns in

H or a scalar, in which case H is a square matrix.
The default HSIZE is [3 3].
2、 'disk'
circular averaging filter

为圆形区域均值滤波,参数为radius代表区域半径,默认值为5.
H = FSPECIAL('disk',RADIUS) returns a circular averaging filter

(pillbox) within the square matrix of side 2*RADIUS+1.

The default RADIUS is 5.
3、'gaussian'
Gaussian lowpass filter


为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准值,单位为像素,默认值为0.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 a scalar, in which case H is a

square matrix.

The default HSIZE is [3 3], the default SIGMA is 0.5.
4、'laplacian' filter approximating the 2-D Laplacian operator
为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为【0,1】,默认值为0.2.

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 ALPHA is 0.2.
5、'log'
Laplacian of Gaussian filter

为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为【3 3】,sigma为滤波器的标准差,单位为像素,默认值为0.5.
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 a scalar, in which case H is a square matrix.

The default HSIZE is [5 5], the default SIGMA is 0.5.
6、'motion'
motion filter

为运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0;
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 counter-clockwise direction. The

filter becomes a vector for horizontal and vertical motions.
The

default LEN is 9, the default THETA is 0, which corresponds to a

horizontal motion of 9 pixels.
7、'prewitt'
Prewitt horizontal edge-emphasizing filter

用于边缘增强,大小为【3 3】,无参数
H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizes

horizontal edges by approximating a vertical gradient. If you need to

emphasize vertical edges, transpose the filter H: H'.


[1 1 1;0 0 0;-1 -1 -1].
8、'sobel'
Sobel horizontal edge-emphasizing filter

用于边缘提取,无参数
H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizes

horizontal edges utilizing the smoothing effect by approximating a

vertical gradient. If you need to emphasize vertical edges, transpose

the filter H: H'.


[1 2 1;0 0 0;-1 -2 -1].
9、'unsharp'
unsharp contrast enhancement filter

为对比度增强滤波器。参数alpha用于控制滤波器的形状,范围为【0,1】,默认值为0.2.
H = FSPECIAL('unsharp',ALPHA) returns a 3-by-3 unsharp contrast


enhancement filter. FSPECIAL creates the unsharp filter from the

negative of the Laplacian filter with parameter ALPHA. ALPHA controls

the shape of the Laplacian and must be in the range 0.0 to 1.0.

The default ALPHA is 0.2.

 
    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 counter-clockwise direction. The
    filter becomes a vector for horizontal and vertical motions.  The
    default LEN is 9, the default THETA is 0, which corresponds to a
    horizontal motion of 9 pixels.
 
    H = fspecial('prewitt') returns 3-by-3 filter that emphasizes
    horizontal edges by approximating a vertical gradient. If you need to
    emphasize vertical edges, transpose the filter H: H'.
 
        [1 1 1;0 0 0;-1 -1 -1].
 
    H = fspecial('sobel') returns 3-by-3 filter that emphasizes
    horizontal edges utilizing the smoothing effect by approximating a
    vertical gradient. If you need to emphasize vertical edges, transpose
    the filter H: H'.
 
        [1 2 1;0 0 0;-1 -2 -1].
 
    Class Support
    -------------
    H is of class double.
 2
    Example
    -------
       I = imread('cameraman.tif');
       subplot(2,2,1);imshow(I);title('Original Image'); 
       H = fspecial('motion',20,45);
       MotionBlur = imfilter(I,H,'replicate');
       subplot(2,2,2);imshow(MotionBlur);title('Motion Blurred Image');
       H = fspecial('disk',10);
       blurred = imfilter(I,H,'replicate');
       subplot(2,2,3);imshow(blurred);title('Blurred Image');

你可能感兴趣的:(MATLAB图像处理函数)