空间滤波(Spatial Filtering)

383 阅读4分钟

卷积

  • 像素运算符(Pixel operator)

        像素运算符:根据输入像素值计算每个像素位置的输出值。

        g(i,j)=h(f(i,j))g(i,j) = h(f(i,j))

        g: 输出图像        f: 输入图像

  • 伽玛校正(Gamma correction)

        伽玛校正:一种非线性操作,用于对视频或数字图像中的亮度进行编码和解码。

  • 局部运算符(Local operator)

        局部运算符:根据输入像素周围的像素邻域,计算每个像素位置的输出值。

        例子:锐化滤波器(sharpening filter)

  • 线性滤波(Linear filtering)

        线性滤波:其中输出像素的值是输入像素的邻域中的像素值的线性组合。

  • 互相关卷积(Cross-correlation convolution)

互相关:在图像上叠加滤波器

  •  卷积运算符(Convolution operator)

卷积:水平和垂直翻转滤波器

  •  动图演示

滤波器(Filters)

  • 均值(Average)滤波器

    均值滤波器:采用均值卷积核,其所有权重都相等,即将一个区域的像素计算平均值,然后将窗口中计算的平均值设置为锚点上的像素值。

均值卷积核示例

  • Gaussian 滤波器

    Gaussian 滤波器:一种线性低通滤波器,能够有效的抑制噪声,平滑图像。在高斯卷积核中,离中心像素越远的像素拥有较低的权重,而离中心像素越近的像素拥有较高的权重。这意味着高斯卷积核在卷积操作中更注重中心像素的影响,而较远的像素影响较小。

  • Sobel 滤波器

    Sobel 滤波器的主要思想是在边缘位置,图像像素的灰度值变化会很剧烈。在水平边缘上,像素值在垂直方向上的梯度较大,在垂直边缘上,像素值在水平方向上的梯度较大。

当卷积核的设计是垂直时,会加强图像的纵向特征

当卷积核的设计是水平时,会加强图像的横向特征

滤波器运算

  • 线性滤波器的特性 

    • 交换(Commutative)       

      fh=hff * h = h * f

      • 从理论上讲,卷积核(h)和图像(f)的顺序不影响最终结果。
      • 但在实际实现中,许多情况下都关注卷积核和图像的顺序。
    • 结合(Associative)        

      (fh1)h2=f(h1h2)(f*h_1) * h_2 = f * (h_1 * h_2)

      • 这意味着在连续应用多个卷积核时,可以根据情况选择一种更高效的顺序,以提高运算效率。
    • 分配(Distributive over addition)    

      f(h1+h2)=(fh1)+(fh2)f * (h_1 + h_2) = (fh_1) + (fh_2)

      • 这个性质允许我们在处理时将卷积分解为两部分,分别处理后再相加,以简化计算。
    • 数乘可交换性(Multiplication cancels out)

      kfh=fkh=k(fh)kf * h = f * kh = k(f*h)

      • 这表示我们可以在卷积运算之前或之后对卷积核进行缩放(数乘),结果是相同的。

优化图像处理效率

  • 多个滤波器

    如果需要对图像应用多个滤波器,可以将这些滤波器合并成一个单一的滤波器,然后只对图像进行一次滤波操作,这样可以提高计算效率。通过将滤波器组合起来,可以减少多次卷积的计算量,从而在处理图像时节省时间和计算资源。

  • 可分离滤波器

    当我们需要应用一个二维滤波器时,通过将其分解成两个一维滤波器的乘积,可以大幅提高滤波的计算效率。

拆分滤波器的例子

边界处理

在图像处理和卷积操作中,边缘处理是指在对图像进行滤波或卷积操作时,对图像边界上的像素进行处理的方式。因为卷积核通常比图像小,当卷积核滑动到图像边界时,无法完全覆盖卷积核的所有元素,这样会导致边界处的像素无法进行完整的卷积运算。

  • 填充恒定值(Pad with constant value)

    在图像边界外部用指定的常数值填充,以扩展图像尺寸,使卷积核可以完全覆盖图像。常用的常数值包括0或者黑色像素值。

  • 图像环绕(Wrap image)

    将图像在边界处进行环绕处理。当卷积核滑动到图像边缘时,如果超出了图像边界,就从对应的另一侧开始,形成环绕处理。这样处理后,可以实现周期性的特性,适用于周期性图像,例如纹理等。

  • 边界值截断 / 复制(Clamp / replicate the border value)

    用图像边界上最靠近边缘的像素值来填充卷积核无法覆盖的区域。这样处理后,输出图像边缘会保持与输入图像边缘相似的值,适用于平滑处理。

  • 图像反射(Reflect image)

    通过在图像边界处进行镜像复制,使用复制后的像素来填充卷积核无法覆盖的区域。这样处理后,可以在输出图像的边缘处保持一定程度的平滑过渡,适用于边缘检测和特征提取等任务。