DIA——边缘检测

发布于:2025-04-11 ⋅ 阅读:(31) ⋅ 点赞:(0)

1.边缘

边缘是像素的突变位置。
边缘

2.常见边缘检测算法

通过找到一阶导数的极值点或者二阶导数的过零点来确定边缘像素的位置。边缘检测通常使用算子,即特定的卷积核。通过差分对离散的像素点求导,然后转化成卷积核进行卷积。使用卷积统一涵盖求导,高斯平滑等操作。


2.1Sobel 算子

原理
  • 核心思想:通过计算图像中像素点的水平(X方向)和垂直(Y方向)梯度来检测边缘。
  • 数学基础:使用两个3×3的卷积核分别对图像进行卷积运算,计算梯度。
    • 水平核(检测垂直边缘):
      [-1, 0, 1]
      [-2, 0, 2]
      [-1, 0, 1]
      
    • 垂直核(检测水平边缘):
      [-1, -2, -1]
      [ 0,  0,  0]
      [ 1,  2,  1]
      
  • 梯度计算
    • 水平梯度 ( G_x ) 和垂直梯度 ( G_y ) 通过卷积得到。
    • 总梯度幅值:( G = \sqrt{G_x^2 + G_y^2} ),或近似为 ( |G_x| + |G_y| )。
步骤
  1. 用水平核和垂直核分别对图像卷积。
  2. 计算每个像素的梯度幅值。
  3. 设定阈值,幅值高于阈值的像素标记为边缘。
优缺点
  • 优点:计算简单,速度快,适合实时处理。
  • 缺点:对噪声敏感,边缘较粗,定位精度较低。
应用场景
  • 快速检测图像中的明显边缘,如工业零件轮廓检测。

2.2. Prewitt 算子

原理
  • 与Sobel类似,但卷积核权重不同,更注重边缘方向的均匀性。
  • 水平核
    [-1, 0, 1]
    [-1, 0, 1]
    [-1, 0, 1]
    
  • 垂直核
    [-1, -1, -1]
    [ 0,  0,  0]
    [ 1,  1,  1]
    
  • 梯度计算与Sobel相同。
优缺点
  • 优点:对垂直和水平方向边缘响应更均衡。
  • 缺点:抗噪能力弱,边缘较模糊。
应用场景
  • 需要平衡各方向边缘响应的场景,如简单图像分割。

2.3. Laplacian 算子

原理
  • 核心思想:基于二阶导数检测边缘,直接寻找像素值的突变点(梯度变化率为零的点)。
  • 卷积核(常用的两种):
    • 四邻域核:
      [ 0, -1,  0]
      [-1, 4, -1]
      [ 0, -1,  0]
      
    • 八邻域核(增强对角边缘响应):
      [-1, -1, -1]
      [-1,  8, -1]
      [-1, -1, -1]
      
  • 响应特点
    • 正梯度区域(亮变暗)和负梯度区域(暗变亮)均会产生高响应。
    • 边缘出现在过零点(Zero Crossing)附近。
步骤
  1. 对图像应用Laplacian核进行卷积。
  2. 检测过零点(需配合阈值判断)。
优缺点
  • 优点:能同时检测边缘方向和强度,对孤立点敏感。
  • 缺点:对噪声极度敏感,通常需先进行高斯滤波(如LOG算法,即Laplacian of Gaussian)。
应用场景
  • 结合高斯滤波后用于高精度边缘检测,如医学图像分析。

2.4. Canny 算法

原理

Canny算法是一种多步骤优化的边缘检测方法,综合了抗噪能力与边缘定位精度,是实际应用中的黄金标准。

步骤
  1. 高斯滤波

    • 用高斯核平滑图像,抑制噪声。
    • 高斯核示例(σ=1.4):
      [2, 4, 5, 4, 2]
      [4, 9,12, 9, 4]
      [5,12,15,12, 5]
      [4, 9,12, 9, 4]
      [2, 4, 5, 4, 2]
      
  2. 梯度计算

    • 使用Sobel算子计算水平梯度 G x G_x Gx 和垂直梯度 G y G_y Gy
    • 梯度幅值 G = G x 2 + G y 2 G = \sqrt{G_x^2 + G_y^2} G=Gx2+Gy2 ,方向 θ = arctan ⁡ ( G y / G x ) \theta = \arctan(G_y / G_x) θ=arctan(Gy/Gx)
  3. 非极大值抑制(NMS)

    • 在梯度方向上,仅保留幅值最大的像素点,抑制非极大值,使边缘变细。
  4. 双阈值处理

    • 高阈值( T high T_{\text{high}} Thigh:高于此值的像素为强边缘,直接保留。
    • 低阈值( T low T_{\text{low}} Tlow:介于高低阈值之间的像素为弱边缘,仅当与强边缘连通时才保留。
    • 典型阈值比例: T low = 0.4 × T high T_{\text{low}} = 0.4 \times T_{\text{high}} Tlow=0.4×Thigh,例如 T high = 100 T_{\text{high}}=100 Thigh=100, T low = 40 T_{\text{low}}=40 Tlow=40
  5. 边缘连接

    • 通过形态学操作或连通性分析连接断裂的边缘。
优缺点
  • 优点:抗噪能力强,边缘连续且细。
  • 缺点:计算复杂度高,参数(高低阈值)需手动调整。
应用场景
  • 高精度边缘检测,如自动驾驶中的车道线识别、人脸轮廓提取。

2.5. Roberts 算子

原理
  • 核心思想:基于对角方向的一阶差分检测边缘。
  • 卷积核
    • 对角线核1:
      [1, 0]
      [0, -1]
      
    • 对角线核2:
      [0, 1]
      [-1, 0]
      
  • 梯度计算
    • G = ( G 1 2 + G 2 2 ) G = \sqrt{(G_1^2 + G_2^2)} G=(G12+G22) ,或近似为 ∣ G 1 ∣ + ∣ G 2 ∣ |G_1| + |G_2| G1+G2
优缺点
  • 优点:计算极快,适合资源受限场景。
  • 缺点:对噪声敏感,仅检测对角边缘。
应用场景
  • 简单实时系统,如嵌入式设备中的快速边缘检测。

算法对比总结

算法 抗噪能力 边缘粗细 计算速度 适用场景
Sobel 较粗 实时处理、工业检测
Prewitt 较粗 平衡各方向边缘
Laplacian 极弱 中等 高精度边缘(需滤波后)
Canny 高精度复杂场景
Roberts 极弱 极快 简单实时系统

实际应用建议

  1. 实时性要求高:选择Sobel或Roberts。
  2. 抗噪与精度平衡:优先使用Canny。
  3. 简单场景:尝试Laplacian结合高斯滤波(LOG算法)。