【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

持续更新中

文章目录

  • [【IPMV】图像处理与机器视觉:Lec10 Edges and Lines](#【IPMV】图像处理与机器视觉:Lec10 Edges and Lines)
    • [1. 边缘是什么?](#1. 边缘是什么?)
    • [2. 如何找边缘?------用梯度(Gradient)](#2. 如何找边缘?——用梯度(Gradient))
        • [Image Gradient 图像梯度](#Image Gradient 图像梯度)
        • [Derivative of Gaussian 高斯导数](#Derivative of Gaussian 高斯导数)
        • 边缘检测算子(卷积核)
        • [边缘后处理------Tinning and Thresholding 细化与阈值处理](#边缘后处理——Tinning and Thresholding 细化与阈值处理)
    • [3. Canny边缘检测](#3. Canny边缘检测)
    • [4. 利用二阶导数: Laplacian & LoG & DoG](#4. 利用二阶导数: Laplacian & LoG & DoG)
    • [4. 直线检测: Hough Transform](#4. 直线检测: Hough Transform)
    • [5. 总结](#5. 总结)

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= ∂x∂f∂y∂f
  • 梯度方向:亮度变化最快的方向(垂直于边缘)
  • 梯度大小(幅度) :变化有多剧烈
    ∣ ∇ 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∣=(∂x∂f)2+(∂y∂f)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= −1−1−1000111 垂直方向( 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= −101−101−101 水平方向( 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= −1−2−1000121 垂直方向( 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= −101−202−101
特点 简单,但对噪声敏感。 权重更大 → 对中心像素更敏感 → 边缘更清晰,噪声影响更小。

求导------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=∂x2∂2+∂y2∂2 ∇ 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σ1∗f−Gσ2∗f(σ₁ > σ₂)
离散卷积核 3×3核(常用): [ 0 1 0 1 − 4 1 0 1 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} 0101−41010 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 1414−204141
抗噪性 ❌ 极差(噪声会被放大) ✅ 强(高斯滤波抑制噪声) ⚠️ 中等(依赖高斯参数选择)
计算复杂度 ⏱️ 低(单次卷积) ⏱️ 高(两次卷积:高斯+拉普拉斯) ⏱️ 中(两次高斯卷积,可并行)
边缘定位精度 ✅ 高(无模糊,锐利边缘) ✅ 最高(零交叉点精准) ⚠️ 中等(近似LoG)
检测目标 边缘、角点、细线(二阶导过零点) 边缘(零交叉点) 边缘(近似零交叉点)
是否需要调参 ❌ 无参数 ✅ σ(高斯标准差)需调整 ✅ σ 1 σ₁ σ1和 σ 2 σ₂ σ2需匹配(通常 σ 1 ≈ 1.6 σ 2 σ₁≈1.6σ₂ σ1≈1.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(能检测到更微弱的边缘变化)

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

相关推荐
三道杠卷胡1 小时前
【AI News | 20250521】每日AI进展
人工智能·python·计算机视觉·语言模型·aigc
石臻臻的杂货铺2 小时前
微软宣布的五大重要事项|AI日报0520
人工智能·microsoft
汇能感知2 小时前
关于光谱相机的灵敏度
经验分享·笔记·科技
中烟创新2 小时前
安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证
人工智能·安全
兔兔爱学习兔兔爱学习3 小时前
创建Workforce
人工智能·算法
louisliao_19814 小时前
钉钉开发之AI消息和卡片交互开发文档收集
人工智能·钉钉
橙子小哥的代码世界4 小时前
GPT 等decoder系列常见的下游任务
人工智能·gpt·nlp·解释器模式·transformer
KY_chenzhao4 小时前
AI赋能R-Meta分析核心技术:从热点挖掘到高级模型
人工智能·r语言·论文·生态·meta分析·热点
zhangxzq4 小时前
JVM 性能问题排查实战10连击
java·运维·jvm·经验分享·docker