MATLAB课程设计自适应中值滤波Word下载.docx
- 文档编号:15960327
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:7
- 大小:88.34KB
MATLAB课程设计自适应中值滤波Word下载.docx
《MATLAB课程设计自适应中值滤波Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计自适应中值滤波Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
1.算法描述
1.1噪声点
脉冲噪声是图像处理中常见的一类,中值滤波器对消除脉冲噪声非常有效。
噪声脉冲可以是正的(盐点),也可以是负的(胡椒点),所以也称这种噪声为“椒盐噪声”。
椒盐噪声一般总表现为图像局部区域的最大值或最小值,并且受污染像素的位置是随机分布的,正负噪声点出现的概率通常相等。
图像噪声点往往对应于局部区域的极值。
1.2窗口尺寸选择
滤波窗口尺寸的选择影响滤波效果,大尺寸窗口滤波能力强,但细节保持能力较弱;
小尺寸窗口能保持图像大量细节但其滤波性能较低。
根据噪声密度的大小自适应地选择滤波窗口可以缓和滤波性能与细节保持之间的矛盾,同时也增加了算法的时间复杂度。
从形状看来窗口方向要沿着边缘和细节的方向,不能穿过它们也不能把它们和周围相差很大的像素包含在同一窗口中否则边缘和细节会被周围像素模糊。
1.3求滤波窗口内中值,并替换像素点。
设fij为点(i,j)的灰度,Ai,j为当前工作窗口,fmin、fmax和fmed分别为Ai,j中的灰度最小值、灰度最大值和灰度中值,Amax为预设的允许最大窗口。
自适应中值滤波算法的基本步骤如下:
1)fmin<
fmed<
fmax,则转至第2步;
否则增大窗口Ai,j尺寸。
若Ai,j的尺寸小于Amax的尺寸,则重复第1步;
否则输出fij。
2)fmin<
fij<
fmax,则输出fij;
否则输出fmed。
可以看出,算法中噪声点的检测和认定是以fmin和fmax为基准的,如果fmin<
fmax,表明fmed不是噪声,接着根据fmin<
fmax判断fij是否是噪声,当fij与fmed都不是脉冲噪声时,优先输出fij。
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
fori=1:
H%for从1到512
forj=1:
L
flag(i,j)=1;
%所有点都假定为噪点
end
end
2.2扩大窗口、确定窗口
fori=1:
H%大循环%i为横坐标j为纵坐标
L%大循环
omiga=2;
%omiga=2是最大滤波半径
%%%%%%%%确定窗口
whileflag(i,j)==1%循环恒为一一直执行
zuo=i-omiga;
%左减
xia=j-omiga;
%下减扩大窗口
you=i+omiga;
%右加
shang=j+omiga;
%上加
ifzuo<
1
zuo=1;
end%扩大窗口但不出边界
ifxia<
1
xia=1;
%i为1、2、3时zuo都是1,
end便是为了不出边界
ifyou>
L%右、下、上运算与左同理
you=L;
end
ifshang>
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;
forin=zuo:
you%zuo:
youxia:
shang为横纵向扫描
forjn=xia:
shang
if((in==i&
jn==j)==0)%“与”00、01、10满足if
vect1(1,kn)=I(in,jn);
%把灰度值赋给vect1
kn=kn+1;
smin=nanmin(vect1);
%nanmin包含缺失值的样本的最小值smax=nanmax(vect1);
%nanmax包含缺失值的样本的最大值
smed=nanmedian(vect1);
%nanmedian包含缺失值的样本的中值
2.4中值替换像素点、输出图像
if(Smed-Smin)>
0&
(Smax-Smed)>
0
ifSmin<
M(i,j)&
M(i,j)<
Smax%如果像素点的灰度值介于
flag(i,j)=0;
%最大最小之间则flag标记为零
else%意为变成了清晰地像素点
M(i,j)=Smed;
%把中值赋给像素点
I(i,j)=Smed;
flag(i,j)=0;
%输出flag标记为零
end%得到清晰地像素点过滤掉噪声点
else
omiga=omiga+2;
%扩大窗口继续扫描
ifomiga>
=5%当滤波半径大于5时不用判断
flag11=0;
%直接输出
ifomiga>
=17%当滤波半径很大时不再判断
%直接等于中值输出
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.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计 自适应 中值 滤波
![提示](https://static.bdocx.com/images/bang_tan.gif)