Bilateral Filtering快速双边滤中文Word下载.docx
《Bilateral Filtering快速双边滤中文Word下载.docx》由会员分享,可在线阅读,更多相关《Bilateral Filtering快速双边滤中文Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
像素的光度相似性,
为归一化参数,与
不同,
的值依赖于图像f。
单单应用值域滤波是没有意义的,它仅仅改变了图像的颜色映射,因为在空间上远离领域中心x的点的取值不应该对x的最终值有所影响。
恰当的做法是结合空域与值域滤波,也即同时考虑几何位置与光度大小。
组合后的滤波即为双边滤波器:
这种结合后的滤波器称之为双边滤波器。
它用与x点空间邻近且光度相似的点的像素值平均来取代x点上原来的像素值。
在平滑的区域,双边滤波器表现为标准的网域滤波器,通过平均过滤掉噪声。
如图2(a)所示,存在一条锐利的分界线将图像分为暗和明的区域两个区域,当双边滤波器被定位在明区域上的一个像素点时,相似函数s对同一侧的像素值取近似于1的值,对暗区域的像素点取近似于0的值,如图2(b)所示。
滤波操作的结果是,滤波器用中心点周围的明区域像素点的平均值来取代原来中心点的值,而忽略与其邻近的暗区域像素点,反之亦然。
因为公式中网域要素的作用,过滤后的图像达到良好的平滑效果,同时因为值域要素的作用,明暗区域的分界线也被很好地保留了(见图2(c))。
图2
如图3所示,双边滤波能够在保持强边缘的同时有效地对图像的细小变化进行平滑,所以它被用于噪声去除、细节分解、HDR压缩和图像抽象。
Petschnigg和G.,Agrawala等人[8]在双边滤波器的基础上提出了联合双边滤波的概念。
它与双边滤波不同的是,联合双边滤波器的掩膜权重不是基于输入图像而是基于导向图像进行计算的。
这种方法适用于输入图像无法提供准确边缘信息的情况,例如闪光/无闪光去噪、图像上采样、图像去卷积。
虽然双边滤波有上述的优点,但同时也存在着一些不足。
其中一点是当它被用于细节分解和HDR压缩时,会引起梯度反转人造物(表现为光晕)的出现。
这是因为当一个像素点周围的相似像素很少时,其高斯加权平均是不稳定的。
另外,双边滤波的效率偏低,其时间复杂度达到O(Nr2),当掩膜半径r过大时其计算时间是无法接受的。
二、双滤滤加速的典型方法
1.分离高斯核的方法(对每个空间方向使用一维双边滤波)
PhamandVliet在[PvV05]这篇文章中提出用一维的双边滤波器分别对各个空间方向进行滤波。
结果非常快,但在图象边缘分布着坐标系的地方会产生人工的痕迹。
1.1简单的分离高斯核
由于高斯函数可以写成可分离的形式,因此可以采用可分离滤波器实现来加速。
所谓的可分离滤波器,就是可以把多维的卷积化成多个一维卷积。
具体到二维的高斯滤波,就是指先对行做一维卷积,再对列做一维卷积。
这样就可以将计算复杂度从O(M*M*N*N)降到O(2*M*M*N),M,N分别是图像和滤波器的窗口大小。
问题是实现时候怎么计算一维的卷积核呢?
其实很简单,按照前面计算出来的窗口大小,计算所有离散点上一维高斯函数的权值,最后将权值之和归一化到1.另外,可以设法将二维模板运算转换成一维模板运算,对速度的提高也是非常可观的。
例如,
(1)式可以分解成一个水平模板和一个垂直模板,即,
=
×
(1)
(2)
我们来验证一下。
设图象为
,经过
(1)式处理后变为
,经过
(2)式处理后变为
,两者完全一样。
如果计算时不考虑周围一圈的象素,前者做了4×
(9个乘法,8个加法,1个除法),共36个乘法,32个加法,4个除法;
后者做了4×
(3个乘法,2个加法)+4×
(3个乘法,2个加法)+4个除法,共24个乘法,16个加法,4个除法,运算简化了不少,如果是大图,效率的提高将是非常客观的。
1.2具体应用到高斯滤波器
高斯平滑滤波器的原理高斯滤波器是根据高斯函数的形状来选择权值的线性平滑滤波器。
高斯平滑滤波器对去除服从正态分布的噪声是很有效果的。
一维零均值高斯函数为
。
其中,高斯分布参数决定了高斯滤波器的宽度。
对图像来说,常用二维零均值离散高斯函数作平滑滤波器,函数表达式如下:
式
(1)
由于高斯函数的可分离性,高斯滤波器加速可以有效实现。
通过二维高斯函数的卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积的结果与方向垂直的相同一维高斯函数进行卷积。
因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长。
这些性质使得它在早期的图像处理中特别有用,表明高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器。
高斯函数的可分离性很容易表示:
式
(2)
式(3)
式(4)
离散高斯平滑滤波器的设计在高斯滤波器的设计中,高斯函数的最佳逼近由二项式展开的系数决定。
由高斯函数的可分离性得到,二维高斯滤波器能用2个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向。
实际上,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结果图像进行转置来完成。
对较大的滤波器,二项式展开系数对大多数计算机来说都太多,但是,任意大的高斯滤波器都能通过重复使用小的高斯滤波器来实现。
设计高斯滤波器的另一途径是直接从离散高斯分布中计算模板值。
式(5)
其中c是规范化系数,把上式重新表示为
式(6)
选择适当的σ2值,就可以在窗口上评价该值,以便获取核或模板。
首先选择n值和σ2值,然后根据式(4)计算出模板的右下角元素,再根据高斯模板的中心左右上下对称性(如图1c7×
7的模板结构所示)对应地复制给其它三个区域,即可得出整个模板的元素,最后再对全部的模板元素求和、取倒数即求得规范化系数。
2.使用3D直方图
Weiss在文章[Wei06]中提出用一个基于3维直方图的方法,并用此方法来加速正方形空间核的二维双边滤波。
其算法的主要思想就是改变图像直方图的表示方式来达到加速图像处理的过程,同时达到在任意位宽的图像,任意大小的滤波核的情况下其时间复杂度都为
;
这是一种基于处理每个像素需要的时间复杂度度量,在之前的双边滤波算法都是在
之上。
其核心思想就是利用多个部分直方图来合成一个完整的直方图,相邻列可以并行处理,相邻行之间的改变也大大缩小了;
并且在对直方图的排序时采用基数排序来代替传统的快速排序。
而该改进确实可以提升算法的速度,但是存储开销非常大,文中则提出了一种基于序数变化的思想来减小存储开销。
对于高精度的图像他又提出了一种基于移位操作的逐步取精的方法,即在源图像上右移8位得到一个低位图像然后进行双边滤波,得到的结果保存以便第二次移位得到的图像利用,以便更快的找到中值;
最后右移完成,那么整个高精度的图像也就完成了滤波。
在最近的文章[Por08]中,Porikli同样介绍了基于3维直方图的一种低计算复杂度的算法,Porikli提出常数时间双边滤波算法O
(1)。
其中常数时间是指计算时间与滤波核大小r无关。
文章针对不同特征的双边滤波采用不同的证明方法。
文章主要提供了三种方法:
整体直方图,线性滤波器,泰勒级数。
作者证明几种情况都能使双边滤波达到o
(1)。
3.基于FFT加速的方法
DurandandDorsey在文章[DD02]中提出一种快速的近似算法来处理3维的双边滤波,该算法通过将灰度核g2表示为g2(n-I(y))I(y),其中n是一个常数,通二维快速复利叶变换减少计算量,然后线性插值得到结果。
ParisandDurand在文章[PD06]中将3维复利叶变换应用到下采样中。
所以[DD02]中的算法可以看成ParisandDurand在文章[PD06]中算法的一种特殊情况。
ParisandDurand在文章[PD09]中将他们的算法扩展到彩色图象中。
4.FGT泰勒级数展开
4.1快速高斯变换
应用于处理如下形式的高斯函数加权和:
定义:
高斯函数的Hermite展开为:
进行平移和尺度变换后有:
由上面可以得下式:
于是对多维的情况可以表示如下
4.2基于快速高斯变换的双边滤波
在文章[FastGaussBilateralFiltering]中,作者应用FGT的办法,首先对双边滤波的表达式进行改写:
其中:
然后定义:
其中ti为目标点,si为源点。
作者的记法(O(N))settingg1(x-y)=1,其中I(x)=J(u)。
4.3基于改进的快速高斯变换的双边滤波
三、总结与展望
参考文献:
[1]PhamandVliet:
separablebilateralfilteringforfastvideopreprocessing.[PvV05]
[2]Weiss:
FastMedianandBilateralFiltering.[Wei06]
[3]Porikli:
ContanttimeO
(1)BilatearalFiltering.[Por08]
[4]ParisandDurand:
AFastApproximationoftheBilateralFilterusingaSignalProcessingApproach[PD06]
[5]XiaoliangWan:
AsharperrorestimateforthefastGausstransform[WK06]
[6]DurandandDorsey:
FastBilateralFilteringfortheDisplayofHigh-DynamicImages