三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测

        从Roberts交叉算子的卷积核可以看出,它实际计算了对角线上元素之间的差值。 

         prewitt算子实际是对整行或整列、或者对角线两侧的像素进行差分计算。

        Sobel算子改进了一下Prewitt算子,增加了权重,中心位置的像素权重为2。

 

        中心权重为4的Laplacian算子,计算的是梯度。权重为9的算子加上了对角线的像素,此时的效果相当于是对得到的梯度值进行了增强(Laplacian锐化模版)。

        下图展示了不同算子对同一副图像进行计算后的结果对比:

                非极大值抑制,可以简单理解为沿着某个方向进行搜索,只保留最大值,目的是找出候选的边缘像素点。 

        双阈值是指有两个值,大于高阈值的标记为强边缘;小于低阈值标记为非边缘,被抑制,如果是两者之间就标记为弱边缘。

        第五步实际是对弱边缘进行进一步处理,找出可能是真实边缘的弱边缘。

         

        直线方程通用式是ax+by+c = 0,除去这三种方式表示直线外,还有法线式表示:

        法线式就是霍夫直线检测所使用的形式,上式中\rho表示的是直线对应的法线。根据正弦和余弦公式,可以得到两个截距a,b和\rho, \theta的关系,代换回截距式可以推导出法线式。

        首先我们来看一些基本概念:

        在图像空间(x,y轴组成的平面)中,将直线上的点x,y称为变量,直线的斜率m和截距b称为参数。

        如果将图像空间切换到参数空间(以m和b为基础坐标系的空间),此时x,y成了参数,m,b是变量(比如已知b求m)。此时图像空间上的一条直线,在参数空间下就变成了一个点。

        回到直线方程的法线式表示中,图像空间中的一条直线,在\rho, \theta的空间中,也是一个点。 

        假设图像空间中有一条直线,直线上有一点(x0,y0),这个点在参数空间中对应是一条曲线(简单理解就是法线式中已知量是 x, y, 需要找到满足方程x_0cos\theta + y_0sin\theta = \rho\rho, \theta,这些\rho, \theta的集合从图形上看是一条曲线)。如果我们在图像空间中已知两点(x1,y1),(x2,y2),则在参数空间中对应两条曲线(下图中r就是\rho):

        有了上面的概念后,我们接着来看霍夫变换检测直线的原理。首先,在图像空间上进行边缘检测(比如Canny边缘检测),得到了边缘信息的图像。取出边缘像素的位置,将其映射到参数空间中,可以得到多条直线。如果边缘像素在同一条直线上,则这些像素在参数空间对应的多条曲线上必定有一个交点。

       如上图所示,图像空间中两个蓝色点、一个橙色点在一条直线上,褐色点不在一条直线上,则对应参数空间中,有三条曲线交于一个公共点,有一条曲线则顶多和某一条直线在某个位置有交点,不会通过前面三条线的公共点。

        下图更为直观地展示了在图像空间中有一系列的点在一条直线上,在参数空间中这些曲线有一个公共的交点。

        下面是一个霍夫直线检测的算法的流程描述(图中的d是\rho):

        实际过程很直白,第一步是初始化H空间(\rho, \theta) 数组,所有元素值初始为0,表示有0条曲线通过该点。

        第二步是对图像空间中的边缘点进行迭代,找到对应曲线经过的H空间坐标,对应坐标的统计数加1。

        第三步是找到H空间中拥有局部最大值的点的坐标,这里可以设置一个阈值,比如程序要求大于20个像素在直线上才算检测到(对应就是H空间中某个元素的值大于20)。

        最后代换\rho, \theta回法线式的直线方程得到图像空间中的直线。 

        关于霍夫直线检测,更详细的内容可以参考如下链接:

霍夫变换直线检测(Line Detection)原理及示例_霍夫变换直线检测原理-CSDN博客文章浏览阅读10w+次,点赞368次,收藏1.1k次。霍夫变换直线检测(Line Detection)原理及示例微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, … 问题或建议,请公众号留言;给定一幅图像(一般为二值图像)中的点集合,如何检测直线?一种解决方法:任选一对点,决定一条线,然后测试所有其他点是否接近这条线,从而得出接近这条特殊线的所有点的子集。该方法比较复杂。另外一种方法便是采用霍夫变换。霍夫变换是图..._霍夫变换直线检测原理https://blog.csdn.net/leonardohaig/article/details/87907462

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

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

相关文章

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

1.7 JS性能优化

从输入url到页面加载完成都做了些什么 输入 URL - 资源定位符 http://www.zhaowa.com - http 协议 域名解析 https://www.zhaowa.com > ip 1. 切HOST? > 浏览器缓存映射、系统、路由、运营商、根服务器 2. 实际的静态文件存放? 大流量 > 多个…

Linux基础1

Linux基础1 Linux基础1学习笔记 ‍ 声明! ​​​学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他…

【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing

文章目录 前言1.关于briefing2.本地部署briefing3.使用briefing4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定briefing公网地址 前言 在这个信息爆炸的时代,视频聊天几乎成了我们日常沟通的标配。但你是否曾在视频会议中感到不安,担心自己的私…

深度学习——优化算法、激活函数、归一化、正则化

文章目录 🌺深度学习面试八股汇总🌺优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…

Thread类及常见方法

目录 一、Thread常见构造方法 二、Thread常见属性 三、Thread常见方法 start() 获取当前线程 中断线程 join() 一、Thread常见构造方法 Thread类是JVM用来管理线程的一个类,每个线程都有唯一一个Thread对象与之对应,JVM会将这些对象组织起来&…

优化时钟网络之时钟抖动

Note:文章内容以Xilinx 7系列FPGA进行讲解 1、什么是时钟抖动 时钟抖动就是时钟周期之间出现的偏差。比如一个时钟周期为10ns的时钟,理想情况下,其上升沿会出现在0ns,10ns,20ns时刻,假设某个上升沿出现的时…

Vector 深度复制记录

有的时候数据得复制过去 有个疑问,自动分配内存吗? 不是估计有变化, 得在看看 指针作为值复制了 … … 挺好,修改原有的值 x86 的 SIM 程序 还有点问题 ; 无法直接绕过硬件错误 。。。 x86 gdb 没有问题 就是运行出现了问题,怎么解决;正常初始化没有问题…

贪心算法day03(最长递增序列问题)

目录 1.最长递增三元子序列 2.最长连续递增序列 1.最长递增三元子序列 题目链接:. - 力扣(LeetCode) 思路:我们只需要设置两个数进行比较就好。设a为nums[0],b 为一个无穷大的数,只要有比a小的数字就赋值…

基于Java Web的传智播客crm企业管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

马斯克万卡集群AI数据中心引发的科技涟漪:智算数据中心挑战与机遇的全景洞察

一、AI 爆发重塑数据中心格局 随着AI 技术的迅猛发展,尤其是大模型的崛起,其对数据中心产生了极为深远的影响。大模型以其数以亿计甚至更多的参数和对海量数据的处理需求,成为了 AI 发展的核心驱动力之一,同时也为数据中心带来了…

机器学习在医疗健康领域的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 机器学习在医疗健康领域的应用 机器学习在医疗健康领域的应用 机器学习在医疗健康领域的应用 引言 机器学习概述 定义与原理 发展…

学法减分交管12123模拟练习小程序源码前端和后端和搭建教程

交管推出个学法减分,每个驾驶员可以把被扣的6分,以看视频答题的形式学习回来,然后答题这个一共二十道题每道题60秒,有好多人不会,用咱们的小程序就可以模拟练习强化练习,还有拍照识别题目找到正确答案&…

AI大模型开发架构设计(18)——基于大模型构建企业知识库案例实战

文章目录 1 LLM 大模型在工作中的实际应用以及局限性LLM 大模型工作中实际应用大模型2点局限性 2 基于大模型和向量数据库的企业级知识库架构剖析向量数据库向量数据库选型知识库文档检索增强(Retrieval Augmented Generation)向量数据库应用技术总体架构向量数据库应用离线索引…

jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试

目录 1.JMeter的组件介绍 2.JMeter介绍和使用方法 3.使用JMeter进行性能测试 4.JMeter如何实现参数化和数据驱动 5.使用JMeter进行分布式测试 6.使用JMeter完成压力测试 7.使用JMeter完成接口测试 下载并安装JMeter:从官方网站(https://jmeter.ap…

Zotero 6.0 安装包及安装教程

Zotero的界面友好,操作简单,对于科研小白来说,是一款非常实用的文献管理软件。它不仅可以帮助用户精确获取、整理、引用文献,而且在学术实践中不可或缺的一环。 安 装 步 骤 压缩包文件,鼠标右击解压得到安装包。 仅用…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

华为大变革?仓颉编程语言会代替ArkTS吗?

在华为鸿蒙生态系统中,编程语言的选择一直是开发者关注的焦点。近期,华为推出了自研的通用编程语言——仓颉编程语言,这引发了关于仓颉是否会取代ArkTS的讨论。本文将从多个角度分析这两种语言的特点、应用场景及未来趋势,探讨仓颉…

随时随地编码:香橙派Zero3上安装Code Server远程开发指南

文章目录 前言1. 添加镜像源2. 部署Code server3. 安装内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在刷了CasaOS轻NAS系统的香橙派Orange Pi Zero3中,使用Docker本地部署Code server,并结合cpolar内网穿透实现远程使用浏览器…

npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系

文章目录 作用示例常用选项示例命令注意事项 1、实战举例**解决方法**1. **锁定唯一的 types/node 版本**2. **清理依赖并重新安装**3. **设置 tsconfig.json 的 types**4. **验证 Promise 类型支持** **总结** npm list types/node 命令用于列出当前项目中 types/node 包及其…