- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像-中值滤波
数图课程设计
实验报告
学院:通信与信息工程学院
班级:电子信息科学与技术
姓名:
学号:
实验名称:中值滤波
实验目的及要求
1.了解中值滤波的原理;
2.滤波窗口种类可选;
3.可以添加多种不同噪声;
4.使用中值滤波法去除噪声;
实验原理
中值滤波是一种非线性滤,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。中值一维序列,,…,取窗口长度为m(m为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m个数,,…,,…,,…,,…,,其中为窗口的中心位置,,再将这m个点按其数值大小排列,取其序号为正中间的那作为出。用数学公式表示为:
2. 二序列进行中值滤波时,滤波窗口也是二维的,但这种二窗口可以有各种不同的形状,如线、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:
在实际使用窗口时,窗口的尺寸一般先用再取逐渐增大,直到其滤波效果满意为止。对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜,对于包含尖顶角物体的图像,适宜用十字形窗口。f=input(请输入文件名:,s);
choice=input(请选择中值滤波器的形状:1.矩形 2.十字形 3.线形\n);
p=input(请输入阶数:);
if(mod(p,2)~=0)
Fid=fopen(f);
[A,count]=fread(Fid);
B=reshape(A,256,256);
C=zeros(256,256);
B=B;
subplot(2,2,1),imshow(uint8(B));
title((a)原图象);
J=imnoise(uint8(B),salt pepper,0.01);
subplot(2,2,2),imshow(J);
title((b)添加均值为0,方差为0.01的椒盐噪声图像);
if(choice==1)
C=rectfilter(B,p);
subplot(2,2,3),imshow(uint8(C));
title((c)矩形窗中值滤波后的图象);
else if(choice==2)
C=crossfilter(B,p);
subplot(2,2,3),imshow(uint8(C));
title((c)十字形窗中值滤波后的图象);
else (choice==3)
C=straightfilter(B,p);
subplot(2,2,3),imshow(uint8(C));
title((c)线形窗中值滤波后的图象);
end
end
else
disp(输入阶数错误!必须是奇数!);
end
程序中调用的各类窗口函数:
十字形窗口函数:
function B=crossfilter(A,n)
m=(n+1)/2;
for i=m:(256-m+1)
for j=m:(256-m+1)
x=A(i-m+1:i+m-1,j-m+1:j+m-1);
y=zeros(1,2*n-1);
for k=1:n
y(k)=x(m,k);
end
h=1;
for k=1:n
if(k~=m)
y(n+h)=x(k,m);
h=h+1;
end
end
B(i,j)=med(y,2*n-1);
end
end
矩形窗口函数:
function B=rectfilter(A,n)
m=(n+1)/2;
for i=m:(256-m+1)
f
文档评论(0)