![c5e5a4bc9513270b41fbad1988e95ce8.png](https://img-blog.csdnimg.cn/img_convert/c5e5a4bc9513270b41fbad1988e95ce8.png)
一、实验原理
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。
双边滤波器的好处是可以做边缘保存(edge preserving),一般用高斯滤波去降噪,会较明显地模糊边缘,对于高频细节的保护效果并不明显。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。
下图是双边滤波的原理示意图:
![b6b1c059b160657b33deb35e6177f677.png](https://img-blog.csdnimg.cn/img_convert/b6b1c059b160657b33deb35e6177f677.png)
在双边滤波器中,输出像素的值依赖于邻域像素值的加权值组合:
![b36ac85c6257fcfaae71cce015ba1304.png](https://img-blog.csdnimg.cn/img_convert/b36ac85c6257fcfaae71cce015ba1304.png)
而加权系数w(i,j,k,l)取决于空域核和值域核的乘积。(i,j),(k,l)分别指两个像素点的坐标。
其中空域核表示如下(如图):
![362859f65480848c229c57e51b05804d.png](https://img-blog.csdnimg.cn/img_convert/362859f65480848c229c57e51b05804d.png)
值域核表示为:
![3a15d5fa6f4bd036e3bc9e7634241d41.png](https://img-blog.csdnimg.cn/img_convert/3a15d5fa6f4bd036e3bc9e7634241d41.png)
两者相乘后,就会产生依赖于数据的双边滤波权重函数:
![cd461f525a094c5f27965e5641bc7eb2.png](https://img-blog.csdnimg.cn/img_convert/cd461f525a094c5f27965e5641bc7eb2.png)
d函数是根据像素距离选择权重,距离越近权重越大,这一点和方框滤波,高斯滤波方式相同。而r函数则是根据像素的差异来分配权值。如果两个像素值越接近,即使相距较远,也比差异大而距离近的像素点权重大。正是r函数的作用,使得边缘,即相距近但差异大的像素点的特性得以保留。
二、实验任务
![aac6c30dffa88ee89db4607e43b11a1b.png](https://img-blog.csdnimg.cn/img_convert/aac6c30dffa88ee89db4607e43b11a1b.png)
三、实验步骤
3.1 下面是我自己用函数实现的双边滤波器。
![6bdedb7c38194fc0d35400769b0737fa.png](https://img-blog.csdnimg.cn/img_convert/6bdedb7c38194fc0d35400769b0737fa.png)
参数:
- 第一个参数,image,输入图像,即源图像,需要单通道图像。
- 第二个参数,diameter,表示在过滤过程中每个像素邻域的直径。
- 第三个参数,sigma_i,颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
- 第四个参数,sigma_s, sigmaSpace坐标空间中滤波器的sigma值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。
3.2 实验结果对比。
![ba0cccb981fd665204dda5460e295430.png](https://img-blog.csdnimg.cn/img_convert/ba0cccb981fd665204dda5460e295430.png)
![a63b021604ab6d56b38bf863f14eeb26.png](https://img-blog.csdnimg.cn/img_convert/a63b021604ab6d56b38bf863f14eeb26.png)
参数设置:7, 20.0, 20.0,结果如下:
![1022aa9f4dc98c070936071da36bbac1.png](https://img-blog.csdnimg.cn/img_convert/1022aa9f4dc98c070936071da36bbac1.png)
![89d9f7566547ccdb043b01c181489db8.png](https://img-blog.csdnimg.cn/img_convert/89d9f7566547ccdb043b01c181489db8.png)
可以看opencv出自带的的双边滤波器滤波效果很好,既滤除了噪声,同时保留了边缘,自己设计的滤波器效果差一些
参数设置:7,120.0,120.0
![f73c0aa4b7d7e5ae48d61870f46ba5b9.png](https://img-blog.csdnimg.cn/img_convert/f73c0aa4b7d7e5ae48d61870f46ba5b9.png)
![8eb0dfc03c0d3d0f4917cb7dc5dc30f7.png](https://img-blog.csdnimg.cn/img_convert/8eb0dfc03c0d3d0f4917cb7dc5dc30f7.png)
可以看出随着sigma参数增大,图像开始变得模糊。
参数设置:10, 20.0, 20.0
![76cbadaceef81eed8c2407593db845c9.png](https://img-blog.csdnimg.cn/img_convert/76cbadaceef81eed8c2407593db845c9.png)
![1198ccfb31809c7dcd98b20547e79d84.png](https://img-blog.csdnimg.cn/img_convert/1198ccfb31809c7dcd98b20547e79d84.png)
参数设置:20,20.0,20.0
![6f28901de2a0125cf600f043bd121488.png](https://img-blog.csdnimg.cn/img_convert/6f28901de2a0125cf600f043bd121488.png)
![24412f9785fd3648ec3548cbe17b49b7.png](https://img-blog.csdnimg.cn/img_convert/24412f9785fd3648ec3548cbe17b49b7.png)
滤波器尺寸d:大于20程序运行将较慢,d 是像素邻域,直径可以看出随着diameter参数增大,sigma参数不变的话,对图像影响较小。
参数设置:20,200.0,200.0
![4c32226da6ad9525b162a5fcc14e5b62.png](https://img-blog.csdnimg.cn/img_convert/4c32226da6ad9525b162a5fcc14e5b62.png)
![d50ae1b7a0d93f09bd53675d02e40ce4.png](https://img-blog.csdnimg.cn/img_convert/d50ae1b7a0d93f09bd53675d02e40ce4.png)
如果diameter与sigma值同时变大,图像将被平滑,更加模糊。
3.3实验代码:
https://github.com/zigangzhao-ai/Bilateral-filter