Matlab fspecial和imfilter对图像进行空间滤波

对图像空间滤波,简单点理解就是通过利用滤波器模板对图像像素进行操作,从而实现滤波功能。
这里介绍matlab中几个相关函数:
imnoise(I,type…):为图像I添加type类型的噪声;
type有以下一些类型: ‘gaussian’ ‘localvar’ ‘poisson’ ‘salt & pepper’ ‘speckle’ ,各类型都有相关参数;

fspecial(type):创建type类型的二维滤波器模板;
type有下面一些类型: ‘average’ ‘disk’ ‘gaussian’ ‘laplacian’ ‘log’ ‘motion’ ‘prewitt’ ‘sobel’
每一种类型都具有其各自的参数设置,详细查看>>help fspecial;

imfilter(A,H,OPTION1,OPTION2,…) : 对图像进行滤波处理,A为原图像,H为滤波模板,OPTION1等为参数选项,可以设置边界,尺寸和模式等;

medfilt2(A,[ ]): 中值滤波,A为图像,[ ]代表滤波模板大小,默认为3*3;

简单应用:

I = imread('F:\Myfile\Matlab\Test_picture\0_1.jpg');
I1 = imnoise(I,'gaussian',0,0.01); %添加均值为0,方差为0.01的高斯噪声

h1 = fspecial('average',[5,5]); %大小为5*5的平滑滤波模板
h2 = fspecial('gaussian',[5,5],0.2);%大小为5*5,sigma为0.2的高斯滤波模板

Ia = imfilter(I1,h1,'replicate','same','corr'); %滤波
Ib = imfilter(I1,h2); %默认参数滤波
Ic = medfilt2(I1,[5,5]); %中值滤波

%显示
subplot(2,3,1);imshow(I);title('I,origin');
subplot(2,3,2);imshow(I1);title('I1,gaussian noise');
subplot(2,3,4);imshow(Ia);title('Ia,average');
subplot(2,3,5);imshow(Ib);title('Ib,gaussian');
subplot(2,3,6);imshow(Ic);title('Ic,med');

你可能感兴趣的:(Matlab fspecial和imfilter对图像进行空间滤波)