几何尺寸与公差论坛

 找回密码
 注册
查看: 55844|回复: 1

Gaussian Smoothing Filter高斯平滑滤波器

[复制链接]
发表于 2010-4-8 21:40:20 | 显示全部楼层 |阅读模式
http://hi.baidu.com/simonyuee/blog/item/3ed1a026f58b2f128a82a191.html
贾云得,机器视觉
     高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。高斯平滑滤波器对于抑制服从正态分布    的噪声非常有效。一维零均值高斯函数为:

  
     g(x)=exp( -x^2/(2  sigma^2)

  
其中,高斯分布参数Sigma决定了高斯函数的宽度。  对于图像处理来说,常用二维零均值离散高斯函数作平滑滤波器。

  
       高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波 器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:

  
  
(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑 程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑 滤波器在后续边缘检测中不会偏向任一方向.

  
  
(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权 均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算 子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.

  
  
(3)高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性 质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低 频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.

  
  
(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且 σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像 中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.

  
  
(5)由于高斯函数的可分离性,较大尺寸的高斯滤波器可以得以有效地实现.二维高斯函数卷积可 以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性 增长而不是成平方增长.

  


  
图像滤 波 (转:http://www.baisi.net/viewthread.php?tid=219452
  


  
1 图像滤波的基本概念

  
     图像常常被强度随 机信号(也称为噪声)所污染.一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白 强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。

  
      图像滤波总体上讲包括空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换 达到滤波的目的。它是一种邻域运算,即输出图像中任何像素的值都是通过采用一定的算法,根据输入图像中对用像素周围一定邻域内像素的值得来的。如果输出像 素是输入像素邻域像素的线性组合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。

  
      线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。线性滤波器使用连续窗函数内像素加权和来实现滤波。特别典型 的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。如果图像的不同部分使用不同的 滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。任何不是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是 空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。

  


  
2 图像滤波的计算过程分析

  
      滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。他们非常类似,但是还是会有不同。下面我们来根据相关和卷积计算过程来体会一下他们 的具体区别:

  
卷积的计算步骤:

  
(1)     卷积核绕自己的 核心元素顺时针旋转180

  
(2)     移动卷积核的中 心元素,使它位于输入图像待处理像素的正上方

  
(3)     在旋转后的卷积 核中,将输入图像的像素值作为权重相乘

  
(4)     第三步各结果的 和做为该输入像素对应的输出像素

  
相关的计算步骤:

  
1移动相关核的 中心元素,使它位于输入图像待处理像素的正上方

  
2将输入图像的 像素值作为权重,乘以相关核

  
3将上面各步得 到的结果相加做为输出

  
      可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。而计算相关过程中不需要旋转相关核。

  
例如: magic(3)  =[8 1 6;3 5 7;4 9 2],旋转180度后就成了[2 9  4;7 5 3;6 1 8]

  


  
高斯平滑滤波器的设计

  
      高斯函数的最佳逼近由二项式展开的系数决定,换句话说,用杨辉三角形(也称Pascal三角形)的第n行作为高斯滤波器的一个具有n个点的一维逼近,例 如,五点逼近为:

  
1 4 6 4 1

  
     它们对应于Pascal三角形的第5行.这一模板 被用来在水平方向上平滑图像.在高斯函数可分离性性质中曾指出,二维高斯滤波器能用两个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向. 实际中,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结果图像进行转置来完成.
  这 一技术在模板尺寸N约为10时的滤波效果极好.对较大的滤波器,二项式展开系数对大多数 计算机来说都太多.但是,任意大的高斯滤波器都能通过重复使用小高斯滤波器来实现.高斯滤波器的二项式逼近的σ可用高斯函数拟合二项式系数的最小方差来计 算.


  
     设计高斯滤波器的另一途径是直接从离散高斯分布中计算模板权值。为了计算方便,一般希望滤波器权值是整数。在模板的一个角点处取一个值,并选择一个K使该 角点处值为1。通过这个系数可以使滤波器整数化,由于整数化后的模板权值之和不等于1,为了保证图像的均匀灰度区域不受影响,必须对滤波模板进行权值规范 化。

  
  高斯滤波器的采样值或者高斯滤波器的二项式展开系数可以形成离散高斯滤波器.当用离散高斯滤波器进行卷积时,其结果是一个更大的高斯离散滤 波器.若一幅图像用N*N离散高斯滤波 器进行平滑,接着再用M*M离散高斯滤波器平滑的话,那么平滑结果就和用(N+M-1)*(N+M-1)离散高斯滤波器平滑的结果一样.换言之,在杨辉三 角形中用第N行和第M行卷积形成了第N+M-1行.

  


  
使用高斯滤波器进行图像的平滑

  
如果适应卷积运算对图像进行滤波,在matlab中可以通过2个不同的函数 来实现conv2imfliter。他们的调用 方式如下:

  
Img_n = conv2(Img,g,'same');     和
  Img_n = imfilter(Img,g,'conv');


  
这两种函数处理的结果是完全一样的。

  
imfiler函数在默认的 情况下,对图像的滤波计算用的是相关
         Img_n = imfilter(Img,g);%使用相关运算滤波

  


  
     下面是一个简单的例子展示了使用相同的高斯滤波核函数,相关运算和卷积运算对图像平滑的效果可以直接后边附的程序查看。

  
      由结果可以看出相关运算和卷积运算的在用于图像平滑滤波时效果差别不大。当模板大小N>50的时候。边界的系数已经非常小,对运算起到的作用和 微乎其微,所以平滑的结果差别已经非常细微,肉眼几乎难以察觉。

  
example.m

  
clear all
  I = imread('lenagray.jpg');% 请确认读入的是灰度图像文件
  Img=double(I);
  alf=3;
  n=10;%定义模板大小
  n1=floor((n+1)/2);%计算中心
  for i=1:n
  for j=1:n
  b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
  end
  end
  Img_n = uint8(conv2(Img,double(b),'same'));
  pause
  K=uint8(imfilter(Img,b));
  Img_n2=uint8(imfilter(Img,b,'conv'));
  J=(Img_n2)-Img_n;
  flag=mean(J()
  subplot(131),imshow(I);title('原图')
  subplot(132),imshow(Img_n);title('卷积运算图')
  subplot(133),imshow(K);title('相关运算图')
  figure(2),surf(b);

发表于 2013-8-22 09:18:22 | 显示全部楼层

回复: Gaussian Smoothing Filter高斯平滑滤波器

http://baike.baidu.com/link?url= ... LA4cd7lnRAbiI-o_Mp_
常用的平面空间域滤波法有两类
一类是拟合图像的方法,包括n阶多项式拟合、离散正交多项式拟合、二次曲面拟合等多种方法;另一类是平滑图像的方法,包括领域平均法、中值滤波法、梯度倒数加权法、选择式掩模法等。
首先是高斯滤波器
高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。而非线性滤波则很适合用于去除脉冲噪声,中值滤波就是非线性滤波的一种。平滑滤波器就是用滤波掩模确定的邻域内像素的平均灰度值去替代图像的每个像素点的值,这很容易用硬件实现。而高斯滤波器是带有权重的平均值,即加权平均,中心的权重比邻近像素的权重更大,这样就可以克服边界效应。高斯滤波如果采用3×3掩模的具体公式如下:
g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;
其中,f(x,y)为原图像中(x,y)像素点的灰度值,g(x,y)为经过高斯滤波和的值。
上述的公式可以结构化为3×3的掩模如下:
×1/16
从结构化掩模中可以看到,处于掩模中心的位置比其他任何像素的权值都大,因此在均值计算中给定的这一像素显得更为重要。而距离掩模中心较远的像素就显得不太重要,这样做是为了减小平滑处理中的模糊。当然可以采取其他的权重达到相同的目的,其中16=1+2+1+2+4+2+1+2+1。但是由于1、2、4、16都是2的整数次幂很便于硬件的实现。
具体的参考数字图像处理的经典书——冈萨雷斯的《数字图像处理(matlab版)》借此机会希望有更多喜欢“图像处理+FPGA”的同学一同探讨这本书上的精华。
其次是中值滤波器
中值滤波器是统计滤波器的一种,属于非线性的的空间滤波器。正如其名,它是将像素(中值计算中包括的原像素值)邻域内灰度的中值代替该像素的值。中值滤波器的使用非常普遍,这是因为对于一定类型的随机噪声,它提供了优秀的去噪能力,比小尺寸的线性平滑滤波器的模糊程度明显要低。中值滤波器对处理脉冲噪声非常有效。中值滤波器在FPGA上实现起来相对高斯滤波的难度更大一点。因为它要对相邻的像素进行排序,需要用到一些比较器。
虽然说中值滤波器对脉冲信号很有效,但是仅采用简单的中值滤波将不可避免的丢失图像的细节,造成视觉效果的模糊。于是后来又些人提出了一些改进的方法,如基于个数判断的脉冲噪声的中值滤波器、自适应门限的中值滤波器、多窗口下的自适应中值滤波器等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-12-21 21:57 , Processed in 0.042204 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表