【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
    • 1. 边缘是什么?
    • 2. 如何找边缘?——用梯度(Gradient)
        • Image Gradient 图像梯度
        • Derivative of Gaussian 高斯导数
        • 边缘检测算子(卷积核)
        • 边缘后处理——Tinning and Thresholding 细化与阈值处理
    • 3. Canny边缘检测
    • 4. 利用二阶导数: Laplacian & LoG & DoG
        • 一阶与二阶导数
        • 拉普拉斯算子 vs. LoG vs. DoG
    • 4. 直线检测: Hough Transform
    • 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= 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(能检测到更微弱的边缘变化)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/84005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI筑基,新质跃升|英码科技亮相华为广东新质生产力创新峰会,发布大模型一体机新品,助力产业智能化转型

5月15日,以“AI筑基,新质跃升”为主题的华为中国行2025广东新质生产力创新峰会在惠州圆满召开。本次峰会聚焦人工智能、算力基础设施等新ICT技术如何驱动“新质生产力”,共探广东高质量发展新路径。英码科技受邀出席本次峰会,并携…

篇章三 需求分析(二)

目录 1.核心API 2.交换机类型 3.持久化 4.网络通信 5.小结 1.核心API 消息队列服务器(Broker Server),要提供的核心API 1.创建队列(queueDeclare) 此处不使用 Create 这样的术语,而是使用 Declare&…

打造高效数据处理利器:用Python实现Excel文件智能合并工具

有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析。今天,我想分享一个使用Python开发的小工具,它可以帮助我们轻松实现Excel文件的智能合并。C:\pythoncode\new\xlsx_merger.…

StepX-Edit:一个通用图像编辑框架——论文阅读笔记

一. 前言 代码:https://github.com/stepfun-ai/Step1X-Edit 论文:https://arxiv.org/abs/2504.17761 近年来,图像编辑技术发展迅速,GPT- 4o、Gemini2 Flash等前沿多模态模型的推出,展现了图像编辑能力的巨大潜力。 这…

第9.1讲、Tiny Encoder Transformer:极简文本分类与注意力可视化实战

项目简介 本项目实现了一个极简版的 Transformer Encoder 文本分类器,并通过 Streamlit 提供了交互式可视化界面。用户可以输入任意文本,实时查看模型的分类结果及注意力权重热力图,直观理解 Transformer 的内部机制。项目采用 HuggingFace …

【Java】泛型在 Java 中是怎样实现的?

先说结论 , Java 的泛型是伪泛型 , 在运行期间不存在泛型的概念 , 泛型在 Java 中是 编译检查 运行强转 实现的 泛型是指 允许在定义类 , 接口和方法时使用的类型参数 , 使得代码可以在不指定具体类型的情况下操作不同的数据类型 , 从而实现类型安全的代码复用 的语言机制 . …

linux如何查找软连接的实际地址

在Linux系统中,查找软连接(符号链接,即symbolic link)的实际地址可以通过多种方法实现。软连接是一个特殊的文件类型,它包含了一个指向另一个文件或目录的引用。要找到软连接所指向的实际文件或目录,可以使…

Token类型与用途详解:数字身份的安全载体图谱

在现代数字身份体系中,Token如同"数字DNA",以不同形态流转于各类应用场景。根据Okta的最新研究报告,平均每个企业应用使用2.7种不同类型的Token实现身份验证和授权。本文将系统梳理主流Token类型及其应用场景,通过行业典…

火山 RTC 引擎9 ----集成 appkey

一、集成 appkey 1、网易RTC 初始化过程 1)、添加头文件 实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…

详细介绍Qwen3技术报告中提到的模型架构技术

详细介绍Qwen3技术报告中提到的一些主流模型架构技术,并为核心流程配上相关的LaTeX公式。 这些技术都是当前大型语言模型(LLM)领域为了提升模型性能、训练效率、推理速度或稳定性而采用的关键组件。 1. Grouped Query Attention (GQA) - 分组…

光电效应理论与实验 | 从爱因斯坦光量子假说到普朗克常量测定

注:本文为“光电效应”相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排,未整理去重。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 Photoelectric Effect 光电效应 Discussion dilemma Under the…

Visual Studio 2019/2022:当前不会命中断点,还没有为该文档加载任何符号。

1、打开调试的模块窗口,该窗口一定要在调试状态下才会显示。 vs2019打开调试的模块窗口 2、Visual Studio 2019提示未使用调试信息生成二进制文件 未使用调试信息生成二进制文件 3、然后到debug目录下看下确实未生成CoreCms.Net.Web.WebApi.pdb文件。 那下面的…

打破性能瓶颈:用DBB重参数化模块优化YOLOv8检测头

文章目录 引言DBB 重参数化模块简介DBB 的优势 YOLOv8 检测头的结构分析使用 DBB 模块魔改检测头替换策略代码实现改进后的效果预期 实验与验证总结与展望 引言 在目标检测领域,YOLO 系列算法一直以其高效的检测速度和不错的检测精度受到广泛关注。随着版本的不断更…

如何成为更好的自己?

成为更好的自己是一个持续成长的过程,需要结合自我认知、目标规划和行动力。以下是一些具体建议,帮助你逐步提升: 1. 自我觉察:认识自己 反思与复盘:每天花10分钟记录当天的决策、情绪和行为,分析哪些做得…

免费使用GPU的探索笔记

多种有免费时长的平台 https://www.cnblogs.com/java-note/p/18760386 Kaggle免费使用GPU的探索 https://www.kaggle.com/ 注册Kaggle账号 访问Kaggle官网,使用邮箱注册账号。 发现gpu都是灰色的 返回home,右上角的头像点开 验证手机号 再次code-you…

CSS- 4.2 相对定位(position: relative)

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…

如何使用Antv X6使用拖拽布局?

拖拽效果图 拖拽后 布局预览 官方: X6 图编辑引擎 | AntV 安装依赖 # npm npm install antv/x6 --save npm install antv/x6-plugin-dnd --save npm install antv/x6-plugin-export --save需要引入的代码 import { Graph, Shape } from antv/x6; import { Dnd } …

数据库健康监测器(BHM)实战:如何通过 HTML 报告识别潜在问题

在数据库运维中,健康监测是保障系统稳定性与性能的关键环节。通过 HTML 报告,开发者可以直观查看数据库的运行状态、资源使用情况与潜在风险。 本文将围绕 数据库健康监测器(Database Health Monitor, BHM) 的核心功能展开分析,结合 Prometheus + Grafana + MySQL Export…

PCB设计实践(二十四)PCB设计时如何避免EMI

PCB设计中避免电磁干扰(EMI)是一项涉及电路架构、布局布线、材料选择及制造工艺的系统工程。本文从设计原理到工程实践,系统阐述EMI产生机制及综合抑制策略,覆盖高频信号控制、接地优化、屏蔽技术等核心维度,为高密度、…

嵌入式硬件篇---陀螺仪|PID

文章目录 前言1. 硬件准备主控芯片陀螺仪模块电机驱动电源其他2. 硬件连接3. 软件实现步骤(1) MPU6050初始化与数据读取(2) 姿态解算(互补滤波或DMP)(3) PID控制器设计(4) 麦克纳姆轮协同控制4. 主程序逻辑5. 关键优化与调试技巧(1) 传感器校准(2) PID参数整定先调P再调D最后…