看GAMES202相关课程发现闫老师讲的太好了,所以记录一下。当然文中涉及的PPT也来自闫老师的课程PPT,欢迎交流。
首先这几种都是空域的滤波方式,用于抑制图像中的噪声。它们采用的原理基本都是通过滤波核
K
K
K处理含噪图像
C
~
\widetilde{C}
C
,得到干净的输出图
C
‾
\overline{C}
C。
注释1: 滤波核:在处理图像位于坐标 i 处的值时,需要考虑其周围j个位置的坐标(包含i本身)。这j个相邻位置即为滤波核。
注释2: 图像的边缘一般像素变化大,包含高频信号;图像中连续部分像素间差距小,一般是低频信号。
1、中值滤波
通过使用滤波核的中间值代替当前滤波核正中心i点的值。
2、均值滤波
通过使用滤波核的平均值代替当前滤波核正中心i点的值。
3、高斯滤波
高斯滤波是假设像素j对像素i的权重贡献和两者之间的距离相关。这个权重随距离的分布为高斯函数,所以越近的位置权重越大,越远权重越小。最后将滤波核中所有像素及其对应的权重进行加权和,然后除以总权重进行归一化,得到的结果作为中心像素i的值。
4、双边滤波(Bilateral filtering)
高斯滤波的结果如上。会导致右图所示的高斯模糊,因为它在去噪过程中同时过滤掉了图中边缘部分的高频信息。但我们希望能够保留这部分信息。一个基本的想法就是当像素j对比中心像素i变化较大的时候,说明它们大概率分布在边界的两边,这种情况小计算j时使用更小的权重。这就是双边滤波的思想。对应的公式表达就是:
其中(i,j)表示某坐标A的横纵轴,(k,l)表示坐标B的位置,前一项为正常的高斯项,用于按照距离远近给予不同权重。后一项表示坐标A,B之间像素的差距,当像素间差距较大的时候,值就大,又因为有负号,所以降低权重。
双边滤波的效果如下图所示:
可以看出不再向高斯模糊一样,山峰的尖锐的边缘得到了保持。
5、联合双边滤波(cross/joint bilateral filtering)
从上面可以看出,高斯滤波是引入了距离信息,双边滤波引入了位置距离和颜色距离两种信息,那如果引入更多的特征指导去噪,是否就能得到更好的结果?这就是联合双边滤波。在图形学中对应的就是可以采用G-Buffer中的depth,Normal等信息。
6、Other Things
6.1、衰减不一定使用高斯函数
在考虑衰减的时候,不一定必须采用高斯函数,也可以使用其他的比如指数衰减,cos函数等等。
6.2、大滤波核的加速策略
Sol.1 Separate Passes
如果对2D图像每个像素计算周围坐标,那么会出现很多冗余计算,计算复杂度为NN。因此可以先对图像进行横坐标操作,在对图像进行纵坐标操作。此时计算复杂度为2N。
其原理在于2D的卷积可以转换为两趟一次的卷积操作。
虽然理论上双边滤波及联合双边滤波的核并非一个,所以无法分开实现。但在应用中依旧可以通过这种方法近似实现。
Sol.2 Progressively Growing Sizes
逐渐增加尺寸。通过多趟小卷积来近似大卷积。比如将原始的6464卷积转为多趟55的卷积,但每趟会增加空洞距离,第i趟空洞距离为2^i。所以此时转为5趟5*5的卷积。5趟是因为 2 4 2^4 24覆盖了原始所需要的尺寸为64的卷积。
最后。可能我描述的不好,但是原视频真的很amazing,需要的可以看看啊。