【IPMV】图像处理与机器视觉:Lec10 Edges and Lines

【IPMV】图像处理与机器视觉:Lec10 Edges and Lines

本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记
Lecturer: Rui Fan、Yanchao Dong


Lec0 Course Description

Lec3 Perspective Transformation

Lec7 Image Filtering

Lec8 Image Pyramid

Lec9 Laplace Blending

Lec10 Edges and Lines

Lec11 Keypoint Features and Corners

持续更新中


Edges and Lines

  • Boundaries
  • shadow boundaries
  • Creases

Edge Detection 边缘检测

Edge operators (edge enhancement filters)

边缘像素是在图像强度函数的一阶导数的极值处找到的。

1. 边缘是什么?

边缘就是图像中颜色/亮度突然变化的地方,比如:

  • 物体的轮廓线(比如杯子边缘)
  • 阴影分界线
  • 文字笔画

2. 如何找边缘?——用梯度(Gradient)

Image Gradient 图像梯度

边缘出现在图像亮度变化最大的地方,数学上用梯度表示:

  • ∇ f = G x = [ ∂ f ∂ x ∂ f ∂ y ] \nabla f = G_x = \begin{bmatrix} \frac{\partial f}{\partial x} \\ \\ \frac{\partial f}{\partial y} \\ \end{bmatrix} f=Gx= xfyf
  • 梯度方向:亮度变化最快的方向(垂直于边缘)
  • 梯度大小(幅度):变化有多剧烈
    ∣ ∇ f ∣ = ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 | \nabla f | = \sqrt{ \left( \frac{\partial f}{\partial x} \right)^2 + \left( \frac{\partial f}{\partial y} \right)^2 } ∣∇f=(xf)2+(yf)2

(其实就是计算水平和垂直方向的亮度变化,再合成总变化强度)

Derivative of Gaussian 高斯导数

先对图像用高斯函数模糊(去噪),再求导:
h σ ( u , v ) = 1 2 π σ 2 e − ( u 2 + v 2 2 σ 2 ) h_{\sigma}(u, v) = \frac{1}{2\pi\sigma^2} e^{-(\frac{u^2+v^2}{2\sigma^2})} hσ(u,v)=2πσ21e(2σ2u2+v2)
优点:边缘更平滑,减少噪声干扰。


边缘检测算子(卷积核)

实际计算时,用一个小矩阵(卷积核)扫描图像,模拟求导过程。常见算子:

常见算子Prewitt 算子Sobel 算子(更常用)
水平方向( G x Gₓ Gx:检测垂直边缘(比如竖线) G x = [ − 1 0 1 − 1 0 1 − 1 0 1 ] G_x = \begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix} Gx= 111000111
垂直方向( G γ Gᵧ Gγ:检测水平边缘(比如横线) G y = [ − 1 − 1 − 1 0 0 0 1 1 1 ] G_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix} Gy= 101101101
水平方向( S x Sₓ Sx S x = [ − 1 0 1 − 2 0 2 − 1 0 1 ] S_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} Sx= 121000121
垂直方向( S γ Sᵧ Sγ S y = [ − 1 − 2 − 1 0 0 0 1 2 1 ] S_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} Sy= 101202101
特点简单,但对噪声敏感。权重更大 → 对中心像素更敏感 → 边缘更清晰,噪声影响更小。

求导——Sobel

图像幅值

边缘后处理——Tinning and Thresholding 细化与阈值处理
  • 非极大值抑制 NMS
    • 只保留梯度方向上的局部最大值点,剔除冗余边缘,使边缘变细。
    • 效果:边缘从“粗线”变为“单像素宽”的细线。
  • 阈值处理
    • 设定一个阈值,只保留梯度强度高于该值的边缘点,生成二值化边缘图像。
    • 示例:Sobel算子检测后的图像经过阈值处理,得到清晰的边缘轮廓。

3. Canny边缘检测

最常用

结合高斯模糊、梯度计算、NMS和双阈值,得到清晰、连续的边缘。

步骤

  1. 高斯滤波:先用高斯模糊降噪。
  2. 梯度计算:用Sobel算子计算梯度的强度和方向。
  3. 非极大值抑制:细化边缘。
  4. 双阈值检测
    • 高阈值:保留强边缘(肯定是真的边缘,如物体轮廓)。
    • 低阈值:保留弱边缘(可能是噪声或次要边缘,如阴影或纹理)。
    • 最终边缘 = 强边缘 + 与强边缘相连的弱边缘。
    • 规则:仅保留与强边缘相连的弱边缘,孤立弱边缘视为噪声。

优势

  • 抗噪声能力强。
  • 能检测真实的弱边缘(如模糊边界)。

4. 利用二阶导数: Laplacian & LoG & DoG

前面算子一阶导数

一阶与二阶导数
  • 一阶导数(梯度)
    • f ′ ( x ) f'(x) f(x):检测亮度变化最快的位置(对应边缘)。
    • 问题:对噪声敏感(噪声会导致虚假边缘)。
  • 二阶导数(拉普拉斯)
    • f ′ ′ ( x ) f''(x) f′′(x):检测亮度变化的拐点(边缘处二阶导过零)。
    • 优势:能定位更精细的边缘和角点。
  • 高斯滤波:先对图像平滑(低通滤波),再求导,减少噪声影响。
拉普拉斯算子 vs. LoG vs. DoG
特性拉普拉斯算子高斯-拉普拉斯(LoG)高斯差分(DoG)
数学原理直接计算二阶导数先高斯模糊,再拉普拉斯运算两个不同标准差的高斯模糊图像相减
核心公式 ∇ 2 = ∂ 2 ∂ x 2 + ∂ 2 ∂ y 2 \nabla^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} 2=x22+y22 ∇ 2 ( G σ ∗ f ) \nabla^2 (G_\sigma * f) \quad 2(Gσf) G σ 1 ∗ f − G σ 2 ∗ f (σ₁ > σ₂) G_{\sigma_1} * f - G_{\sigma_2} * f \quad \text{(σ₁ > σ₂)} Gσ1fGσ2fσ₁ > σ₂
离散卷积核3×3核(常用): [ 0 1 0 1 − 4 1 0 1 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} 010141010
5×5核(更精确): 1 6 [ 1 4 1 4 − 20 4 1 4 1 ] \frac{1}{6}\begin{bmatrix} 1 & 4 & 1 \\ 4 & -20 & 4 \\ 1 & 4 & 1 \end{bmatrix} 61 1414204141
抗噪性❌ 极差(噪声会被放大)✅ 强(高斯滤波抑制噪声)⚠️ 中等(依赖高斯参数选择)
计算复杂度⏱️ 低(单次卷积)⏱️ 高(两次卷积:高斯+拉普拉斯)⏱️ 中(两次高斯卷积,可并行)
边缘定位精度✅ 高(无模糊,锐利边缘)✅ 最高(零交叉点精准)⚠️ 中等(近似LoG)
检测目标边缘、角点、细线(二阶导过零点)边缘(零交叉点)边缘(近似零交叉点)
是否需要调参❌ 无参数✅ σ(高斯标准差)需调整 σ 1 σ₁ σ1 σ 2 σ₂ σ2需匹配(通常 σ 1 ≈ 1.6 σ 2 σ₁≈1.6σ₂ σ11.6σ2
适用场景高清晰度图像、角点检测、工业精密测量医学影像、复杂场景边缘提取实时处理(如SIFT特征提取、机器人视觉)
直观比喻裸眼找边缘(清晰但易受干扰)戴降噪眼镜找边缘(精准但耗时)快速对比两副眼镜找边缘(平衡速度与效果)
  • 抗噪性
    • LoG > DoG > 拉普拉斯算子
    • 拉普拉斯算子对噪声敏感,适合无噪环境;LoG通过高斯滤波显著降噪。
  • 计算效率
    • 拉普拉斯算子 > DoG > LoG
    • DoG 是 LoG的快速近似,适合实时系统。
  • 边缘质量
    • LoG > 拉普拉斯算子 ≈ DoG
    • LoG的零交叉检测最精准;拉普拉斯在无噪时边缘锐利,但噪声下失效。
  • 选择
    • 需要抗噪+高精度LoG(如医学影像分析)。
    • 实时性要求高DoG(如自动驾驶车道检测)。
    • 无噪声+简单场景拉普拉斯算子(如工业零件尺寸测量)。


优点

  • 边缘定位更精确。
  • 抗噪声能力显著优于普通拉普拉斯。

4. 直线检测: Hough Transform

霍夫变换是一种从图像中检测几何形状(如直线、圆等)的算法,其核心是通过参数空间投票机制将图像中的边缘点映射为参数空间的累积统计,最终通过寻找峰值确定几何形状的参数。

  • 原理
    • 参数化表示:每条直线可用极坐标参数 ( ρ , θ ) (ρ, θ) (ρ,θ) 表示
      • ρ = x sin ⁡ θ + y cos ⁡ θ \rho = x \sin \theta + y \cos \theta ρ=xsinθ+ycosθ
      • ρ \rho ρ:直线到原点的垂直距离。
      • θ \theta θ:直线与x轴的夹角。
    • 投票机制
      • 每个边缘点对所有可能经过它的直线投票。
      • 投票最多的 ( ρ , θ ) (ρ, θ) (ρ,θ) 就是图像中的直线。
  • 步骤
  1. 检测边缘
    • 先用 Canny 等算法提取图像边缘(得到二值边缘图)
  2. 初始化累加器
    • 创建一个二维数组 ( ρ × θ ) (\rho \times \theta) (ρ×θ),初始值为0。
  3. 投票过程
    • 对每个边缘点 ( x , y ) (x, y) (x,y),遍历所有可能的 θ \theta θ(如0°~180°),计算对应的 ρ \rho ρ,并在累加器中对应位置投票(+1)。
  4. 峰值检测
    • 找到累加器中的局部最大值(即投票数最多的 ( ρ , θ ) (\rho, \theta) (ρ,θ)),这些值即为图像中的直线参数。
  5. 后处理(可选)
    • 对检测到的直线进行拟合优化(如最小二乘法),剔除噪声或合并相近直线。
特性说明
优点对遮挡和噪声鲁棒(部分边缘点缺失仍可检测)
可推广到其他形状(圆、椭圆等)
缺点计算量大(参数空间维度随形状复杂度增加)
需手动设置阈值(如累加器峰值阈值)
时间复杂度 O ( n × m ) O(n \times m) O(n×m) n n n为边缘点数, m m m θ θ θ的离散化数量)

应用场景

  • 车道线检测(自动驾驶)。
  • 文档分析(检测表格线或文字行)。
  • 工业检测(机械零件边缘对齐)。

5. 总结

方法核心思想优点缺点
Sobel/Prewitt一阶导数求梯度计算快噪声敏感
Canny高斯导数+双阈值+NMS抗噪强,边缘完整计算复杂
Laplacian直接二阶导数检测精细特征(如角点)极度敏感噪声
LoG高斯平滑+二阶导数边缘精准,抗噪计算量大
  • 找边缘:用Sobel或Canny(像用铅笔描边)
  • 抗噪声:Canny或LoG(像先涂模糊再描边,避免手抖)
  • 精细边缘:LoG(能检测到更微弱的边缘变化)

霍夫变换(参数化表示+投票机制)进行直线检测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值