双边滤波原理(Bilateral Filtering)
基本思路
双边滤波(bilateral filtering)的基本思路是同时考虑将要被滤波的像素点的空域信息(domain)和值域信息(range)。因此是一种 combined 滤波方式,因此叫做 bilateral ,即同时考虑两方面的信息。首先,对于图像滤波来说,一个通常的intuition是:(自然)图像在空间中变化缓慢,因此相邻的像素点会更相近。但是这个假设在图像的边缘处变得不成立。如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不吼的,因此考虑再利用像素点的值的大小进行补充,因为边缘两侧的点的像素值差别很大,因此会使得其加权的时候权重具有很大的差别,从而使得只考虑自己所属的一边的邻域。可以理解成先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。
实现原理
在 bilateral filtering 中,两个要素即:closeness 和 similarity ,或者说 domain 和 range ,或者 geometric 和 photometric ,其数学表达方式相近,如下:
由于domain component,使得滤波特性较好,由于range component,使得crisp edge 可以保持。
下图示意了有边缘的时候的权重和最后的滤波结果,可以看出权重在边界有很明显的分界,从而几乎只对自己所属的边缘一侧的像素点进行加权。
实现 c 和 s 两个函数的一种方法即 Gaussian 核,决定其性质的为各自的sigma参数,即 $ \sigma_d $ 和 σ r \sigma_r σr 。
参数讨论
对于空域的 Gaussian 滤波不需要继续解释,对于 Range Filtering ,即不考虑空间只考虑像素点的相似性进行加权的结果,作者进行分析,得到结论,值域滤波只是对待滤波的图像的直方图的一个变换,而对于单峰的(unimodal)的直方图,range filtering 将值域范围向着峰的中间即均值方向压缩。
对于参数的选取,进行如下讨论:
首先,两个 sigma 值为 kernel 的方差,方差越大,说明权重差别越小,因此表示不强调这一因素的影响,反之,则表示更强调这一因素导致的权重的不均衡。因此:
- 两个方面的某个的 sigma 相对变小 表示这一方面相对较重要,得到强调。如 sigma_d 变小,表示更多采用近邻的值作平滑,说明图像的空间信息更重要,即相近相似。如 sigma_r 变小,表示和自己同一类的条件变得苛刻,从而强调值域的相似性。
其次,sigma_d 表示的是空域的平滑,因此对于没有边缘的,变化慢的部分更适合;sigma_r 表示值域的差别,因此强调这一差别,即减小 sigma_r 可以突出边缘。
- sigma_d 变大,图像每个区域的权重基本都源于值域滤波的权重,因此对于空间邻域信息不是很敏感;sigma_r 变大,则不太考虑值域,权重多来自于空间距离,因此近似于普通的高斯滤波,图像的保边性能下降。因此如果像更多的去除平滑区域的噪声,应该提高 sigma_d ,如果像保持边缘,则应该减小 sigma_r 。
- 极端情况,如果 sigma_d 无穷大,相当于值域滤波;sigma_r 无穷大,相当于空域高斯滤波。
其它
对于彩色图片,由于两种颜色中可能有其他完全不同的颜色,因此不像灰度图那样,仅仅是 blurred ,而是会产生 auras like 的奇怪的晕圈,所以在双边滤波的过程中,将RGB转换到 CIE-Lab 色彩空间,这个空间与人的主管色彩辨识能力相关,因此可以改善这一缺陷。
THE END
2017/12/18 Mon 22:27
reference:
Tomasi C, Manduchi R. Bilateral filtering for gray and color images” ICCV[J]. Iccv, 1998:839 - 846.