计算机视觉-边缘检测

 一、边缘

1.1 边缘的类型

①实体上的边缘
②深度上的边缘
③符号的边缘
④阴影产生的边缘

不同任务关注的边缘不一样

1.2 提取边缘

        突变-求导(求导也是一种卷积)

        近似,\varepsilon=1(右边的一个值-自己=可以用卷积做)

        该点f(x,y)在x方向上的导数为f(x+1,y)*1 + f(x,y)*(-1),也就是f(x,y)*g(x,y)在卷积区域内求和,卷积区域为1*2,-1与1对应的是g(x,y)。

        对x求导,是y方向左右差异比较大的

        对y求导,是x方向上下差异比较大的

eg:-1、1与原图卷积就是出现左下方的图,(右减左)

1.3 图像的梯度

        梯度方向与边(边缘)垂直

        梯度指向信号方向大的地方

        梯度值\left \| \bigtriangledown f \right \|越大,说明这个点是边缘的可能性就越大

        

eg:

Prewitt:自己左边的值与右边的值相减,衡量自己是不是边缘值

Sobel:先平滑高斯滤波,再边缘提取(对噪声敏感程度更低)

Roberts:M_{x}是检测135度的线,M_{y}是检测45度的线

检测模版与线的方向是垂直的

1.4 噪声的影响

        现实中信号有噪声,求导后找不到梯度的极大值和极小值

        先用高斯核与原图像卷积进行滤波去噪,再求导就能找到极值点了(费时)?

         改进:利用卷积的交换律和结合律,先算高斯核的导数再算与原图像的卷积(高斯偏导模版

        高斯偏导模版(越黑越负)

        x方向求偏导:衡量y方向差异  

        y方向求偏导:衡量x方向差异

1.5 高斯核的参数

        用高斯偏导核卷积图像就可以得到去噪后的边缘图像

        像素代表方差,方差越大,平滑能力越强

        给出标准差就能生成高斯模版(高斯模版只需要σ和窗宽两个量就可以计算出,而窗宽=2σ+1)

1.6 回顾 高斯平滑核和高斯偏导核

高斯平滑核:用来做平滑的,不会有负数,权值和等于1

高斯偏导核:用来提取边缘信息,会有负数,权值和等于0

二、Canny算法

2.1 Canny算法

用x方向的卷积模版计算一次再用y方向的卷积模版计算一次,求和

        一个阈值,减小宽度

2.2 非极大值抑制

        减小线条宽度

        计算梯度大小,剔除掉梯度小的点,选择合适的边缘点

        抑制后图像 

2.3 双门限法

下巴边没有了??怎么办   双门限

高门限:检测出边缘边

低门限:排除噪声(把有连接的找出来)

2.4 算法步骤

1、高斯偏导(考虑到噪声)滤波器:先对图像进行x、y方向滤波

2、衡量每个点的梯度强度,梯度方向(看有没有比它还大的)

3、非最大化抑制(宽边变成细边)

4、定义两个门限

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

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

相关文章

基于SpringBoot的美食烹饪互动平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

通信方式、点对点通信、集合通信

文章目录 传统组网互联大模型组网互联:超高带宽、超低延迟、超高可靠性☆☆☆ AI计算集群互联方式:Die间、片间、集群间Die间:SoC架构转向 Chilplet 异构(多Die)、UCIe标准IO Die & Base Die节点内 NPU 间互联&…

将markdown文件和LaTex公式转为word

通义千问等大模型生成的回答多数是markdown类型的,需要将他们转为Word文件 一 pypandoc 介绍 1. 项目介绍 pypandoc 是一个用于 pandoc 的轻量级 Python 包装器。pandoc 是一个通用的文档转换工具,支持多种格式的文档转换,如 Markdown、HTM…

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

实现数组的扁平化

文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化 1.1 递归 通过循环递归的方式,遍历数组的每一项,如果该项还是一个数组,那么就继续递归遍历&#xff0c…

npm知识

npm 是什么 npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个包(package)(即,代码模块)。来自…

SQL进阶实战技巧:如何分析浏览到下单各步骤转化率及流失用户数?

目录 0 问题描述 1 数据准备 2 问题分析 3 问题拓展 3.1 跳出率计算

【Java】位图 布隆过滤器

位图 初识位图 位图, 实际上就是将二进制位作为哈希表的一个个哈希桶的数据结构, 由于二进制位只能表示 0 和 1, 因此通常用于表示数据是否存在. 如下图所示, 这个位图就用于标识 0 ~ 14 中有什么数字存在 可以看到, 我们这里相当于是把下标作为了 key-value 的一员. 但是这…

PythonStyle MVC 开发框架

在 Python 中,MVC(Model - View - Controller,模型 - 视图 - 控制器)是一种常见的软件设计模式,它将应用程序分为三个主要部分,各自承担不同的职责,以提高代码的可维护性、可扩展性和可测试性。…

python学opencv|读取图像(五十六)使用cv2.GaussianBlur()函数实现图像像素高斯滤波处理

【1】引言 前序学习了均值滤波和中值滤波,对图像的滤波处理有了基础认知,相关文章链接为: python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理-CSDN博客 python学opencv|读取图像(…

Java的类加载过程

类加载就是把类(通常是.class文件的形式)通过类加载器加载到 JVM 中,经过一系列的解析成可用的 class 类 二进制流的来源可能有: 编译后的.class文件 使用ASM、ByteBuddy等字节码生成工具创建的字节码 甚至可以从网络传输得到&a…

如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?

我使用DeepSeek AI和Dexscreener API构建的一个简单的 AI 加密交易机器人实现了这一目标。在本文中,我将逐步指导您如何构建像我一样的机器人。 DeepSeek 最近发布了R1,这是一种先进的 AI 模型。您可以将其视为 ChatGPT 的免费开源版本,但增加…

【Linux系统】信号:再谈OS与内核区、信号捕捉、重入函数与 volatile

再谈操作系统与内核区 1、浅谈虚拟机和操作系统映射于地址空间的作用 我们调用任何函数(无论是库函数还是系统调用),都是在各自进程的地址空间中执行的。无论操作系统如何切换进程,它都能确保访问同一个操作系统实例。换句话说&am…

Windows图形界面(GUI)-QT-C/C++ - QT MDI Area

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 多文档编辑器 2. 多窗口应用程序 3. 多视图应用程序 三、常见样式 1. 子窗口管理 2. 布局管理 四、属性设置 1. 添加子窗口 2. 移除子窗口 3. 设置…

MotionLCM 部署笔记

目录 依赖项 humanml3d: sentence-t5-large 下载数据: 报错:No module named sentence_transformers 继续报错:from transformers.integrations import CodeCarbonCallback 解决方法: 推理相关 GitHub - Dai-W…

蓝桥与力扣刷题(141 环形链表)

题目:给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.29 NumPy+Scikit-learn(sklearn):机器学习基石揭秘

2.29 NumPyScikit-learn:机器学习基石揭秘 目录 #mermaid-svg-46l4lBcsNWrqVkRd {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-46l4lBcsNWrqVkRd .error-icon{fill:#552222;}#mermaid-svg-46l4lBcsNWr…

kubernetes 核心技术-Helm

随着 Kubernetes 的广泛应用,管理和部署应用程序变得越来越复杂。为了简化这一过程,Kubernetes 社区推出了 Helm 工具,它为 Kubernetes 提供了类似于 Linux 软件包管理器的功能。通过 Helm,开发者可以更轻松地打包、配置和部署应用…

VSCode设置内容字体大小

1、打开VSCode软件,点击左下角的“图标”,选择“Setting”。 在命令面板中的Font Size处选择适合自己的字体大小。 2、对比Font Size值为14与20下的字体大小。

SQL NOW() 函数详解

SQL NOW() 函数详解 引言 在SQL数据库中,NOW() 函数是一个常用的日期和时间函数,用于获取当前的时间戳。本文将详细介绍 NOW() 函数的用法、参数、返回值以及在实际应用中的注意事项。 函数概述 NOW() 函数返回当前的日期和时间,格式为 Y…