【数字信号处理】为什么高斯滤波会造成数据收缩

论文

The most popular linear smoothing technique (Gaussian filtering [8], [9], [13]) has the well-known difficulty that it causes shrinkage of the data to which it is applied. For instance, an image smoothed a large number of times using a Gaussian filter will eventually converge to a uniform grey. Similarly, Gaussian smoothing of a circle (i.e., of each coordinate function .r. y independently) produces a smaller circle

[1] J. Oliensis, “Local reproducible smoothing without shrinkage,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 15, no. 3, pp. 307-312, March 1993, doi: 10.1109/34.204914.

这段话指出高斯滤波作为最常用的线性平滑技术,具有一个已知的困难,即会导致应用该滤波器的数据收缩。例如,对图像多次使用高斯滤波器进行平滑,最终会使图像收敛为均匀的灰度。同样地,对一个圆进行高斯平滑(即对每个坐标函数 x x x y y y 分别进行平滑)会产生一个较小的圆。

这段话的理解可以从以下几个方面入手:

  1. 高斯滤波的收缩效应: 高斯滤波的权重分布使得离中心较远的像素对平滑结果的贡献较小。因此,较低的像素值会对平滑结果产生更大的影响,导致图像整体收缩。这是由于高斯滤波器的平滑过程会使周围像素的值趋向于平均值,而较低的像素值在平均过程中会拉低整体数值。

  2. 图像灰度的收敛: 当对图像进行大量次数的高斯平滑时,图像中的细节信息逐渐丢失,像素值趋于均匀的灰度。这是因为高斯滤波器的平滑作用会模糊图像的细节,使得图像中的变化逐渐减少,最终趋于均匀的灰度分布。

  3. 圆的收缩效应: 在二维平面上,将一个圆的每个坐标函数 x x x y y y 分别进行高斯平滑会导致圆的收缩。这是因为高斯滤波器的平滑过程会使圆的边界像素受到周围像素的平均影响,从而使圆的边界逐渐收缩,最终产生一个较小的圆。

总之,这段话强调了高斯滤波的一个缺点,即其平滑过程会导致数据的收缩。这种收缩效应在图像平滑和圆形对象处理中特别显著。了解这一点可以帮助我们在应用高斯滤波器时注意其潜在影响,并在需要保留细节和形状的情况下考虑其他平滑技术或参数调整。

例子1:二维圆的收缩

在二维平面上,将一个圆的每个坐标函数 x和 y分别进行高斯平滑会导致圆的收缩。这是因为高斯滤波器的平滑过程会使圆的边界像素受到周围像素的平均影响,从而使圆的边界逐渐收缩,最终产生一个较小的圆

好的,我们将上述过程代入具体的值进行计算。

假设我们有一个圆的 x 坐标函数 x,其中圆心坐标为 (x_c, y_c) = (0, 0),半径为 r = 1。我们选择一个 3x3 的二维高斯滤波器,其权重矩阵 G 为:

G = 1 16 [ 1 2 1 2 4 2 1 2 1 ] G = \frac{1}{16} \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \\ \end{bmatrix} G=161 121242121

现在我们将 x 与 G 进行卷积。
进行卷积的步骤如下:

将 x 扩展为一个 (n+k-1) x 1 的列向量,其中前 k//2 个元素和后 k//2 个元素填充为 0。这是为了使卷积的结果与原始 x 的长度保持一致。

创建一个空的结果向量 y,长度为 n。

对于结果向量 y 的每个元素 y[i],计算卷积结果:
y [ i ] = ∑ j = 0 k − 1 G [ j ] ⋅ x [ i + j ] y[i] = \sum_{j=0}^{k-1} G[j] \cdot x[i+j] y[i]=j=0k1G[j]x[i+j]

其中 G[j] 是二维高斯滤波器 G 的第 j 行元素,x[i+j] 是 x 的第 (i+j) 个元素。

这样,我们就得到了圆的 x 坐标函数与二维高斯滤波器的卷积结果。

假设 x 的向量表示为 x = [1, 0, -1, 0, 1, 0, -1, 0]^T,共有 8 个元素。

  1. 扩展 x:
    我们将 x 扩展为一个长度为 10 的列向量,前后各填充一个零,得到:

    x = [0, 1, 0, -1, 0, 1, 0, -1, 0, 0]^T

  2. 创建空的结果向量 y:
    我们创建一个长度为 8 的空向量 y。

    y = [0, 0, 0, 0, 0, 0, 0, 0]^T

  3. 计算卷积结果:
    对于结果向量 y 的每个元素 y[i],计算卷积结果:

    • 对于 y[0],计算卷积结果:
      y [ 0 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 0 + j ] = 1 16 ⋅ ( 1 ⋅ 0 + 2 ⋅ 1 + 1 ⋅ 0 ) = 2 16 = 1 8 y[0] = \sum_{j=0}^{2} G[j] \cdot x[0+j] = \frac{1}{16} \cdot (1 \cdot 0 + 2 \cdot 1 + 1 \cdot 0) = \frac{2}{16} = \frac{1}{8} y[0]=j=02G[j]x[0+j]=161(10+21+10)=162=81

    • 对于 y[1],计算卷积结果:
      y [ 1 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 1 + j ] = 1 16 ⋅ ( 1 ⋅ 1 + 2 ⋅ 0 + 1 ⋅ ( − 1 ) ) = 0 16 = 0 y[1] = \sum_{j=0}^{2} G[j] \cdot x[1+j] = \frac{1}{16} \cdot (1 \cdot 1 + 2 \cdot 0 + 1 \cdot (-1)) = \frac{0}{16} = 0 y[1]=j=02G[j]x[1+j]=161(11+20+1(1))=160=0

    • 对于 y[2],计算卷积结果:
      y [ 2 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 2 + j ] = 1 16 ⋅ ( 1 ⋅ 0 + 2 ⋅ ( − 1 ) + 1 ⋅ 0 ) = − 2 16 = − 1 8 y[2] = \sum_{j=0}^{2} G[j] \cdot x[2+j] = \frac{1}{16} \cdot (1 \cdot 0 + 2 \cdot (-1) + 1 \cdot 0) = \frac{-2}{16} = -\frac{1}{8} y[2]=j=02G[j]x[2+j]=161(10+2(1)+10)=162=81

    • 对于 y[3],计算卷积结果:
      y [ 3 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 3 + j ] = 1 16 ⋅ ( 1 ⋅ ( − 1 ) + 2 ⋅ 0 + 1 ⋅ 1 ) = 0 16 = 0 y[3] = \sum_{j=0}^{2} G[j] \cdot x[3+j] = \frac{1}{16} \cdot (1 \cdot (-1) + 2 \cdot 0 + 1 \cdot 1) = \frac{0}{16} = 0 y[3]=j=02G[j]x[3+j]=161(1(1)+20+11)=160=0

    • 对于 y[4],计算卷积结果:
      y [ 4 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 4 + j ] = 1 16 ⋅ ( 1 ⋅ 0 + 2 ⋅ 1 + 1 ⋅ 0 ) = 2 16 = 1 8 y[4] = \sum_{j=0}^{2} G[j] \cdot x[4+j] = \frac{1}{16} \cdot (1 \cdot 0 + 2 \cdot 1 + 1 \cdot 0) = \frac{2}{16} = \frac{1}{8} y[4]=j=02G[j]x[4+j]=161(10+21+10)=162=81

    • 对于 y[5],计算卷积结果:
      y [ 5 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 5 + j ] = 1 16 ⋅ ( 1 ⋅ 1 + 2 ⋅ 0 + 1 ⋅ ( − 1 ) ) = 0 16 = 0 y[5] = \sum_{j=0}^{2} G[j] \cdot x[5+j] = \frac{1}{16} \cdot (1 \cdot 1 + 2 \cdot 0 + 1 \cdot (-1)) = \frac{0}{16} = 0 y[5]=j=02G[j]x[5+j]=161(11+20+1(1))=160=0

    • 对于 y[6],计算卷积结果:
      y [ 6 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 6 + j ] = 1 16 ⋅ ( 1 ⋅ 0 + 2 ⋅ ( − 1 ) + 1 ⋅ 0 ) = − 2 16 = − 1 8 y[6] = \sum_{j=0}^{2} G[j] \cdot x[6+j] = \frac{1}{16} \cdot (1 \cdot 0 + 2 \cdot (-1) + 1 \cdot 0) = \frac{-2}{16} = -\frac{1}{8} y[6]=j=02G[j]x[6+j]=161(10+2(1)+10)=162=81

    • 对于 y[7],计算卷积结果:
      y [ 7 ] = ∑ j = 0 2 G [ j ] ⋅ x [ 7 + j ] = 1 16 ⋅ ( 1 ⋅ ( − 1 ) + 2 ⋅ 0 + 1 ⋅ 1 ) = 0 16 = 0 y[7] = \sum_{j=0}^{2} G[j] \cdot x[7+j] = \frac{1}{16} \cdot (1 \cdot (-1) + 2 \cdot 0 + 1 \cdot 1) = \frac{0}{16} = 0 y[7]=j=02G[j]x[7+j]=161(1(1)+20+11)=160=0

    最终的卷积结果为 y = [1/8, 0, -1/8, 0, 1/8, 0, -1/8, 0]^T。

这样,我们完成了圆的 x 坐标函数与二维高斯滤波器的卷积计算。请注意,由于我们选择的滤波器和输入函数都是简单的示例,因此结果也相对简单。在实际应用中,滤波器和输入函数可能更加复杂,导致卷积结果也更加复杂。

你可能感兴趣的:(数字信号处理,信号处理,计算机视觉,图像处理)