文章

03 边缘检测(Edge Detection)

03 边缘检测(Edge Detection)

03 边缘检测(Edge Detection)

一、核心思想:边缘检测 = 卷积运算

边缘检测的本质是通过卷积核(filter / kernel) 对图像进行滑动窗口操作,突出图像中亮度发生剧烈变化的位置——即“边缘”。

  • 图像可视为二维矩阵 $I \in \mathbb{R}^{H \times W}$。
  • 卷积核为小尺寸矩阵(如 $3 \times 3$),记作 $K \in \mathbb{R}^{k \times k}$。
  • 卷积输出(特征图)为:

    \[(I * K)_{i,j} = \sum_{m=0}^{k-1} \sum_{n=0}^{k-1} I_{i+m, j+n} \cdot K_{m,n}\]

注:此处为“有效卷积”(valid convolution),不考虑 padding。


二、垂直与水平边缘检测

1. 垂直边缘检测器(Vertical Edge Detector)

典型卷积核:

\[K_{\text{vert}} = \begin{bmatrix} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1 & 0 & -1 \end{bmatrix}\]
  • 作用:检测图像中从左到右由亮变暗的垂直边缘。
  • 若结果为正(如 +30),表示左侧亮、右侧暗(正边);
  • 若结果为负(如 -30),表示左侧暗、右侧亮(负边)。

✅ 正负号区分了明暗过渡方向。

若不关心方向,可取绝对值:

\[|I * K_{\text{vert}}|\]

2. 水平边缘检测器(Horizontal Edge Detector)

典型卷积核:

\[K_{\text{horiz}} = \begin{bmatrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{bmatrix}\]
  • 作用:检测从上到下由亮变暗的水平边缘。
  • 正响应:上亮下暗;负响应:上暗下亮。

三、经典边缘检测算子(Hand-crafted Filters)

1. Sobel 算子(Sobel Filter)

增强中心行/列权重,提升抗噪能力:

  • 垂直 Sobel:

    \[K_{\text{Sobel, vert}} = \begin{bmatrix} 1 & 0 & -1 \\ 2 & 0 & -2 \\ 1 & 0 & -1 \end{bmatrix}\]
  • 水平 Sobel:

    \[K_{\text{Sobel, horiz}} = \begin{bmatrix} 1 & 2 & 1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{bmatrix}\]

✅ 中心加权 → 对噪声更鲁棒。


2. Scharr 算子(Scharr Filter)

比 Sobel 更精确地逼近梯度导数:

  • 垂直 Scharr:

    \[K_{\text{Scharr, vert}} = \begin{bmatrix} 3 & 0 & -3 \\ 10 & 0 & -10 \\ 3 & 0 & -3 \end{bmatrix}\]
  • 水平 Scharr 可通过对转获得。

✅ 在小尺度下梯度估计更准确。


四、从手工设计到可学习滤波器(Learnable Filters)

关键思想:

不再固定卷积核数值,而是将其视为可训练参数!

  • 将 $3 \times 3$ 卷积核中的 9 个元素视为可学习参数

    \[K = \begin{bmatrix} w_1 & w_2 & w_3 \\ w_4 & w_5 & w_6 \\ w_7 & w_8 & w_9 \end{bmatrix} \quad \text{其中 } w_i \text{ 通过反向传播优化}\]
  • 在深度学习中,这些参数在训练过程中自动调整,以提取对任务最有用的特征(如边缘、纹理、角点等)。

优势:

  • 可检测任意角度的边缘(不仅是 0°、90°,还包括 45°、73° 等);
  • 可学习非传统模式的特征(甚至无明确物理解释的滤波器);
  • 自适应于具体任务(分类、检测、分割等)。

💡 卷积神经网络(CNN)的第一层通常学习到的就是类似 Gabor 或边缘检测器的低级视觉特征。


五、图像尺寸与边缘响应的关系

  • 小图像(如 $6 \times 6$)中,边缘区域占比大,中间可能出现“混合响应”(如 +10 表示部分正边 + 部分负边抵消)。
  • 大图像(如 $1000 \times 1000$)中,边缘区域占比极小,中间过渡带影响可忽略,边缘响应更清晰。

六、总结要点(Key Takeaways)

概念说明
卷积 = 边缘检测基础所有边缘检测本质都是卷积运算
正/负响应区分明暗过渡方向(亮→暗 vs 暗→亮)
垂直 vs 水平滤波器结构互为转置,分别检测不同方向边缘
Sobel / Scharr经典手工设计算子,具抗噪性或高精度
可学习滤波器将卷积核参数化,通过反向传播自动优化
CNN 的第一层通常自动学习出边缘、条纹等低级特征

七、后续内容预告

接下来将学习:

  • Padding(填充):控制输出尺寸,保留边界信息;
  • Stride(步长):控制卷积滑动步幅;
  • 这些是构建卷积神经网络(CNN) 的基础模块。

📌 学习建议:动手实现一个简单的卷积函数,用上述滤波器对灰度图做边缘检测,观察正负响应与图像结构的关系。再尝试用 PyTorch/TensorFlow 定义一个可学习的 $3\times3$ 卷积层,可视化其学到的核——你会发现它很像 Sobel 或 Gabor 滤波器!

本文由作者按照 CC BY 4.0 进行授权