图像平滑的MATLAB实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像平滑的MATLAB实现
摘要:图像平滑技术用于平滑图像的噪声,本文对均值滤波、中值滤波、维纳滤波等三种平滑滤波器
进行理论学习,并通过MATLAB对滤波效果进行仿真。
关键词:图像平滑均值滤波中值滤波维纳滤波
实际获得的图像一般都因受到某种干扰而含有噪声。引起噪声的原因有敏感元器件的内部噪声、照相底片上感光材料的颗粒、传输通道的干扰及量化噪声等。噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。根据噪声服从的分布,可以分为高斯噪声、泊松噪声和颗粒噪声等。平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波器。
MATLAB图像处理工具箱提供了模拟噪声生成的函数imnoise和去除噪声的方法。函数imnoise可以对图像添加一些典型的噪声。由于噪声的随机性,它们对某一像点的影响使其灰度和邻点的灰度显著不同,因此可以利用这种不同来消除噪声。去除噪声的方法有线性滤波、中值滤波、自适应滤波。本文就针对上述三种平滑滤波进行MATLAB仿真。
1 图像平滑的MATLAB实现
1.1 均值滤波[1]
1.1.1理论基础
邻域平均法是空间域平滑噪声技术,其均值滤波器对于扫描得到的图像中的颗粒噪声非常适用,理论依据如下:
对于给定的图像f(i,j)中的每个像点(m,n),取其邻域S。设S含有M个像素,取其平均值作为处理后所得图像像点(m,n)处的灰度。用一像素邻域内各像素灰度平均值来代替该像素原来的灰度,即是邻域平均技术。
邻域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可根据图像的局部统计特性而变化,点(m,n)一般位于S的中心。如S为3×3邻域,点(m,n)位于S中心,则:
假设噪声n是加性噪声,在空间各点互不相关,且期望为0,方差δ2,g是未受污染的图像,含有噪声的图像f经过邻域平均后为
由上式可知,经邻域平均后,噪声的均值不变,方差,即噪声方差变小,说明噪声强度减弱了,即抑制了噪声。同时,邻域平均法也平滑了图像信号,特别是可能使图像目标区域的边界变得模糊。可以证明,对图像进行邻域平均处理相当于图像信号通过一低通滤波器。
1.1.2 均值滤波的MATLAB程序
I=imread('E:/flower.jpg');
I=imnoise(I,'gaussian',0,0.02); %添加均值为0,方差为0.02的高斯噪声。
imshow(I);
h=[ 1 1 1
1 1 1
1 1 1 ]; %产生滤波模板。
h=h/9; %对滤波模板进行归一化。
J=conv2(I,h); %用均值模板对图像滤波。
figure,imshow(J,[])
1.1.3 均值滤波结果
Fig1 对图像进行均值滤波的结果
1.2 中值滤波
1.2.1 理论基础
中值滤波是抑制噪声的非线性处理方法。对于给定的n个数值{a1, a 2 …a n},将它们按大小有序排列。当n为奇数时,位于中间位置的那个数值称为这n个数值的中值。当n为偶数时,位于中间位置的两个数值的平均值称为这n个数值的中值,记作med(a1, a 2 …a n)。中值滤波就是这样的一个变换,图像中滤波后某像素的输出等于该像素邻域中
各像素灰度的中值。
中值滤波的方法运算简单,易于实现,而且能较好地保护边界,但有时会失掉图像的细线和小块的目标区域。
邻域的大小决定在多少个数值中求中值,窗口的形状决定在什么样的几何空间中取元素计算中值。对二维图像,窗口A的形状可以使矩形、圆形及十字形等,它的中心一般位于被处理点上。窗口的大小及形状有时对滤波效果影响很大。
在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。
1.2.2 中值滤波的MATLAB程序
I=imread('F:/man.jpg');
K=medfilt2(I);
subplot(1,2,1),imshow(I)
subplot(1,2,2),imshow(K)
1.2.3 中值滤波结果
Fig2 对图像进行中值滤波的结果
3 维纳滤波器
1.3 维纳滤波器[2]
1.3.1理论基础
维纳滤波器也是经典的线性降噪滤波器,维纳滤波是一种在平稳条件下采用最小均误差准则得出的最佳滤波器,使得方均误差最小。其实质是解维纳-霍夫方程。维纳滤波器首先估计出像素的局部矩阵均值和方差:
η是图像中每个像素N×M的领域,利用维纳滤波器估计出其灰度值:
式中,v2是整幅图像的方差。它根据图像的局部方差来调整滤波器的输出,当局部方差大时,滤波器的效果较弱,反之滤波器的效果较强,是一种自适应滤波器。
1.3.2 维纳滤波的MATLAB程序代码
I=imread(‘F:man.jpg’);
Figure,imshow(I);
K1=wiener2(J,[3,3];
K2=wiener2(J,[5,5];
K3=wiener2(J,[7,7];
figure,imshow(K1);
figure,imshow(K2);
figure,imshow(K3);
1.3.3 维纳滤波的结果
Fig3 原始图像
Fig3 3×3 维纳滤波的结果
Fig4 5×5维纳滤波的结果
Fig5 7×7维纳滤波的结果
2 总结
均值滤波器于高斯噪声滤波有比较好的滤波效果,中值滤波器对于椒盐噪声有比较好的滤波效果,维纳滤波器通常对于含有白色噪声的图像滤波效果较好,本文限于作者能力和时间,未能对各种噪声的去除方法进行逐一比较。
通过这次课程论文的撰写,本人对数字图像处理的研究内容和图像处理的实现方法有了初步的了解,感谢老师的严谨授课!在撰写过程中本人态度不积极,遇到问题未能积极思考解决方法,一直拖延,深感惭愧,在接下来的学习过程中定将努力改进,谢谢!
3 参考文献:
[1]孙兆林.MATLAB 6.x图像处理[M].北京:清华大学出版社,2002.
[2]张德丰.MATLAB数字图像处理[M].北京:机械工业出版社,2009.
[3]/downloads68/245557/6.ppt 2006-6-1
[4]朱虹.数字图像处理基础[M].北京:科学出版社,2011.