spfilt.m

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值