课程地址:https://www.bilibili.com/video/BV1nz4y197Qv
课件地址:https://github.com/CV-xueba/A01_cvclass_basic
f f f是图像的矩阵, g g g是卷积核(一个 n × n n \times n n×n的矩阵)。
卷积 f ∗ g f*g f∗g的数学表达式为:
( f ∗ g ) [ m , n ] = ∑ k , l f [ m − k , n − l ] g [ k , l ] (f*g)[m,n] = \sum_{k,l}f[m-k,n-l]g[k,l] (f∗g)[m,n]=k,l∑f[m−k,n−l]g[k,l]
其中m和n是中心点的坐标。
对图像卷积一次的结果,是一个实数
原理:
I是原图,e是脉冲模板(如1所示)
I ∗ e − I ∗ g = I ∗ ( e − g ) I ∗ ( e − g ) + I ∗ e = I ∗ ( 2 e − g ) \begin{gathered} I*e - I*g = I*(e - g) \\ I*(e - g) + I*e = I*(2e - g) \end{gathered} I∗e−I∗g=I∗(e−g)I∗(e−g)+I∗e=I∗(2e−g)
用 1 9 [ 1 1 1 1 1 1 1 1 1 ] \frac{1}{9} \begin{bmatrix} 1 & 1 & 1\\ 1 & 1 & 1\\ 1 & 1 & 1 \end{bmatrix} 91⎣⎡111111111⎦⎤当卷积核去平滑图像会产生“振铃”效果,因为该卷积核将离中心距离不同的点按相同的权重对待(都是1),我们更希望它的权值模板能按照距离的远近处理,这就引入了高斯核(Gaussian Kernel)。
这里我们要求对每个元素加权后归一,即 ∑ g = 1 \sum g = 1 ∑g=1
注意,高斯核是一个对称阵。
使用一个方差为 σ 1 2 \sigma_1^2 σ12的高斯核与图像做卷积,再与一个方差为 σ 2 2 \sigma_2^2 σ22的高斯核再一次卷积,等同于原图像与一个方差为 σ 1 2 + σ 2 2 \sqrt{\sigma_1^2 + \sigma_2^2} σ12+σ22的高斯核做一次 卷积。
G σ ( x , y ) = 1 2 π σ 2 exp − x 2 + y 2 2 σ 2 = ( 1 2 π σ exp − x 2 2 σ 2 ) ( 1 2 π σ exp − y 2 2 σ 2 ) \begin{aligned} G_\sigma(x,y) &= \frac{1}{2 \pi \sigma^2} \exp^{-\frac{x^2 + y^2}{2 \sigma^2}}\\ &=\bigg(\frac{1}{\sqrt{2 \pi \sigma}} \exp^{-\frac{x^2}{2 \sigma^2}}\bigg) \bigg(\frac{1}{\sqrt{2 \pi \sigma}} \exp^{-\frac{y^2}{2 \sigma^2}}\bigg) \end{aligned} Gσ(x,y)=2πσ21exp−2σ2x2+y2=(2πσ1exp−2σ2x2)(2πσ1exp−2σ2y2)
分解的主要应用是加速卷积的过程。
一个 n × n n \times n n×n的图像用 m × m m \times m m×m的核区卷积。暴力解法的时间复杂度: O ( n 2 m 2 ) O(n^2 m^2) O(n2m2)
将高斯核分解后,时间复杂度: O ( n 2 m ) O(n^2 m) O(n2m)
椒盐噪声(Salt-and-pepper)
脉冲噪声(Impulse noise)
高斯噪声(Gaussian noise)
第一行是灰度图分别叠加了不同大小 N ( 0 , σ ) N(0,\sigma) N(0,σ)的高斯分布之后的噪声图像。
第二行和第三行是用不同 σ \sigma σ的高斯核进行滤波的结果。
σ = 1 \sigma = 1 σ=1时,滤波模板的大小是 7 × 7 7 \times 7 7×7(根据 3 σ 3\sigma 3σ法则,左边3右边3加中间1), σ = 2 \sigma = 2 σ=2时,滤波模板大小是 13 × 13 13 \times 13 13×13(左边6右边6加中间1)
可以看到,对于噪声比较小的(例如 σ = 0.05 \sigma = 0.05 σ=0.05),可以用一个小的滤波模板即可将其恢复为原来的灰度图;对于噪声大的,要用大的滤波模板才能恢复。但是大模板会造成边缘更加平滑,使轮廓信号衰减,造成图像“模糊”。
但是对于椒盐噪声,用高斯滤波器却无法得到好的效果。
滤波的效果:对椒盐噪声特别有效。
即使是中值滤波,大模板也会导致图像“模糊”。
数学描述:
f + α ( f − f ∗ g ) = ( 1 + α ) f − α f ∗ g = f ∗ ( ( 1 + α ) e − α g ) \begin{aligned} f + \alpha(f - f*g) &= (1 + \alpha)f - \alpha f*g\\ &= f*((1 + \alpha)e - \alpha g) \end{aligned} f+α(f−f∗g)=(1+α)f−αf∗g=f∗((1+α)e−αg)