当前位置:文档之家› MATLAB课程设计(自适应中值滤波)

MATLAB课程设计(自适应中值滤波)

信息工程系课程设计报告
课程MATLAB课程设计
专业通信工程
班级 2级本科二班
学生姓名1 景学号114
学生姓名2 学号1414
学生姓名3 王学号6
学生姓名4 学号31
学生姓名4 学号02
二〇一四年十二月
目录
目录 (1)
摘要: (2)
关键词: (2)
1.算法描述 (2)
1.1 噪声点 (3)
1.2 窗口尺寸选择 (3)
1.3求滤波窗口内中值,并替换像素点。

(3)
2程序实现 (4)
2.1准备和描述 (4)
2.2扩大窗口、确定窗口 (5)
2.3 确定最大、最小值和中值 (6)
2.4中值替换像素点、输出图像 (7)
实验结果 (9)
参考文献 (9)
摘要:通过本次课程设计,主要训练和培养学生综合应用所学MATLAB课程的自适应中值的相关知识,独立学习自适应中值滤波的原理及处理方式。

学会扩大窗口并找到其区域内的中值、最小值、以及最大值,然后用中值代替像素点。

通过自主学习和查阅资料来了解程序的编写及改进,并用MATLAB进行仿真。

关键词:自适应中值滤波灰度值椒盐噪声像素点.
1.算法描述
1.1 噪声点
脉冲噪声是图像处理中常见的一类,中值滤波器对消除脉冲噪声非常有效。

噪声脉冲可以是正的(盐点),也可以是负的(胡椒点),所以也称这种噪声为“椒盐噪声”。

椒盐噪声一般总表现为图像局部区域的最大值或最小值,并且受污染像素的位置是随机分布的,正负噪声点出现的概率通常相等。

图像噪声点往往对应于局部区域的极值。

1.2窗口尺寸选择
滤波窗口尺寸的选择影响滤波效果,大尺寸窗口滤波能力强,但细节保持能力较弱;小尺寸窗口能保持图像大量细节但其滤波性能较低。

根据噪声密度的大小自适应地选择滤波窗口可以缓和滤波性能与细节保持之间的矛盾,同时也增加了算法的时间复杂度。

从形状看来窗口方向要沿着边缘和细节的方向,不能穿过它们也不能把它们和周围相差很大的像素包含在同一窗口中否则边缘和细节会被周围像素模糊。

1.3求滤波窗口内中值,并替换像素点。

设f ij为点(i,j)的灰度,A i,j为当前工作窗口,f min、f max 和f med分别为A i,j中的灰度最小值、灰度最大值和灰度中值, A
max为预设的允许最大窗口。

自适应中值滤波算法的基本步骤如下:
1)f min<f med<f max,则转至第2步;否则增大窗口A i,j 尺寸。

若A i,j的尺寸小于A max的尺寸, 则重复第1步; 否则输出f ij。

2)f min<f ij<f max,则输出f ij;否则输出f med。

可以看出, 算法中噪声点的检测和认定是以f min和f max为基准的,如果f min<f med<f max,表明f med不是噪声,接着根据 f min<f ij<f max判断f ij是否是噪声, 当f ij与f med都不是脉冲噪声时,优先输出f ij。

2程序实现
2.1准备和描述
clear; % 清除工作空间的变量
I=imread('I3_256.bmp'); % 输入图像
I=imnoise(I,'salt & pepper', 0.7); % 加入椒盐噪声点密度为0.7
imshow(I) % 显示图像
figure; % 控制窗口数量先显示一个
M=I; % 赋给M
I=double(I); % 确定精度提高精度
M=double(M);
flag11=1; % 11是(1,1)是开始的点H=512; % H为高,L为长
L=512; % 像素为512*512
for i=1:H % for 从1到512 for j=1:L
flag(i,j)=1; % 所有点都假定为噪点 end
end
2.2扩大窗口、确定窗口
for i=1:H %大循环 % i为横坐标 j为纵坐标 for j=1:L %大循环
omiga=2; % omiga=2 是最大滤波半径 %%%%%%%%确定窗口
while flag(i,j)==1 % 循环恒为一一直执行
zuo=i-omiga; % 左减
xia=j-omiga; % 下减扩大窗口 you=i+omiga; % 右加
shang=j+omiga; % 上加
if zuo<1
zuo=1;
end % 扩大窗口但不出边界
if xia<1
xia=1; % i为1、2、3时zuo都是1 ,end 便是为了不出边界
if you>L %右、下、上运算与左同理 you=L;
end
if shang>H
shang=H;
end
%%%%%%%窗口确定结束
2.3 确定最大、最小值和中值
%%%%%%%%%%%确定最大最小值
smin=I(i,j); % 给smin、smax初始化
smax=I(i,j);
total=(you-zuo+1)*(shang-xia+1);
%total是放大后的像素点的个数 total=5*5=25
vect1=zeros(1,total-1); % total-1为去掉中心点
kn=1;
for in=zuo:you %zuo:you xia:shang 为横纵向扫描
for jn=xia:shang
if ((in==i&jn==j)==0) %“与” 00、01、10 满足if vect1(1,kn)=I(in,jn); %把灰度值赋给vect1
kn=kn+1;
end
end
end
smin=nanmin(vect1); %nanmin 包含缺失值的样本的最小值smax=nanmax(vect1); %nanmax 包含缺失值的样本的最大值smed=nanmedian(vect1); %nanmedian 包含缺失值的样本的中值2.4中值替换像素点、输出图像
if (S med-S min)>0&(S max-S med)>0
if S min<M(i,j)&M(i,j)<S max %如果像素点的灰度值介于flag(i,j)=0; %最大最小之间则 flag 标记为零
else % 意为变成了清晰地像素点
M(i,j)=S med; % 把中值赋给像素点
I(i,j)=S med;
flag(i,j)=0; % 输出flag标记为零
end %得到清晰地像素点过滤掉噪声点else
omiga=omiga+2; %扩大窗口继续扫描
if omiga>=5 %当滤波半径大于5时不用判断 flag11=0; % 直接输出
end
if omiga>=17 % 当滤波半径很大时不再判断 flag11=0;
M(i,j)=S med; % 直接等于中值输出
flag(i,j)=0;
end
end
end %while %第六页while循环
end %大循环 %第六页for循环
end %大循环 % 第六页for循环
I=uint8(M); % 变为8位的无符号整形数据imshow(I); % 显示图像
实验结果
加入0.7噪点图片经处理后图片:
参考文献
荆仁杰,叶秀清.计算机图像处理[M].北京:浙江大学出版社,1988:122.
韩丽娜,耿国华.基于小波变换的真彩图像降噪与增强[J].计算机工程, 2010,36(12):224-225.
陈初侠,丁勇,刘栎莉.去除椒盐噪声的自适应开关加权均值滤波[J].计算机工程,2010,36(4):210-212.
秦虹,王耀南,朱江,等.一种改进的极值均值自适应滤波算法[J].计算机工程与应用,2009,45(32):180-182.
贾洪涛,朱元昌,王建华.扩展自适应中值滤波器的原理与实现[J].中国图象图形学报,2004,9(8):948~950.。

相关主题