function f=spfilt(g,type,m,n,parameter)
%spfilt执行线性和非线性的空间滤波器,g为原图像,type为滤波器类型,M*N为滤波器模板大小
%处理输入参数
if nargin==2
m=3;n=3;Q=1.5;d=2;
elseif nargin==5
Q=parameter;d=parameter;
elseif nargin==4
Q=1.5;d=2;
else
error('Wrong number of inputs.');
end
%开始执行滤波
switch type
case 'amean'%算数平均滤波
w=fspecial('average',[m n]);
f=imfilter(g,w,'replicate');
case 'gmean'%几何平均滤波
f=gmean(g,m,n);
case 'hmean'%调和平均滤波
f=harmean(g,m,n);
case 'chmean'%反调和平均滤波,Q的默认值是1.5
f=charmean(g,m,n,Q);
case 'median'%中值滤波
f=medfilt2(g,[m n],'symmetric');
case 'max'%最大值滤波
f=ordfilt2(g,m*n,ones(m,n),'symmetric');
case 'min'%最小值滤波
f=ordfilt2(g,1,ones(m,n),'symmetric');
case 'midpoint'%中值滤波
f=ordfilt2(g,1,ones(m,n),'symmetric');
f=ordfilt2(g,m*n,ones(m,n),'symmetric');
f=imlincomb(0.5,f1,0.5,f2);
case 'atrimmed'%顺序平均值滤波,d必须是非负的数,d的默认值是2
if(d<0)|(d/2~=round(d/2))
error('d must be a nonnegative,even integer.')
end
f=alphatrim(g,m,n,d);
otherwise
error('Unkown filter type.')
end
spfilt.m
最新推荐文章于 2022-08-30 17:18:38 发布