平滑滤波器的演化

来源:互联网 发布:文明5 贸易网络 编辑:程序博客网 时间:2024/05/18 22:08

去噪,在图像分析中,很常见。值得注意的是,去噪不一定是使用平滑,但平滑在去噪的路上频频被采用。前段时间随意浏览,看了些新算法,从原理上作点总结,解构别人的设计思路,也是一件乐事。

远亲不如近邻,在图像滤波器中,体现得淋漓尽致。邻域操作在图像处理中比比皆是。从微积分的角度上看,对任意给定区域,定制一个划分规则,在足够小的子域内,完全可以认定为相同或相似。图像处理中的很多模板操作其实都是基于此点展开。
          对图像而言,最小划分就是每个象素。而在 X=X 的恒等式内,无法进行其他运算,很自然的,会扩大他,比如取3X3或其他,于是就有了很多模板。然而问题是,在划分的子域(一个模板大小)内,并非完全满足相同或相似这个原则。所以,有了缺陷,于是有了改进空间,结果幻化了很多有意思的算法。

平滑操作,本质来说无法去噪;但他本身绕开去噪问题,更注重于模糊噪声,进而达到降噪目的。有点考不到第一,先及格再说的味道。当然,代价也很明显,就是会把有效细节也一起消弱。这就是平滑了。

 

均值滤波(mean)


        很显然,就是在给定子域内取平均的操作。
在追求平等的年代,很理想主义。现实告诉我们,平等很多时候只是口号!在图像的均值中就是这样,模板越大,满足子域相似的条件就越脆弱,于是就越模糊,如果化妆中,去痘要与淡化五官轮廓为代价(很有鬼片的感觉),很显然,很多人不接受。所以,在一些特殊的场合,特别是工业上,他比较流行,在其他图像的修复上,他往往只能是辅助的一个操作。很难独立来实现一些功能。

高斯滤波(gauss)


        平等已然只能理想,现实显然还要继续的情况下。参考子域的空间理论,很自然地会想重要性问题,自己亲人到邻居,分开对待,人不为己,天诛地灭的自我中心思想开始在这里展现。主次的概念,也叫权重引入,而各方向等同的Gauss函数备受关注并盛行起来,成了一个重要的滤波器。其最大的贡献性在于提供一种权值的简单计算方法。在图像的子域里,Gauss通过空间距离给出权值,自身的权值最大,以此加权滤波。好处是比均值更保留的五官信息,虽然也有一定程度的模糊。但同时也看到在降噪上其实力度比均值差一些。在Gauss操作中,设想当中心点恰巧是噪声的时候,Gauss还是尽力地维持其为噪声的权利。

双边滤波(bilateral filter)  双边滤波,Bilateral filter,是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。

  双边滤波器的好处是可以做边缘保存edge preserving,一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显的模糊边缘,对于高频细节的保护效果并不明显。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。
  
         但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波,因此我们对于双边滤波器进行了改进,由于小波分解可以把信号分解为高频和低频部分,我们对于不同频率段进行不同的滤波。首先将彩色图像RGB模式转为CIE-LAB模式,然后做一次离散二维小波变换dwt2,对于高频的HH,LH,HL部分我们用Bayes shrink的阈值做了软门限soft thresholding,对于低频部分我们把它再进行分解,然后对高频做小波阈值,对低频采用双边滤波。这样取得的恢复图像,MSE减少了30%,色差误差ciede2000减少了50%,可证明更适于滤波和人类视觉系统。
 

双边高斯

        Gauss函数中通过Sigma值和半径大小控制着平滑力度。双边高斯很显然引入2次Gauss概念。更代码点讲就是给了2个Sigma值,一个叫spatial sigma,一个叫intersity sigma加上一个半径来控制。第一个Sigma跟原来的Gauss一致,后一个就是一个亮度的变化信息的参考。
回到子域的模型上,抛开噪声问题,当一个子域里面相近时,其实采用什么的平滑都无所谓。当子域出现不相近时,设想一张有黑白对半的图,当子域包含一半白一半黑的时候,均值会把这点变成灰,Gauss没均值力度大单也作了改变。双边高斯这时引进intersity,意思就是把要参与运算的点跟当前点(模板中心点,前面叫的自身)作差,由这个差值产生另一套权值,原则是,差越大,计算的权值越小。把这个权值与原始Gauss定义的空间权值作乘来作为平滑的权值计算。这样就解决了模糊问题。
         双边Gauss适合降低弱噪声(就是噪声跟非噪声点相差不大的噪声)。通过双重权值的引入,可以在平滑和保留上实现合适的双赢。再解释一下其适用性,皮肤上有个刚起不久的粉刺,此时粉刺上的肤色跟皮肤比较相近,在双边高斯作用下可以比较好的修复,当粉刺张得成熟,跟皮肤相差得大时,此时等同于毛发跟皮肤的差别,该滤波无法消除它,但也基本保留,不加伤害。这就是双边高斯带来的思想。
通过调整其中参数,可以控制平滑力度。Intersity Sigma可以理解为细节保留的一个参数。

非局部均值(non local means)

         这个滤波基本可以理解为去噪声设计的平滑滤波器。特别针对那种椒盐/粉刺类的噪声。
去噪滤波器的设计必须满足最基本的2条件,一是好的地方(毛发细节,轮廓信息等)不能变模糊,二是噪点要消除。
于是,我们很希望有判断是不是噪声点的判据出现。很希望在细节上有双边高斯的优点,在噪声点上有均值或高斯滤波的力度。但怎么去判定是噪点还是细节,站在计算机的角度,很难(这也是我老喜欢叫人工愚蠢原因)。
在人口日益膨胀的时代,一家人会分家,分家之后很难保证住所相邻。这个滤波器很现实的考虑了这个问题,对子域作了相应修正,所以取名(non-local)。
        它给出了点的有效性判断,原则模仿双边高斯,相似的点有效。不同在于它改进了判定范围,它定义了一个自家区域A,就是以自身为中心的一个设定半径(Block Radius)的子域,相似性等同于跟区域A里的所有象素的相似性之和。注意,双边高斯里这个也是这个思想,只是其自家子域是1X1;这里修正为可以任意大小的方块(当然也可以是其他图形,只是方块好编程)。什么好处呢,当模板处在噪声点上,而周围都是好的点时,在双边高斯里,因为周围点跟中心点相差都大,平滑力度很弱,该点基本保留下来。而通过子域计算,假设是3X3,此时相似性就变为9个像素的差值比较,这样平滑力度可以很大,而完全把噪点消除。
          其他思路跟其他滤波一样,定义一个(Windows Radius)在这个窗口(假设是NXN,N=2*Windows Radius+1)里移动A子域大小,计算权值,然后利用这些来计算结果。此时权值大的点不一定就靠近自身,只要满足子域A匹配度,其权值都大。
          可以看到,单就计算而言,他有NXN个子域比较,随着参数的变大,会变得很慢。而当噪点比较大,比如粉刺,我们只有提高子域A的尺寸,才能得到有效匹配值。该算法是可行去噪算法。原理上,对任意一点可以在全图寻找所有相似点来平滑,只是这样时间不允许。

http://blog.csdn.net/afgh2587849/article/details/6554182

原创粉丝点击