>> f=checkerboard (8);>> imshow (f)>> PSF=fspecial ('motion', 7, 45);>> gb = imfilter( f, PSF, ' circular' );>> noise = imnoise(zeros(size(f)),'gaussian',0,0.001);>> g = gb + noise;F GbNoise G% 可用MATLAB的fspecial建立PSF模型% PSF = fspecial(‘motion’,len,theta)% Len 移动的像素数% Theta运动方向(逆时针)>> help fspecialFSPECIAL 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'unsharp' unsharp contrast enhancement filterDepending on TYPE, FSPECIAL may take additional parameters which you can supply. These parameters all have default values.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].H = FSPECIAL('disk',RADIUS) returns a circular averaging filter (pillbox) within the square matrix of side 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 a scalar, in which case H is a square matrix. The default HSIZE is [3 3], the default 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 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 a scalar, in which case H is a square matrix. The default HSIZE is [5 5], the default SIGMA is 0.5.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].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.Class Support-------------H is of class double.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');H = fspecial('unsharp');sharpened = imfilter(I,H,'replicate');subplot(2,2,4);imshow(sharpened);title('Sharpened Image');See also conv2, edge, filter2, fsamp2, fwind1, fwind2, imfilter.Reference page in Help browser doc fspecial>> help imfilter IMFILTER N-D filtering of multidimensional images.B = IMFILTER(A,H) filters the multidimensional array A with the multidimensional filter H. A can be logical or it can be a nonsparse numeric array of any class and dimension. The result, B, has the same size and class as A.Each element of the output, B, is computed using double-precision floating point. If A is an integer or logical array, then output elements that exceed the range of the given type are truncated, and fractional values are rounded.B = IMFILTER(A,H,OPTION1,OPTION2,...) performs multidimensional filtering according to the specified options. Option arguments can have the following values:- Boundary optionsX Input array values outside the bounds of the arrayare implicitly assumed to have the value X. When noboundary option is specified, IMFILTER uses X = 0.'symmetric' Input array values outside the bounds of the arrayare computed by mirror-reflecting the array acrossthe array border.'replicate' Input array values outside the bounds of the arrayare assumed to equal the nearest array bordervalue.'circular' Input array values outside the bounds of the arrayare computed by implicitly assuming the input arrayis periodic.- Output size options(Output size options for IMFILTER are analogous to the SHAPE option in the functions CONV2 and FILTER2.)'same' The output array is the same size as the inputarray. This is the default behavior when no outputsize options are specified.'full' The output array is the full filtered result, and sois larger than the input array.- Correlation and convolution'corr' IMFILTER performs multidimensional filtering usingcorrelation, which is the same way that FILTER2performs filtering. When no correlation orconvolution option is specified, IMFILTER usescorrelation.'conv' IMFILTER performs multidimensional filtering usingconvolution.Notes-----On some Intel Architecture processors, IMFILTER can take advantage of the Intel Performance Primitives Library (IPPL), thus accelerating its execution time. IPPL is activated only if A and H are both two dimensional and A is uint8, int16 or single.When IPPL is used, imfilter has different rounding behavior on some processors. Normally, when A is an integer class, filter outputs such as 1.5, 4.5, etc., are rounded away from zero. However, when IPPL is used these values are rounded toward zero. This behavior may change in a future release.To disable IPPL, use this command:iptsetpref('UseIPPL',false)Example-------------originalRGB = imread('peppers.png');h = fspecial('motion',50,45);filteredRGB = imfilter(originalRGB,h);figure, imshow(originalRGB), figure, imshow(filteredRGB)boundaryReplicateRGB = imfilter(originalRGB,h,'replicate');figure, imshow(boundaryReplicateRGB)See also fspecial, conv2, convn, filter2, ippl.。