基于MATLAB的图像平滑算法实现及应用.docx
《基于MATLAB的图像平滑算法实现及应用.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像平滑算法实现及应用.docx(21页珍藏版)》请在冰豆网上搜索。
基于MATLAB的图像平滑算法实现及应用
目录
第一章、概述2
1.1图像平滑概述2
1.2图像平滑应用2
1.3噪声模型………………………………………………………….2
第二章、图像平滑方法5
2.1空域低通滤波5
2.1.1均值滤波器5
2.1.2中值滤波器6
2.2频域低通滤波7
第三章、图像平滑处理与调试10
3.1模拟噪声图像10
3.2均值滤波法12
3.3中值滤波法15
3.4频域低通滤波法17
第四章、总结与体会20
参考文献21
第一章、概述
1.1图像平滑概述
图像平滑(Smoothing)的主要目的是减少图像噪声。
图像噪声来自于多方面,有来自于系统外部的干扰(如电磁波或经电源窜进系统内部的外部噪声),也有来自于系统内部的干扰(如摄像机的热噪声,电器机械运动而产生的抖动噪声内部噪声)。
实际获得的图像都因受到干扰而有噪声,噪声产生的原因决定了噪声分布的特性及与图像信号的关系。
减少噪声的方法可以在空间域或在频率域处理。
在空间域中进行时,基本方法就是求像素的平均值或中值;在频域中则运用低通滤波技术。
图像中的噪声往往是和信号交织在一起的,尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边缘轮廓,线条等模糊不清,从而使图像降质。
图像平滑总是要以一定的细节模糊为代价的,因此如何尽量平滑掉图像的噪声,又尽量保持图像的细节,是图像平滑研究的主要问题之一。
1.2图像平滑应用
图像平滑主要是为了消除被污染图像中的噪声,这是遥感图像处理研究的最基本内容之一,被广泛应用于图像显示、传输、分析、动画制作、媒体合成等多个方面。
该技术是出于人类视觉系统的生理接受特点而设计的一种改善图像质量的方法。
处理对象是在图像生成、传输、处理、显示等过程中受到多种因素扰动形成的加噪图像。
在图像处理体系中,图像平滑是图像复原技术针对“一幅图像中唯一存在的退化是噪声”时的特例。
1.3噪声模型
1.3.1噪声来源
一幅图像可能会受到各种噪声的干扰,而数字图像的实质就是光电信息,因此图像噪声主要可能来源于以下几个方面:
光电传感器噪声、大气层电磁暴、闪电等引起的强脉冲干扰、
相片颗粒噪声和信道传输误差引起的噪声等。
噪声的存在恶化图像质量,使图像模糊,更严重的甚至是图像的特征完全被淹没,以至于给图像识别和分析带来了困难。
目前比较经典的去噪声的方法都或多或少给图像带来模糊,因此,探求一种既能去除噪声又不至于使图像模糊的方法,一直是图像增强处理中的难题,至今尚在不断地探索。
2.1.1噪声的分类
所谓噪声,就是妨碍人的视觉器官或系统传感器对所接收的图像信息进行理解或分析的各种因素。
一般噪声是不可预测的随机信号,它只能用概率统计的方法去认识。
依据噪声产生的原因,我们可将经常影响图像质量的噪声源分为三类:
2.1.1阻性元器件内部产生的高斯噪声,这类噪声是由于元器件中的电子随机热运动而造成的,很早就被人们成功的建模并研究,一般常用零均值高斯白噪声作为其模型。
2.1.2光电转换过程中的泊松噪声,这类噪声是由光的统计本质和图像传感器中光电转换过程引起的。
在弱光情况下,影响更为严重,常用具有泊松密度分布的随机变量作为这类噪声的模型。
2.1.3感光过程中产生的颗粒噪声,在显微镜下检查可发现,照片上光滑细致的影调在微观上其实呈现一个随机的颗粒性质。
此外颗粒本身大小的不同以及每一颗粒暴光所需光子数目的不同,都会引入随机性。
这些因素的外观表现称为颗粒性。
对于多数应用,颗粒噪声可用高斯过程(白噪声)作为有效模型。
根据噪声和信号的关系可以将其分为两种形式:
(1)加性噪声:
有的噪声与图像信号g(x,y)无关,在这种情况下,含噪图像f(x,y)可表示为:
f(x,y)=g(x,y)+n(x,y)信道噪声及扫描图像时产生的噪声都属于加性噪声。
(2)乘性噪声:
有的噪声与图像信号有关,这可以分为两种情况:
一种是某像素点的噪声只与该像素点的图像信号有关,另一种是某像素点的噪声与该点及其邻域的图像信号有关。
如
果噪声和信号成正比,则含噪图像f(x,y)可以表示为:
f(x,y)=g(x,y)+n(x,y)g(x,y)
图加乘性噪声图
另外,还可以根据噪声服从的分布对其进行分类,这时可以分为高斯噪声、泊松噪声和颗粒噪声等。
泊松分布噪声一般出现在照度非常小及用高倍电子线路放大的情况下,泊松噪声可以认为是椒盐噪声。
其他的情况通常为加性高斯噪声。
颗粒噪声可以认为是一种白噪声过程,在密度域中是高斯分布加性噪声,而在强度域中为乘性噪声。
1.3.2 高斯噪声
数字图像的噪声主要来源于图像的获取和传输过程。
按其产生的原因可分为:
光电子噪声、热噪声、KTC噪声、量化噪声和信道传输噪声等。
按其是否独立于空间坐标以及和图像是否关联可分为加性噪声和乘性噪声。
为了最大限度地减少噪声对图像的影响,人们从改善硬件质量和对受污图像进行处理两个方面做了许多的工作,文中主要考虑对受污图像进行处理的算法研究。
为了对受污图像进行处理,人们对噪声进行了研究并建立了相应的数学模型。
对噪声表述的数学建模主要考虑噪声的成因和分析受污图像上噪声的统计特性两个因素,这种噪声主要来源于电子电路噪声和低照明度或高温带来的传感器噪声,也称为正态噪声,是在实践中经常用到的噪声模型。
高斯随机变量z的概率密度函数(PDF)由下式给出:
其中,z表示图像像元的灰度值;μ表示z的期望;σ表示z的标准差。
图加高斯噪声图
1.3.3椒盐噪声
主要来源于成像过程中的短暂停留和数据传输中产生的错误。
其PDF为
如果b>a,灰度值b在图像中显示为一亮点,a值显示为一暗点。
如果Pa和Pb均不为零,在图像上的表现类似于随机分布图像上的胡椒和盐粉微粒,因此称为椒盐噪声。
当Pa为零
时,表现为“盐”噪声;当Pb为零时,表现为“胡椒”噪声。
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);
运行结果如下:
图1噪声污染的图像
第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('h:
\赵云-真三国六.jpg');%读取图像
I1=imnoise(I,'gaussian');%加高斯噪声
I2=imnoise(I,'salt&pepper',0.02);%加椒盐噪声
I3=imnoise(I,'speckle');%加乘性噪声
subplot(221),imshow(I);%显示图像I
title('原图像');
subplot(222),imshow(I1);
title('高斯噪声污染的图像');
subplot(223),imshow(I2);
title('椒盐噪声污染的图像');
subplot(224),imshow(I3);
title('乘性噪声污染的图像');
运行结果如下:
图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,程序如下:
RGB=imread('h:
\赵云-真三国六.jpg');
I=rgb2gray(RGB);
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
H2=ones(5,5)/25;%5×5领域模板
J=imfilter(I,H2);%领域平均
J1=imfilter(I1,H2);
J2=imfilter(I2,H2);
J3=imfilter(I3,H2);
subplot(221),imshow(J);
title('原图像滤波后');
subplot(222),imshow(J1);
title('高斯污染图像滤波后');
subplot(223),imshow(J2);
title('椒盐污染图像滤波后');
subplot(224),imshow(J3);
title('乘法污染图像滤波后');
运行结果如图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进行中值滤波;
可运行以下程序实现:
RGB=imread('h:
\赵云-真三国六.jpg');
I=rgb2gray(RGB);
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);
title('高斯3*3中值滤波');
subplot(122),imshow(J2);
title('椒盐3*3中值滤波');
figure,subplot(121),imshow(J3);
title('乘法3*3中值滤波');
subplot(122),imshow(J4);
title('高斯5*5中值滤波');
figure,subplot(121),imshow(J5);
title('椒盐5*5中值滤波');
subplot(122),imshow(J6);
title('乘法5*5中值滤波');
运行结果如下:
图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用频率采样法构建的二维滤波器
然后用所构建的二维滤波器对以上图像进行滤波
RGB=imread('h:
\赵云-真三国六.jpg');
I=rgb2gray(RGB);
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);
title('原图像滤波后');
subplot(222),imshow(J1);
title('高斯污染图像滤波后');
subplot(223),imshow(J2);
title('椒盐污染图像污染后');
subplot(224),imshow(J3);
title('乘法污染图像滤波后');
其运行结果如下图:
图3-6图3-1中图像经过二维滤波器h滤波后图像
频域低通滤波具有更好的选择性,对噪声在一定范围内也可以起到抑制作用,同时也对图像的边缘细节和高频信息分量有更好的保持作用。
使得图像在轮廓上显得更清晰。
第四章、总结与体会
图像平滑是为了人类视觉系统的生理接受特点而设计的改善图像质量的方法,有很强的主观性。
不同的平滑算法适应于特定类型的噪声模型,实际应用中应该根据实际图像中包含的噪声情况灵活地选取适当的平滑算法。
文中对噪声模型及分类,图像平滑处理的两大方面即空间域和频率域,以及两种处理方向里的几种处理方法进行了介绍,并对一种常用的简单平滑算法进行了分析。
本文结合不同的噪声类型,分析讨论了均值滤波、中值滤波和频域低通滤波3种平滑滤波技术在去几种典型噪声方面性能的优劣和视觉效果的对比,对在图像平滑处理方面提供了一定的参考。
通过本次设计使我加深了对图像处理尤其是图像平滑的认识及其应用,同时感谢在此设计中帮助我的老师和同学
参考文献
[1]杨帆,等.数字图像处理与分析.北京:
北京航空航天大学出版社,2007.10
[2]闫娟.数字图像的平滑处理方法研究.软件导刊,2009.01
[3]平丽.图像平滑处理方法的比较研究.信息技术,2010.01
[4]梁一江.图像平滑处理方法初探及简单的算法介绍.才智,2009.04
[5]李 骞,陈占伟.图像边缘检测新技术及其应用.许昌学院学报,2006.3
[6]求是科技编著.MATLAB7.0从入门到精通.人民邮电出版社,2006
[7]程正兴.《小波分析算法与应用》,西安交通常大学出版社,1997
[8]章毓晋.《图像处理和