中值滤波器设计及椒盐噪声滤除.docx
《中值滤波器设计及椒盐噪声滤除.docx》由会员分享,可在线阅读,更多相关《中值滤波器设计及椒盐噪声滤除.docx(14页珍藏版)》请在冰豆网上搜索。
中值滤波器设计及椒盐噪声滤除
中值滤波器设计及椒盐噪声滤除(总10页)
题目四:
中值滤波器设计及椒盐噪声滤除
一、实验背景
在数字图像的生成与采集过程中,由于受工作环境,器件等性能的影响,使得一幅未经处理的原始图像,都存在着一定的噪声干扰。
这种噪声具有以下性质:
1、图像上的噪声出现处呈现不规则分布;
2、噪声的大小也是不规则的。
这些噪声恶化了图像质量,使图像模糊甚至淹没目标特征,给后续的处理分析带来了困难。
因此需要对图像应该进行滤除噪声处理。
二、实验目的
1.通过利用c程序实现数字信号处理的相关功能,巩固对信号处理原理知识的理解,培养快速解决实际问题的能力提高实际编程和处理数据的综合能力,初步培养在解决信号处理实际应用问题中所应具备的基本素质和要求。
2.培养独立思考的能力与研发能力,通过设计实现不同的信号处理问题,初步掌握在给定条件和功能的情况下,实现合理设计算法结构的能力。
3.提高资料查询和整理的能力。
能够在短时间内找到适合自己的方法。
并在文献整理的过程中学会科技文献的写作,提高语言表达能力。
三、实验内容
1.理解什么是椒盐噪声,中值滤波的原理及其特性。
2.设计一种中值滤波,对椒噪声滤波有效,并分析滤波器的适用范围。
3、(扩展训练)对设计的滤波器针对椒、盐噪声滤除分别进行测试,并进行性能比较分析,并讨论椒、盐噪声频度(噪声数目占图像实际像素的百分比)对滤波器实际效果的影响。
四、实验原理
1.椒盐噪声
椒盐噪声又称脉冲噪声,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
椒盐噪声往往由图像切割引起。
椒盐噪声的PDF是:
如果b>a,灰度值b在图像中将显示为一个亮点,a的值将显示为一个暗点。
若或为零,则脉冲噪声称为单级脉冲。
如果和均不为零,尤其是他们近似相等时,脉冲噪声值将类似于随机分布在图像上的胡椒和盐粉微粒。
形象的说,椒噪声在图像上是类似于黑胡椒颗粒的小点,而盐噪声在图像上是类似于白色盐粒的小点。
2、平滑化去噪声思想
如何从一副有噪声的图像中把噪声去除呢此时,因有随机噪声而把像素的真值隐藏起来,而不被知晓,可表现为图像变暗而不清楚。
我们的目的是要把干扰的噪声除去,得到视觉清晰的图像。
如右图,噪声的浓度与其周围像素的浓度间,存在着很大的浓度差,使人觉得很刺眼,
利用噪声的这种性质除去噪声的方法,一般称为平滑化(smoothing)。
3、中值滤波的原理及特性:
中值滤波在图像处理中,常用于用来保护边缘信息,是一种经典的平滑噪声的方法。
(1)中值滤波原理
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个拎域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。
方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。
二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)},其中,f(x,y),g(x,y)分别为原始图像和处理后图像。
W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
(2)中值滤波器:
中值滤波器:
用该像素相邻像素的灰度中值来代替该像素的值:
实现方法:
a.通过从图像中的某个采样窗口取出奇数个数据进行排序,位于采样窗中间的中值作为输出;
b.丢弃最早的值,用排序后的中值取代要处理的数据即可。
(3)中值滤波特性
中值滤波是图像处理中的一个常用步骤,它对于斑点噪声和椒盐噪声来说尤其有用。
中值滤波方法以牺牲图像清晰度为代价消除图像中的椒盐噪声。
中值滤波不能保证把噪声去除,只能在有限的范围内减弱噪声对图像的影响。
同时,中值滤波不能多次使用,因为这样会使图像各个像素间趋于相同,整个图像就会变得越来越模糊。
另外,通过查阅资料发现,中值滤波器的效果不仅仅和观察窗的大小有关,还和观察窗的形状有关。
五、实验步骤
1、根据题目要求,先画出程序的流程图。
2、源程序:
(1)基础训练部分:
#include<>
#include<>
unsignedchar*pBmpBuf=NULL;mp";
readBmp(readPath,bmpWidth,bmpHeight);
printf("width=%d,height=%d,biBitCount=%d\n",bmpWidth,bmpHeight,biBitCount);
Med();
charwritePath[]="输出图像.bmp";
writeBmp(writePath,bmpWidth,bmpHeight);
delete[]pBmpBuf;
delete[]pBmpBuf2;
if(biBitCount==8)
delete[]pColorTable;
}
(2)扩展训练部分
#include<>
#include<>
unsignedchar*pBmpBuf=NULL;mp";
readBmp(readPath,bmpWidth,bmpHeight);
printf("width=%d,height=%d,biBitCount=%d\n",bmpWidth,bmpHeight,biBitCount);
Med();
Med2();
charwritePath[]="输出图像";
writeBmp(writePath,bmpWidth,bmpHeight);
charwritePath2[]="输出图像";
writeBmp2(writePath2,bmpWidth,bmpHeight);
delete[]pBmpBuf;
delete[]pBmpBuf2;
delete[]pBmpBuf3;
if(biBitCount==8)
delete[]pColorTable;
}
六、实验效果及分析
1、基础训练部分
输入图像输出图像
5次中值滤波后输出图像原图像
根据实验结果可以看出,中值滤波法能将图片中的椒盐噪声很好地滤除掉,但与原图相比,清晰度也有了很大的损失。
这也验证了中值滤波的特性:
中值滤波方法以牺牲图像清晰度为代价消除图像中的椒盐噪声。
中值滤波不能保证把噪声去除,只能在有限的范围内减弱噪声对图像的影响。
同时,中值滤波不能多次使用,因为这样会使图像各个像素间趋于相同,整个图像就会变得越来越模糊。
2、扩展训练部分
(1)通过查阅资料,我们了解到中值滤波器的效果不仅和观察窗的大小有关,还和观察窗的形状有关。
观察窗大小和形状对中值滤波效果的影响
输入图像5格十字窗
可以看出:
使用5格十字窗口虽然对噪声有一定的滤除作用,但效果有些不尽人意。
9格十字窗
当使用9格十字窗口时效果变好,但仍有一些噪声点
3*3矩形窗
通过对比我们发现:
两个同样用9格窗口的滤波器的效果相近,当使用十字窗口时图像的边缘部分有一部分仍然清晰,但有一部分却变得毛躁,整个图像也在颜色变化时呈现出条纹状。
为取得更为平滑的图像效果,我们使用5*5的矩形窗作为观察窗进行滤波。
5*5矩形窗
由实验输出结果看出:
在图像的中间除下面瓶子的瓶口处仍有一些盐噪声还明显,其余处的滤波效果非常明显。
但由于中值滤波的观察窗开的较大,导致图像清晰度受到了很大的损失。
所以,我们在选择观察窗的时候,要进行综合考虑,窗的大小不宜过大,否则会影响图像的清晰度;同时要选择合适的观察窗的形状,以求达到最好的观察效果。
(2)椒盐噪声频度对滤波效果的影响
输入图像
使用MATLAB,可以给原图像加上频度不同的椒盐噪声。
M=imread('')%读取MATLAB中的名为Original_salt_and_pepper的图像
subplot(3,3,1)
imshow(M)%显示原始图像
P2=imnoise(M,'salt&pepper',%加入椒盐躁声,这里的噪声频度
subplot(3,3,3)
imshow(P2)%%加入椒盐躁声后显示图像
figure2
title(‘salt&peppernoise')
当椒盐噪声频度增加,达到10%时,图像被严重污染
为简化计算设所有出现噪声均为椒噪声或均为盐噪声。
通过统计计算,当图像的噪声频率为时,一个窗口内噪声出现次数和频率的情况如下:
次数
0
1
2
3
4
5
概率
0
由中值滤波原理我们可以知道,当噪声出现次数小于等于2次时,该滤波器可以很好工作,当出现次数大于2时,滤波器对该点失效,即失效概率为%,对于一个上万点组成的图像来说,这个滤波器的效果明显不能满足要求。
当窗口格数增大时,失效概率也能够大幅减小。
经过反复试验,发现当噪声频率在%以下时,选用9格十字窗口既能很好地去除噪声又能较好地反映出原图。
七、实验心得体会
信息工程实验的综合实验部分着实锻炼了我们的自主学习和自主设计能力,通过这几周的实验设计,我不仅巩固学习了信号处理的理论知识,而且锻炼了自己的设计思维能力,并在这个过程中学习和运用了VisualC++和Matlab,学会了运用工具将理论知识和实践紧密的结合起来。
虽然我对本实验的图像处理基本完成,但我知道自己学到的还只是图像处理技术的九牛一毛,所以在以后的学习中还要不断地去深入研究。
记得刚开始拿到这个题目,看了看关于中值滤波的基本原理,觉得原理很容易理解。
但实际做起来后却遇到了很多问题,比如怎么用文件调入图像,在划分图像时怎样移动行列值进行图像分块处理等。
为此我到图书馆借阅了相关资料,一步步学习,并向老师咨询了一些问题,老师不厌其烦的讲解,再加上同学之间的讨论研究,终于找到了解决问题的关键。
在整个设计一步一步向前推进到最终实现的过程中,在一次次遇到问题解决问题的过程中,我收获了很多。
这个设计研究的过程是一个宝贵的经历,对于我们今后解决学习工作中遇到的问题有很大的帮助。
最后,感谢老师们细心耐心的指导,使我在这短短的几个星期中汲取了大量的知识,综合能力得到了提升。
附:
参考文献:
《数字信号处理导论》胡广书编著清华大学出版社
《VisualC++课程设计》夏崇镨等编著清华大学出版社
《Matlab语言与控制系统仿真》孙亮主编北京工业大学出版社