图像处理-双边滤波 Bilateral Filtering

在Shader中实现双边滤波的时候,总感觉理解的不太透彻,这里写博客记录一下。

参考资料:
算法原理
GPUImage中Bilateral Filtering的实现

高斯滤波 空间域

在理解双边滤波之前,先来理解上面是高斯滤波
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
为了实现线性的平滑,高斯滤波器和高斯分布(正态分布)是有关系的。
一个二维的高斯函数如下:

其高斯核的图像为:
图像处理-双边滤波 Bilateral Filtering_第1张图片

有了高斯函数之后就可以得到高斯模板,常用的高斯模板(也就是高斯核)是这样的:

双边滤波 空间域+值域

高斯滤波可以看成是基于像素点的欧式距离
双边滤波是结合像素点之间的欧式距离与像素点之间的颜色差异

上图中,最右边是归一化的公式,其目的是为了完全平滑的图像结果不变。双边滤波之所以可以保留边缘是因为其滤波模板不仅仅依赖于像素的位置关系,更依赖于其颜色,所以边缘可以被保留。

高斯滤波对比双边滤波

不管是什么样的图片,其高斯滤波模板可视化的图都差不多,见下图:

因为不同的像素会影响到双边滤波模板,当像素为为下图中蓝色方框(中心像素点落在右边,偏白色)的时候:

其双边滤波模板可视化的图见下图:

你可能感兴趣的:(图像理论)