基于MATLAB的图像平滑算法实现及应用要点.docx
《基于MATLAB的图像平滑算法实现及应用要点.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像平滑算法实现及应用要点.docx(16页珍藏版)》请在冰豆网上搜索。
基于MATLAB的图像平滑算法实现及应用要点
1.3图像噪声
一幅图像在获取和传输等过程中,会受到各种各样噪声的干扰,其主要来源有三:
一为在光电、电磁转换过程中引入的人为噪声;二为大气层电(磁)暴、闪电、电压、浪涌等引起的强脉冲性冲激噪声的干扰;三为自然起伏性噪声,由物理量的不连续性或粒子性所引起,这类噪声又可分成热噪声、散粒噪声等。
一般在图像处理技术中常见的噪声有:
加性噪声、乘性噪声、量化噪声、“盐和胡椒”噪声等。
下面介绍两种主要的噪声。
1、高斯噪声
这种噪声主要来源于电子电路噪声和低照明度或高温带来的传感器噪声,也称为正态噪声,是在实践中经常用到的噪声模型。
高斯随机变量z的概率密度函数(PDF)由下式给出:
其中,z表示图像像元的灰度值;μ表示z的期望;σ表示z的标准差。
2、椒盐噪声
主要来源于成像过程中的短暂停留和数据传输中产生的错误。
其PDF为:
如果b>a,灰度值b在图像中显示为一亮点,a值显示为一暗点。
如果Pa和图像均不为零,在图像上的表现类似于随机分布图像上的胡椒和盐粉微粒,因此称为椒盐噪声。
当Pa为零时,表现为“盐”噪声;当Pb为零时,表现为“胡椒”噪声。
图像中的噪声往往是和信号交织在一起的尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边缘轮廓‘线条等模糊不清,从而使图像质量降低。
第2章、图像平滑方法
2.1空域低通滤波
将空间域模板用于图像处理,通常称为空间滤波,而空间域模板称为空间滤波器。
空间域滤波按线性和非线性特点有:
线性、非线性平滑波器。
线性平滑滤波器包括领域平均法(均值滤波器),非线性平滑滤波器有中值滤波器。
2.1.1均值滤波器
对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。
邻域平均法是空间域平滑技术。
这种方法的基本思想是,在图像空间,假定有一副N×N个像素的原始图像f(x,y),用领域内几个像素的平均值去代替图像中的每一个像素点值的操作。
经过平滑处理后得到一副图像g(x,y),其表达式如下:
式中:
x,y=0,1,2,…,N-1;s为(x,y)点领域中点的坐标的集合,但不包括(x,y)点;M为集合内坐标点的总数。
领域平均法有力地抑制了噪声,但随着领域的增大,图像的模糊程度也愈加严重。
为了尽可能地减少模糊失真,也可采用阈值法减少由于领域平均而产生的模糊效应。
其公式如下:
式中:
T为规定的非负阈值。
上述方法也可称为算术均值滤波器,除此之外还可以采用几何均值滤波器、谐波均值滤波器和逆谐波均值滤波器。
几何均值滤波器所达到的平滑度可以与算术均值滤波器相比,但在滤波过程中会丢失更少的图像细节。
谐波均值滤波器对“盐”噪声效果更好,但是不适用于“胡椒”噪声。
它善于处理像高斯噪声那样的其他噪声。
逆谐波均值滤波器更适合于处理脉冲噪声,但它有个缺点,就是必须要知道噪声是暗噪声还是亮噪声,以便于选择合适的滤波器阶数符号,如果阶数的符号选择错了可能会引起灾难性的后果。
2.1.2中值滤波器
中值滤波是一种常用的去除噪声的非线性平滑滤波处理方法,其基本思想用图像像素点的领域灰度值的中值来代替该像素点的灰度值。
二维中值滤波可以用下式表示:
式中:
A为滤波窗口;
为二维数据序列。
其主要功能是让周围象素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点,所以中值滤波对于滤除图像的椒盐噪声非常有效。
中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图像的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图像不宜采用中值滤波的方法。
如果希望强调中间点或距中间点最近的几个点的作用,则可采用加权中值滤波。
其基本原理是改变窗口中变量的个数,可以使一个以上的变量等于同一点的值,然后对扩张后的数字集求中值。
这种方法比简单中值滤波性能更好地从受噪声污染的图像中恢复出阶跃边缘以及其他细节。
另有一种可以处理具有更大概率的冲激噪声的是自适应中值滤波器,在进行滤波处理时,能依赖一定条件而改变领域的大小。
其优点是在平滑非冲激噪声时可以保存细节,所以既能除去“椒盐”噪声,平滑其他非冲激噪声,还能减少诸如物体边界细化或粗化等失真。
2.2频域低通滤波
在分析图像信号的频率特性时,对于一副图像,直流分量表示了图像的平均灰度,大面积的背景区域和缓变部分是低频分量,其边缘、细节、跳跃部分以及颗粒噪声都代表图像的高频分量。
频域低通滤波就是除去其高频分量就能去掉噪声,从而使图像得到平滑。
利用卷积定理,可以写成以下形式:
G(u,v)=H(u,v)F(u,v)
式中,F(u,v)是含噪图像的傅立叶变换,G(u,v)是平滑后图像的傅立叶变换,H(u,v)是传递函数。
利用H(u,v)使F(u,v)的高频分量得到衰减,得到G(u,v)后再经过反变换就得到所希望的图像g(u,v)了。
低通滤波平滑图像的系统框图如下所示:
图3-1图像频域低通滤波流程框图
低通滤波法又分为以下几种:
(1)理想低通滤波器(ILPF)
一个理想的低通滤波器的传递函数由下式表示:
式中D0是一个规定的非负的量,它叫做理想低通滤波
器的截止频率。
D(u,v)代表从频率平面的原点到(u,v)点的距离,即:
理想低通滤波器在处理过程中会产生较严重的模糊和振铃现象。
(2)巴特沃思低通滤波器(BLPF)
n阶巴待沃思滤波器的传递系数为
DLPF与ILPF不同,它的通带与阻带之间没有明显的不连续性,因此它没有“振铃”现象发生,模糊程度减少,但从它的传递函数特性曲线H(u,v)可以看出,在它的尾部保留有较多的高频,所以对噪声的平滑效果还不如ILPF(理想低通滤波器)。
(3)指数滤波器(ELPF)
其传递函数表示为:
由于ELPF具有比较平滑的过渡形,为此平滑后的图像没有“振铃”现象,而ELPF与BLPF相比.它具有更快的衰减特性,所以经ELPF滤波的图像比BLPF处理的图像稍微模糊一些。
(4)梯形滤波器(TLPF)
梯形滤波器的传递函数介于理想低通滤波器和具有平
滑过渡带的低通滤波器之间,它的传递函数为:
式中:
D0为梯形低通滤波器截止频率,D0、D1须满足D0
第三章、图像平滑处理与调试
本课程设计中程序运行的环境是windows平台,并选用MATLAB作为编程开发工具,MATLAB是一种向量语言,它非常适合于进行图像处理。
3.1模拟噪声图像
图像增强操作主要是针对图像的各种噪声而言的,为了说明图像处理中的滤波方法和用途,需要模拟数字图像的各种噪声来分析滤波效果。
MATLAB图像处理工具箱提供的噪声添加函数imnoise,它可以对图像添加一些典型的噪声。
其语法:
J=imnoise(I,type)
J=imnoise(I,type,parameters)
其功能是:
返回对原图像I添加典型噪声的图像J,参数type和parameters用于确定噪声的类型和相应的参数。
三种典型的噪声:
type=’gaussian’时,为高斯噪声;
type=’salt&pepper’时为椒盐噪声;
type=’speckle’时为乘法噪声;
图像数据读取函数imread从图像文件中读取图像数据。
其基本调用格式如下:
I=imread(文件名,’图像文件格式’)
其功能是:
将文件名指定的图像文件读入I中。
I=imshow(A)
其功能是显示图像A。
如下程序就实现了3种噪声污染了的图像:
I=imread('lena.bmp');%读取图像
I1=imnoise(I,'gaussian');%加高斯噪声
I2=imnoise(I,'salt&pepper',0.02);%加椒盐噪声
I3=imnoise(I,'speckle');%加乘性噪声
subplot(221),imshow(I);%显示图像I
subplot(222),imshow(I1);
subplot(223),imshow(I2);
subplot(224),imshow(I3);
运行结果如下:
图3-1噪声污染的图像
3.2均值滤波法
在MATLAB图像处理工具箱中,提供了imfilter函数用于实现均值滤波,imfilter的语法格式为:
B=imfilter(A,H)
其功能是,用H模板对图像A进行均值滤波,
取平均值滤波模版为
H1=1/9[111;111;111];
H2=1/25[11111;11111;11111;11111;11111];
分别以这两个平均值滤波算子对图3-1中的四幅图像进行滤波操作。
取H1,程序如下:
I=imread('lena.bmp');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
H1=ones(3,3)/9;%3×3领域模板
J=imfilter(I,H1);%领域平均
J1=imfilter(I1,H1);
J2=imfilter(I2,H1);
J3=imfilter(I3,H1);
subplot(221),imshow(J);
subplot(222),imshow(J1);
subplot(223),imshow(J2);
subplot(224),imshow(J3);
运行结果如图3-2
取H2,程序如下:
I=imread('lena.bmp');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
H2=ones(5,5)/25;
J=imfilter(I,H2);
J1=imfilter(I1,H2);
J2=imfilter(I2,H2);
J3=imfilter(I3,H2);
subplot(221),imshow(J);
subplot(222),imshow(J1);
subplot(223),imshow(J2);
subplot(224),imshow(J3);
运行结果如图3-3:
图3-2图3-1中图像经过平均值算子H1滤波后图像
图3-3图3-1中图像经过平均值算子H2滤波后图像
比较处理后的图像结果可知,领域平均处理后,图像的噪声得到了抑制,但图像变得相对模糊,对高斯噪声的平滑效果比较好。
领域平均法的平滑效果与所选用的模板大小有关,模板尺寸越大,则图像的模糊程度越大。
此时,消除噪声的效果将增强,但同时所得到的图像将变得更模糊,图像细节的锐化程度逐步减弱。
3.3中值滤波法
MATLAB图像处理工具箱提供了medfilt2函数用于中值滤波。
其语法格式为:
B=medfilt2(A)
其功能为:
用3×3的滤波窗口对图像A进行中值滤波;
B=medfilt2(A,[m,n])
其功能是:
用大小为m×n的窗口对图像A进行中值滤波;
B=medfilt2(A,'indexed',...)
其功能为:
对索引图像A进行中值滤波;
可运行以下程序实现:
I=imread('lena.bmp');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
J1=medfilt2(I1,[3,3]);%3×3中值滤波模板
J2=medfilt2(I2,[3,3]);
J3=medfilt2(I3,[3,3]);
J4=medfilt2(I1,[5,5]);%5×5中值滤波模板
J5=medfilt2(I2,[5,5]);
J6=medfilt2(I3,[5,5]);
figure,subplot(121),imshow(J1);
subplot(122),imshow(J2);
figure,subplot(121),imshow(J3);
subplot(122),imshow(J4);
figure,subplot(121),imshow(J5);
subplot(122),imshow(J6);
运行结果如下:
图3-4受到高斯、椒盐及乘法噪
声污染的图像经不同模版的中值滤波后的图像
由图3-4可知,此方法能够非常好地将椒盐噪声去除掉,可见中值滤波方法对于椒盐噪声或脉冲式干扰具有很强的滤除作用,但对于高斯和乘性噪声效果不佳。
与图3-2、图3-3相比,当噪声为椒盐噪声时,中值滤波器的效果比均值滤波好。
因为这些干扰值与其邻近像素的灰度值有很大的差异,经过排序后取中值的结果就将此干扰强制变成与其邻近的某些像素值一样,从而达到去除干扰的效果。
但是由于中值滤波方法在处理过程中会带来图像模糊,所以对于细节丰富,特别是点、线和尖顶细节较多的图像不适用。
3.4频域低通滤波法
频域低通滤波处理噪声图像的方法如下:
首先构建二维滤波器d;
[f1,f2]=freqspace(25,'meshgrid');
Hd=zeros(25,25);
d=sqrt(f1.^2+f2.^2)<0.5;%0.5为截止半径大小
Hd(d)=1;
h=fsamp2(Hd);
figure,freqz2(h,[64,64]);
图3-5用频率采样法构建的二维滤波器
然后用所构建的二维滤波器对以上图像进行滤波
I=imread('lena.bmp');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
J=imfilter(I,h,'replicate');
J1=imfilter(I1,h,'replicate');
J2=imfilter(I2,h,'replicate');
J3=imfilter(I3,h,'replicate');
subplot(221),imshow(J);
subplot(222),imshow(J1);
subplot(223),imshow(J2);
subplot(224),imshow(J3);
其运行结果如下图:
图3-6图3-1中图像经过二维滤波器h滤波后图像
频域低通滤波具有更好的选择性,对噪声在一定范围内也可以起到抑制作用,同时也对图像的边缘细节和高频信息分量有更好的保持作用。
使得图像在轮廓上显得更清晰。
第四章、总结与体会
图像平滑即消除噪声是图像处理中一个重要的方面,由于图像受到干扰而产生噪声的原因是多方面的,在对一幅图像进行平滑处理前,必须仔细分析其产生噪声的原因。
选择合适的平滑方法,才能既消除图像噪声,又不使图像边缘轮廓或线条变模糊,经过这样的处理后,图像更符合人的视觉特性。
随着数字图像处理的广泛应用,一些在人工智能、控制领域中成熟或前沿的数学模型如神经网络、模糊数学、自适应控制等相关技术在数字图像处理中逐渐采用,从而使建立的图像处理数学模型效率更高、性能更好。
这些方法在不同程度上增强了去噪效果,但也带来了运算复杂、适用面窄等缺点。
因而我们在选择消除噪声方法时,必须综合考虑各种因素,选择最适合的平滑方法。
通过本次课程设计,不仅强化了自己原有的知识体系,
对数字图像输了这门课程也有了更深一步的认识,也扩展了自己的思维。
通过Matlab程序的编写与比较,认识到不同方法对图像的去噪效果是不同的。
不同的平滑算法适应于特定类型的噪声模型,实际应用中应该根据实际图像中包含的噪声情况灵活地选取适当的平滑算法。
课程设计是一个通过思考、发问、自己解惑并动手、提高的过程。
我会在以后的学习中不断学习,积累经验,完善自己。
参考文献
[1]杨帆,等.数字图像处理与分析.北京:
北京航空航天大学出版社,2007.10
[2]闫娟.数字图像的平滑处理方法研究.软件导刊,2009.01
[3]平丽.图像平滑处理方法的比较研究.信息技术,2010.01
[4]梁一江.图像平滑处理方法初探及简单的算法介绍.才智,2009.04