下载频道> 资源分类> matlab源码> 图像处理> 自适应中值滤波matlab代码

标题:自适应中值滤波matlab代码
分享到:

所属分类: 图像处理 资源类型:程序源码 文件大小: 458 Bytes 上传时间: 2020-05-09 11:36:39 下载次数: 0 资源积分:1分 提 供 者: 007 quzaochuli
内容:
自适应中值滤波函数定义

function II=adp_median(I,Smax)
%自适应中值滤波

if (Smax<=1)||(Smax/2==round(Smax/2))||(Smax~=round(Smax))%Smax约束,噪声密度越大,Smax应当设置越高
    error('Smax must be an odd integer >1');
end
%初始化
II=I;
II(:)=0;
alreadyProcessed=false(size(I));
%迭代
for k=3:2:Smax
zmin=ordfilt2(I,1,ones(k,k),'symmetric');
zmax=ordfilt2(I,k*k,ones(k,k),'symmetric');
zmed=medfilt2(I,[k k],'symmetric');
processUsingLevelB=(zmed>zmin)&(zmax>zmed)&(~alreadyProcessed);%需要转到B步骤的像素
zB=(I>zmin)&(zmax>I);
outputZxy=processUsingLevelB&zB;%满足步骤A,B的输出原值 对应的像素位置
outputZmed=processUsingLevelB&~zB;%满足A,不满足B的输出中值 对应的像素位置
II(outputZxy)=I(outputZxy);
II(outputZmed)=zmed(outputZmed);
alreadyProcessed=alreadyProcessed|processUsingLevelB;%处理过的像素
if all(alreadyProcessed(:))
    break;
end
end
II(~alreadyProcessed)=I(~alreadyProcessed);%超过窗口大小没被处理的像素位置 输出原值


调用与中值滤波对比
I=imread('cameraman.tif');
IF=imnoise(I,'salt & pepper',0.4);
f2=medfilt2(IF,[3,3]);%中值滤波后的图像
ff=adp_median(IF,19);
subplot(2,2,1);
imshow(I);
('原图');
subplot(2,2,2);
imshow(IF);
('椒盐噪声污染后的图像');
subplot(2,2,3);
imshow(f2);
('中值滤波');
subplot(2,2,4);
imshow(ff);
('自适应中值滤波');

文件列表(点击上边下载按钮,如果是垃圾文件请在下面评价差评或者投诉):

关键词: 自适应,中值滤波,matlab 去噪

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
谷速代码 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved