练习图像滤波去噪处理
%执行自适应中值滤波
function f = adpmedian(g,smax)
f = g;
f(:) = 0;
alreadyprocessed = false(size(g));
%开始滤波
alreadyprocessed = false(size(g));
for k = 3:2:smax
zmin = ordfilt2(g,1,ones(k,k),'symmetric');
zmax = ordfilt2(g,k*k,ones(k,k),'symmetric');
zmed = medfilt2(g,[k,k],'symmetric');
processusinglevelb = (zmed>zmin)&(zmax>zmed)&~alreadyprocessed;
zb = (g>zmin)&(zmax>g);
outputzxy = processusinglevelb&zb;
outputzmed = processusinglevelb&~zb;
f(outputzxy) = g(outputzxy);
f(outputzmed) = zmed(outputzmed);
alreadyprocessed = alreadyprocessed | processusinglevelb;
if all(alreadyprocessed(:))
break;
end
end