双边滤波算法的原理(3)

2019-01-27 11:12

带有噪音的美女图2 使用σs=15、σr=25双边滤波后的结果 使用σs=10、σr=35双边滤波后的结果 美女1 细腻的头发在滤波后依然有着飘然的感觉,而面部的斑点也已经悄然消失。美女2的面部也得到了恰当的护理,而其湛蓝的双眼依旧是那么有神。 四、效率分析及进一步优化 很明显,上述算法的执行时间直接依赖于N的大小,而从相关推导公式中看,N的值直接取决于T和σr的大小,T越大,N越大,σr越大,N越小。当T固定时,比如为255时,取不同的σr对应的N值如下表所示: σr N 5 1053 10 263 20 66 30 29 40 16 60 7 80 4 1000 3 上表中,可以发现,当σr小于20时,所需要的循环次数N极具增加,当N超过100时,可以认为这个算法已经不再具有优化的意义了,可能比原始的算法还慢。这个从原理上也很好解释。当σr比较小时,高斯函数的曲线在中心线附近急剧下降,从而需要更多的三角函数来逼近他。 因此,进一步的优化需要从T的取值以及N的方面予以考虑。 我们观察到,在对值域高斯核函数进行计算时,使用的是f(y)-f(x),而不是f(y),通常情况下,一副图像的f(y)中所有值的最大值可能为255,但是某个区域内的f(y)-f(x)在全图中的值却不一定为255,如果这个值小于255,那么在上述算法中使用的T值就可以缩小,从而减少N的大小,比如当σr为10时,T取255,由上表可知N=263,而如果T为210,则大约只需要 263*(210/255)^2 = 178 次循环,几乎减少了100次。 那么一副图像的实际的T值打开是什么个范畴呢,使用标准的Lena图做了个测试,在不同的取样半径下获得的结果如下表: r T 1 153 3 205 5 208 10 210 15 211 20 215 30 215 这说明在很多情况下T值确实小于255,即使取样半径比较大。 这里则涉及到一个平衡问题。计算实际的T值一般情况下会获得小于255的结果,这有利于减小N,从而降低程序的执行时间,但是这个计算的过程本身也需要时间,如果这个时间大于其带来的好处,则这个改进就是退步。幸好,在很久以前,关于指定半径内的最大值算法就已经有了O(1)的快速算法, 其执行时间一般要小于进行一次本例中这种循环的时间。所以这个改进是值得的。 那么我在看看小 σr时大N的问题,当σr比较小时,我们观察其分布曲线,如下图:

σr = [1 3 5 10 15]时的曲线 由上图可以看出小σr时,曲线在中心线附近迅速衰减,理论表明这个距离为[-3σr,3σr],在此之外的值可以忽略不计,因此,那些对最终结果没有什么贡献的循环就完全可以舍弃,这部分的理论推导可以详见论文 Acceleration of the shiftable O(1) algorithm for bilateral ?ltering and non-local means 。

我们知道,Non-Local算法在很大程度是双边模糊的扩展,只是其值域的相似度函数更加复杂,不是简单的f(y)-(f(x)那么简单了,而是和f(y)和f(x)的领域有关,因此直接的Non-Local实现理论上比双边滤波还要耗时,上面介绍的这种优化方式在后面这篇论文里提到也是可以用于Non-Local的,有兴趣的朋友可以自己去研究下。

五:小结和展望

可以看到,本文的这种优化方式实际上是利用Cos函数去毕竟高斯函数,在代码层次上,

需要(N+1)*4此高斯模糊,而由上面相关表格可以看到,N的数值一般都在10以上,因此,至少要执行44次高斯模糊,这还不包括获取需要高斯模糊的数据部分以及最后的滤波结果获取。即使高斯模糊在高效,比如对于600*400的彩色图,5ms足也,那么执行双边模糊保守估计也要400ms左右,因此这个算法说实在的效率还是不行。

这两篇文章分别是2011年及2012年发表的,应该是代表着目前比较先进的技术,我在网上经常看到有人说双边滤波可是实时,实在是不晓得那些高人用的是什么理论,抑或是什么超级机器。

同我之间的一篇博文中双指数边缘平滑滤波器用于磨皮算法的尝试 提到的Beeps边缘保留算法相比,这里的速度就要慢很多了,而两者的效果相比基本上差不多,所以实在很纠结。 希望有更好的方法用于该算法。


双边滤波算法的原理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:试论财务管理目标

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: