当前位置: 首页 > news >正文

OpenCV第十讲:图像几何形状识别之霍夫变换

霍夫变换是从图像中识别几何形状的基本方法之一, 主要检测直线或圆

1.霍夫变换概述

霍夫变换是图像处理中一种特征提取技术, 该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果

目前霍夫变换扩展到任意形状物体的识别, 多为圆和椭圆

霍夫变换就是利用两个坐标空间的变换将在一个空间具有相同形状的曲线/直线映射到另一个坐标空间的一个点上形成峰值, 从而把检测任意形状的问题转化为统计峰值问题

在OpenCV中,主要有"霍夫线变换"和"霍夫圆变换"。

2. 霍夫线变换

  • 原理简述

    • 一条直线在极坐标下的表示形式为:

      y = ( − cos ⁡ θ sin ⁡ θ ) x + ( r sin ⁡ θ ) y=\left(-\frac{\cos \theta}{\sin \theta}\right) x+\left(\frac{r}{\sin \theta}\right) y=(sinθcosθ)x+(sinθr)

    化简得: r = x cos ⁡ θ + y sin ⁡ θ r=x \cos \theta+y \sin \theta r=xcosθ+ysinθ

    • 由上式可以看出, 图像上的每一个点都会在(r-theta)平面上的得到一条正弦曲线, 如果两个不同点得到的曲线在(r-theta)平面相交, 说明他们通过同一条直线;

    • 检测(r-theta)平面交于一点的曲线数量,通过设置阈值,定义多少条曲线交于一点,这样就可以认为检测到了一条直线;

  • OpenCV函数

霍夫线变换是一种用来寻找直线的方法, 所以在使用该变换之前, 首先要对图像进行边缘检测(即该变换的输入为单通道边缘图像)。

	/*
	"HoughLines"
		`标准霍夫变换`:(SHT)    
		`多尺度霍夫变换`:(MSHT)
	"HoughLinesP"
		`累计概率霍夫变换`(PPHT) 更为倾向使用。
	*/  

3. 霍夫圆变换

它与霍夫线变换的原理答题类似,只是由二维的点(x, theta) --> 三维的圆心(x, y, r)

其他方面讲述暂略(ps: 由于时间原因,一些在很长时间内不会用到的知识就不去阐述了。。)

相关文章:

  • OpenCV 第十一讲: 重映射、仿射变换、直方图均衡化
  • OpenCV第十二讲:角点检测与亚像素精度
  • OpenCV第十三讲:SURF特征点的检测与匹配详解
  • OpenCV第十四讲: Fast特征点与ORB特征点原理详解
  • DAVIS第一课: 事件相机的工作原理和相关核心功能简介
  • DAVIS第二课:基于事件相机的视觉里程计
  • Rtab-Map学习之rtabmap_ros源代码剖析
  • DAVIS前言:事件相机资料调研
  • DAVIS第三课: 基于事件相机的光流法计算
  • CUDA学习第一天: 基础概念扫盲
  • CUDA学习第二天: GPU核心与SM核心组件
  • DAVIS第四课:基于DAVIS的特征点检测和追踪
  • CUDA学习第三天:Kernel+grid+block关系
  • DAVIS第五课: 基于事件相机的一种几何实时3DSLAM算法
  • ubuntu学习技巧1:容易混淆但又重要的命令
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • [译] React v16.8: 含有Hooks的版本
  • 【译】理解JavaScript:new 关键字
  • 3.7、@ResponseBody 和 @RestController
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • express如何解决request entity too large问题
  • GraphQL学习过程应该是这样的
  • LeetCode18.四数之和 JavaScript
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 电商搜索引擎的架构设计和性能优化
  • 浮动相关
  • 关于springcloud Gateway中的限流
  • 利用DataURL技术在网页上显示图片
  • 盘点那些不知名却常用的 Git 操作
  • 移动端唤起键盘时取消position:fixed定位
  • 用element的upload组件实现多图片上传和压缩
  • 怎么把视频里的音乐提取出来
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (二)Eureka服务搭建,服务注册,服务发现
  • (分布式缓存)Redis持久化
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • *** 2003
  • *1 计算机基础和操作系统基础及几大协议
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net web项目 调用webService
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET开发人员必知的八个网站
  • .net流程开发平台的一些难点(1)
  • .NET值类型变量“活”在哪?
  • .Net中的设计模式——Factory Method模式
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [<死锁专题>]
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [ACTF2020 新生赛]Include