保边滤波--bilateral filter and guided filter

机缘巧合之下最近对两种保边滤波器涉及较多,其中一种是bilateral filter被广泛应用于暗光/夜景的滤波,另外一种是广泛应用于图片增大恢复的guided filter,在此对两种常见的滤波器进行summary和conclusion。

1、引子-高斯滤波

双边滤波很有名,也是非常经典的算法,简单的说就是一种同时考虑了像素空间差异与强度差异的滤波器,因此具有保持图像边缘的特性,而高斯滤波只考虑空间像素的差异,高斯滤波表达式如下图所示:

其中W是权重,i和j是像素索引,K是归一化常量。公式中可以看出权重只和像素之间的空间距离有关系,无论图像的内容是什么,都有相同的滤波效果;因此高斯滤波是一款通用的与具体图像无关的滤波器,也是最为经典的滤波(去噪)算法。

2、 双边滤波

一款在1998年提出、成型于新世纪的滤波降噪算法;具体的第一次正式亮相论文Bilateral Filtering for Gray and Color Images

双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度。但是有区别的地方在于:双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波,只考虑了位置对中心像素的影响),还考虑了像素范围域中的辐射差异(例如卷积核中像素与中心像素之间相似程度、颜色强度,深度距离等),在计算中心像素的时候同时考虑这两个权重。

其中 I 是像素的强度值,所以在强度差距大的地方(边缘),权重会减小,滤波效应也就变小。总体而言,在像素强度变换不大的区域,双边滤波有类似于高斯滤波的效果,而在图像边缘等强度梯度较大的地方,可以保持梯度。
保边滤波--bilateral filter and guided filter_第1张图片

3、 引导滤波

引导滤波目前在pypi上已经由现成的模块可以使用,使用guided filter可以作为解决图片过大的一种方法。在论文High-Resolution Daytime Translation Without Domain Labels中作者提到:

  • medium or small resolution训练而成的全卷积网络在high resolution图片上直接应用
  • 引导滤波基于小图向大图复原
  • 使用超分模型基于小图到大图
  • 文中提到的space2depth,转化为多帧图片联合超分问题
    使用pypi上的引导滤波,通过设定不同的核大小,可以发现核越小越接近于小图,核越大越接近于大图。
保边滤波--bilateral filter and guided filter_第2张图片

引导滤波定义:
即需要引导图的滤波器,引导图可以是单独的图像或者是输入图像,当引导图为输入图像时,引导滤波就成为一个保持边缘的滤波操作,可以用于图像重建的滤波。

引导滤波与其他方向相比优势所在:

像高斯滤波等线性滤波算法所用的核函数相对于待处理的图像是独立无关的,也就意味着,对任意图像都是采用相同的操作。但是,有时候我们是希望在滤波过程中可以加入引导图像中的信息的,例如,在上色处理过程中,结果图像的色度通道需要包含跟给定亮度通道一致的连续边缘。

引导滤波的主要特点及应用:

1、引导滤波(导向滤波)是一种图像滤波技术,通过一张引导图I,对初始图像p(输入图像)进行滤波处理,使得最后的输出图像大体上与初始图像P相似,但是纹理部分与引导图I相似。其典型应用有两个:保边图像平滑,抠图。

2、 引导滤波(导向滤波)的目的是,保持双边滤波的优势(有效保持边缘,非迭代计算),而克服双边滤波的缺点(设计一种时间复杂度为 O(1) 的快速滤波器,而且在主要边缘附近没有梯度的变形)。

3、 引导滤波(导向滤波)不仅能实现双边滤波的边缘平滑,而且在检测到边缘附近有很好的表现,可应用在图像增强、HDR压缩、图像抠图及图像去雾等场景。

原理解释可以参见博文:引导滤波器(原理及opencv代码)

你可能感兴趣的:(OpenCV)