导向滤波(Guided Filter)原理、应用与工程实现
简介
导向滤波(Guided Fliter)显式地利用 guidance image 计算输出图像,其中 guidance image 可以是输入图像本身或者其他图像。导向滤波比起双边滤波来说在边界附近效果较好;另外,它还具有
相关工作
- Explicit Weighted-Average Filters(显式加权平均滤波器)
双边滤波可以在平滑的过程中保持边缘,但是会出现不希望的梯度翻转(gradient reversal) 的 artifact。原因在于如果一个像素周围有较少的相似的像素,那么Gaussian weighed average 就会不稳定。 另外就是双边滤波的效率问题,brute-force 实现双边滤波需要
- Implicit Weighted-Average Filters (隐式加权平均滤波器)
优化损失函数,求解线性系统的方法等价与隐式图像滤波。尽管 optimization-based 方法一般可以得到高质量的结果,但是求解线性系统较为费时间。已经有人证明这些隐式的滤波器和显式的是相关联的,显式的滤波器也可以写成求解矩阵问题的形式。
- Non-average Filters (非均值滤波器)
保边滤波可以不用平均的方法,如中值滤波,可以看成是一个局部的直方图滤波器。 其余还有 Total-Variation filters。非均值滤波器通常都是计算量较大的。
导向滤波(Guided Filter)
除了速度优势以外,导向滤波的一个很好的性能就是可以保持梯度,这是bilateral做不到的,因为会有梯度翻转现象。(Preserves edges, but not gradients)。
而导向滤波可以避免这一缺点。基本原理如下:
其中,
接下来就是解出这样的系数,使得
其中的
【上图为原论文的slide,其中
可以看出,如果
如果方差较小,即是一个平滑区域的话,那么方差较小约等于0,则
约等于 0 。那么 约等于1, 于是 ,这样相当于说这个像素在该窗口内的输出值相当于在这个窗口进行了均值平滑,而考虑到pixel属于多个窗口,如果这是一个平滑区域,那么就相当与多个均值平滑滤波器的级联。 如果方差大,即是边缘的话,
就约等于 cov 除以 var( 很小),而由于是线性变换,梯度与 无关,这样可以保证梯度的仅仅做了一个放缩变换,不会引起梯度翻转。
为了展示GF和BF的效果的相似性,将同一图像经过GF和BF滤波后,计算两个输出的“PSNR”,(It is often considered as visually insensitive when the PSNR >= 40 dB) 。
双边滤波(BF)引起梯度翻转问题的原因在于它无法保证滤波前后在边缘处的梯度还能保持一致。对于一个如上图所示的斜坡slope形状的边缘来说,在两个交界点附近的slope上的像素,空间的权重各个方向类似,但是值域上来说,较小的值会更有优势(将左边的平面设想为等值的,那么这些点都距离该slope上的值一样近,因此权重较大,而右边的slope上的点越来越大,导致权重越来越小)。这样一来,左边界附近的slope就被往下拉,类似地,右边界附近会往上提。这种边缘上的梯度变化导致了detail上多了artifact,在进行enhance的时候,就会带来梯度翻转的效应。而导向滤波(GF)由于显式控制了梯度的比例关系,因此保证斜边基本一致,从而解决了这个问题。
除了平滑保边滤波以外,GF还可以作为结构转移滤波。(Interestingly, the guided filter is not simply a smoothing filter. Due to the local linear model of q = aI+b, the output q is locally a scaling (plus an offset) of the guidance I. This makes it possible to transfer structure from the guidance I to the output q, even if the filtering input p is smooth),因此可以用于feathering/matting 以及 dehazing 等一系列的应用。
算法实现与加速
文中还提到一个计算
GF 还有更高的提速的算法,通过降采样求出a和b,在升采样回原尺寸,并用来对
算法如下:
导向滤波参数控制
导向滤波有两个参数,一个是窗口大小 radius,一个是正则系数
导向图为输入图自身的导向滤波
导向滤波的guidance可以是另外的图,比如一个分割mask或者一个经过颜色变换后的低分辨率等尺寸图像。但是也可以将输入图自身作为guidance的。这种情况下,导向滤波的
为了便于说明,可以更进一步,将目标图像的表达式写为
其中:
可以直观理解:输出图包括两部分:输入图的均值;导向图guidance的detail成分(按照一定比例叠加)。
当导向图为输入图自身时,上述目标图像的表达式可以写成:
同时:
也就是说,
reference
[1] K. He, J. Sun, and X. Tang. Guided image filtering. In ECCV, pages 1–14. 2010.
[2] K. He, J. Sun, and X. Tang. Guided image filtering. TPAMI, 35(6):1397–1409, 2013
[3] He K, Sun J. Fast Guided Filter[J]. Computer Science, 2015.
[4] https://kaiminghe.github.io/eccv10/eccv10ppt.pdf
2017/12/22 Fri 14:34 version 1 初版
2023/01/04 Wed 21:02 version 2 修改之前的一些问题,增补直观理解与输入做guide的分析