完整版高斯平滑滤波器含matlab代码.docx

上传人:scccc 文档编号:13935235 上传时间:2022-01-27 格式:DOCX 页数:6 大小:188.67KB
返回 下载 相关 举报
完整版高斯平滑滤波器含matlab代码.docx_第1页
第1页 / 共6页
完整版高斯平滑滤波器含matlab代码.docx_第2页
第2页 / 共6页
完整版高斯平滑滤波器含matlab代码.docx_第3页
第3页 / 共6页
完整版高斯平滑滤波器含matlab代码.docx_第4页
第4页 / 共6页
完整版高斯平滑滤波器含matlab代码.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《完整版高斯平滑滤波器含matlab代码.docx》由会员分享,可在线阅读,更多相关《完整版高斯平滑滤波器含matlab代码.docx(6页珍藏版)》请在三一文库上搜索。

1、Gaussian Smoothing Filter高斯平滑滤波器一、图像滤波的基本概念图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有 椒盐(Salt & Pepper ) 噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。图像滤波总体上讲包括 空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然 后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。它是一种邻域运算,即输出图像中

2、任何像素的值都是通过采用一定的算法,根据输入图像 中对用像素周围一定邻域内像素的值得来的。如果输出像素是输入像素邻域像素的线性组 合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。线性滤波器使用连续窗函数内像素加权和来实现滤波。特别典型的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着 线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。如果图像的不同部分使用不同的滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。任何不

3、是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。二、图像滤波的计算过程分析滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。他们非常类似, 但是还是会有不同。下面我们来根据相关和卷积计算过程来体会一下他们的具体区别: 卷积的计算步骤:(1)卷积核绕自己的核心元素顺时针旋转180度(2)移动卷积核的中心元素,使它位于输入图像待处理像素的正上方(3)在旋转后的卷积核中,将输入图像的像素值作为权重相乘(4)第三步各结果的和做为该输入像素对应的输出像素相关的计算步骤:(1)移动相关核的

4、中心元素,使它位于输入图像待处理像素的正上方(2)将输入图像的像素值作为权重,乘以相关核(3)将上面各步得到的结果相加做为输出可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。而计算相关过程中不需要旋转相关核。例如:magic(3) =8 1 6;3 5 7;4 9 2,旋转 180 度后就成了 2 9 4;7 5 3;6 1 8三、高斯(核)函数所谓径向基函数(Radial Basis Function 简称 RBF),就是某种沿径向对称的标量函数。通常定义为空间中任一点 x到某一中心xc之间欧氏距离的单调函数 ,可记作k(|x-xc|),其作 用往往是局部的,即当x远离xc时函数

5、取值很小。最常用的径向基函数是高斯核函数,形式为k(|x-xc|)=exp- |x-xc|F2/(2*(742) 其中xc为核函数中心,为函数的宽度参数 ,控 制了函数的径向作用范围。高斯函数具有五个重要的性质, 这些性质使得它在早期图像处理中特别有用. 这些性质表明, 高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:(1)二维高斯函数具有 旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来 说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平

6、滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方 向.(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素 值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的, 因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.(3)高斯函数的付立叶变换频谱是 单瓣的.正如下面所示,这一性质是高斯函数付立叶变 换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平

7、滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.(4)高斯滤波器宽度(决定着平滑程度)是由参数b表征的,而且b和平滑程度的关系是非 常简单的.b越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数*可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望 突变量(欠平滑)之间取得折衷.(5)由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可 以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方 增长.四、高斯平滑滤

8、波器的设计高斯函数的最佳逼近由二项式展开的系数决定,换句话说,用杨辉三角形(也称Pascal三角形)的第 n行作为高斯滤波器的一个具有n个点的一维逼近,例如,五点逼近为:1 4 6 4 1 它们对应于Pascal三角形的第5行.这一模板被用来在水平方向上平滑图像.在高斯函数 可分离性性质中曾指出,二维高斯滤波器能用两个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向.实际中,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结果图像进行转置来完成. 这一技术在模板尺寸 N约为10时的滤波效果极好.对较大的滤波器,二项式展开系数对大 多数计算机来说都太多.但是,任

9、意大的高斯滤波器都能通过重复使用小高斯滤波器来实现.高斯滤波器的二项式逼近的b可用高斯函数拟合二项式系数的最小方差来计算. 设计高斯滤波器的 另一途径是直接从离散高斯分布中计算模板权值。为了计算方便,一般希望滤波器权值是整数。在模板的一个角点处取一个值,并选择一个K使该角点处值为1。通过这个系数可以使滤波器整数化,由于整数化后的模板权值之和不等于1,为了保证图像的均匀灰度区域不受影响,必须对滤波模板进行权值规范化。 高斯滤波器的采样值或者高斯滤波器的二项式展开系数可以形成离散高斯滤波器.当用离散高斯滤波器进行卷积时,其结果是一个更大的高斯离散滤波器.若一幅图像用N*N离散高斯滤波器进行平滑,接

10、着再用M*M 离散高斯滤波器平滑的话,那么平滑结果就和用(N+M-1 ) * (N+M-1 )离散高斯滤波器平滑的结果一样.换言之,在杨辉三角形中用第N行和第M行卷积形成了第 N+M-1行.五、具体实现二维高斯函数:G(x,y)X2Ae也y2r272Ae 21当=出时,单行.山口 口必;M 玄时,G 0.01般用宽度小于的滤波器,由连续Gaussian分布求离散模板,需采样、量化,并使模板归一化。举例结果如下:图1原图像lenna图1有噪声的lenna图中的噪声是高斯白噪声。图3 (Wj斯滤波,=2=1选取不同参数6的高斯滤波模板,平滑的效果是有差别的,实际上越大其作用域就越宽,即平滑窗口越大

11、,因而平滑的力度就越大,其结果使得图象变得越模糊。当b很大时, 由于量化的影响,高斯滤波实际上就变成邻域平均了。图4图斯滤波,2 2=3可以看到高斯滤波虽然能够在一定程度上去掉噪声,但也使得图象变得模糊不清,效 果并不能令人满意。该图使用。2=3即模板尺度为13x13的高斯滤波器。图象变得更模糊些。MATLAB 程序:% The main.m file % clc;% Parameters of the Gaussian filter: n1=5;sigma1=3;n2=5;sigma2=3;theta1=0;w,map=imread(lenna.gif);x=ind2gray(w,map);

12、filter1=d2gauss(n1,sigma1,n2,sigma2,theta1);y=imnoise(x,gauss,0.01);f1=conv2(x,filter1,same);rf1=conv2(y,filter1,same);figure(1);subplot(2,2,1);imagesc(x);title(lenna);subplot(2,2,2);imagesc(y);title(noisy lenna);subplot(2,2,3);imagesc(f1);title(smooth);subplot(2,2,4);imagesc(rf1);title(noise cancel

13、);colormap(gray);% End of the main.m file % Function d2gauss.m:% This function returns a 2D Gaussian filter with size n1*n2; theta is% the angle that the filter rotated counter clockwise; and sigma1 and sigma2 % are the standard deviation of the Gaussian functions.function h = d2gauss(n1,std1,n2,std2,theta)r=cos(theta) -sin(theta);sin(theta) cos(theta);for i = 1 : n2for j = 1 : n1u = r * j-(n1+1)/2 i-(n2+1)/2;h(i,j) = gauss(u(1),std1)*gauss(u(2),std2);endendh = h / sqrt(sum(sum(h.*h);% Function gauss.m:function y = gauss(x,std)y = exp(-xA2/(2*stdA2) / (std*sqrt(2*pi);% End of the functions %

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1