⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 all_medfilt2.m

📁 此为中值滤波原程序,通过matlab调用可实现滤波
💻 M
字号:
function b=all_medfilt2(varargin)
[a,order,mn,padopt]=parse_inputs(varargin{:});
domain=ones(mn);
if order==0
     if(rem(prod(mn),2)==1)
          order=(prod(mn)+1)/2;
          b=ordfilt2(a,order,domain,padopt);
     else
         order1=prod(mn)/2;
         order2=order1+1;
         b=ordfilt2(a,order1,domain,padopt);
         b2=ordfilt2(a,order2,domain,padopt);
         idx=find(b~=b2);
         b(idx)=(double(b(idx))+double(b2(idx)))/2;
     end
else
    b=ordfilt2(a,order,domain,padopt);
end
if(isa(a,'uint8')&islogical(a))
    b=logical(b);
end
function[a,order,mn,padopt]=parse_inputs(varargin)
if(nargin<1)
    error('Too few inputs');
end
if(nargout>4)
    error('Too many outputs');
end
a=varargin{1};
charLocation=[];
for k=2:nargin
    if(ischar(varargin{k}))
        charLocation=[charLocation k];
    end
end
if(length(charLocation)>1)
    error('Invalid input');
elseif(length(charLocation)==0)
    padopt='zeros';
else 
    options={'indexed','zeros','symmetric'};
    idx=strmatch(lower(varargin{charLocation}),options);
    if(length(idx)==0)
       error('Unknown option');
    elseif(length(idx)>1)
        error('Ambiguous option');
    else
        padopt=options{idx};
    end
    varargin(charLocation)=[];
end
if(strcmp(padopt,'indexed'))
    if(isa(a,'double'))
        padopt='ones';
    else
        padopt='zeros';
    end
end
if(length(varargin)>1)
    order=varargin{2};
else
    order=0;
end
if(length(varargin)>2)
    mn=varargin{3};
else
    mn=[3 3];
end
order=min(prod(mn),order)
order=min(prod(mn),order)
         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -