【视觉算法】霍夫变换(Hough Transform)
在进入正题之前,首先思考一个问题,在下图中,我们如何从散乱的点中寻找到直线?
有多少直线?哪些点属于哪些直线?
如果是找圆形呢?
霍夫变换(Hough Transform)能很好的解决这些问题,要理解霍夫变换,首先要知道霍夫空间,看下图:
可以看到,霍夫空间实际上是参数空间,在上图的变换中,图像空间中的直线的斜率和截距是未知参数,由这两个未知参数构造的空间就是对应的霍夫空间。图像空间中的一条直线,对应霍夫空间中的一点;霍夫空间中的一条直线,对应图像空间中的一点,这就是对偶性,很容易理解。
那么如果图像空间中有两个点呢?看下图:
现在思考一个问题:什么样的直线经过图像空间中的两这个点呢?显然,它是霍夫空间中对应两条线的交点,即具有同样斜率和截距的直线。
这就是我们找到直线的方法,是不是显得有些多余?问题复杂些,极其好用!重新思考文章开头的问题,我们把这些点变换到霍夫空间,看下图(这里只是演示):
并用一些网格来划分霍夫空间:
对于每一个网格,我们对经过该网格的直线数目进行计数(投票),设定一个阈值,票数大于该阈值的网格,我们就认为该网格代表图像空间中的一条直线(阈值大一些,由数目较少的点构成的直线被忽略),见下图:
上图霍夫空间中画圈的网格与图像空间中的直线是对应的。
至此,我们已经对霍夫变换有了一定的认识,现在考虑一个特殊情况:如果直线是垂直于x轴的,即斜率为无限,怎么办?
为了避免出现这个问题,改用极坐标形式:
由直线的斜截式,很容易推出:
于是,有:
x,y是已知的,r和θ的关系显而易见;再根据r和θ构建霍夫参数空间即可。
下面简单分析一下经典霍夫变换的复杂度,霍夫空间的维数是由未知参数的个数确定的,一般来讲,空间复杂度为O(Kn),其中K是单维度的区间划分个数,n是未知参数的个数。
经典的霍夫变换能够解决可解析图形(直线、圆、椭圆,球,等)的识别问题,那么对于不可解析的不规则图形呢?广义霍夫变换能够解决这个问题。
下一篇文章学习广义霍夫变换。
【视觉算法】霍夫变换(Hough Transform)相关推荐
- 霍夫变换(hough transform)原理
计算机视觉中经常需要识别或者定位某些几何图形,比如直线.圆.椭圆,还有其他一些图形.检测直线的霍夫变换提供了在图像中寻找直线的一种算法,是最简单的一种情形,后来发展到检测圆.椭圆.还有一般图形的霍夫变 ...
- java 霍夫变换_霍夫变换(Hough Transform)
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 我们先看这样一个问题: 设已知一黑白图像上画了一条直线,要求出这 ...
- matlab寻找直线_Matlab 霍夫变换 ( Hough Transform) 直线检测
PS:好久没更新,因为期末到了,拼命复习中.复习久了觉得枯燥,玩玩儿霍夫变换直线检测 霍夫变换的基本原理不难,即便是初中生也很容易理解(至少在直线检测上是这样子的). 霍夫变换直线检测的基本原理:(不 ...
- hough变换检测圆周_一文解读经典霍夫变换(Hough Transform)
引言 本文讲述霍夫变换的一些内容,并加入一些理解性东西,参考了部分博客等相关性内容.希望能对霍夫变换有所了解,也希望看到的人如果发现错误及时帮忙纠正.博主水平有限,还望赐教. 历史和简介 历史 霍夫变 ...
- 霍夫(圆)变换(hough Transform/hough cirlce Transform)原理和实现
一.霍夫(圆)变换的广泛使用和简要历史 霍夫变换是一种特征提取方法,被广泛应用在图像处理和计算机视觉应用中.霍夫变换是用来辨别找出物件中的特征,例如:线条.他的算法流程大致如下,给定一个物件.要辨别的 ...
- python 图像变化检测_Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客...
Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 33 篇. 基础知识铺垫 霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几 ...
- Hough Transform 的算法思想
1.Hough Transform 的算法思想 在直角坐标系和极坐标系中,点.线是对偶关系. 即直角坐标系中的点是极坐标系中的线,直角坐标系中的线是极坐标系中的点.反之也成立. 如下图所示,想要检测图 ...
- Hough Transform 霍夫变换检测直线
Hough Transform 霍夫变换检测直线 从理论到代码,再从代码到理论 (1)理论之通俗理解: 1.在图像中检测直线的问题,其实质是找到构成直线的所有的像素点.那么问题就是从找到直线,变成找到 ...
- 概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解
概率霍夫变换(Progressive Probabilistic Hough Transform)的原理很简单,如下所述: 1.随机获取边缘图像上的前景点,映射到极坐标系画曲线: 2.当极坐标系里面有 ...
最新文章
- 初学python之路-day18
- 服务器防渗透(1)--信息收集
- 能用计算机解决的问题十个,计算机常见问题及解决方法,计算机十项常见故障...
- 文件夹内的文本行数_重温生物信息重要的文本处理命令(实例命令及解释)
- 在线JWT Token解析解码
- 双系统如何在Centos7中添加GRUB2启动项
- 2016届毕业生-毕业设计的相关事项
- 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
- 备机大地院系项目dataguard archived_log及standby_log
- 软件测试学习视频 分享
- sap事务代码_SAP财务常用的MM模块事务代码清单
- 手心输入法 -无广告不骚扰
- html5播放 h.264裸流,[转载]成功在MP4封装的H264视频中提取能播放的裸流
- SUNLORDINC顺络电子LTCC产品推广资料
- 产品的思维与技术的思维差异
- Python常见低级错误/拼写错误
- 值此“程序员节”之际,祭奠那位猝死的程序员兄弟
- ai怎么让图片任意变形_ai文字怎么随意变形?ai文字变形技巧教程
- Dsolve PDE基础
- Procmon监控软件使用教程
热门文章
- 手机程序电量测试之docker toolbox安装docker
- Python 提示框详解(tkinter.messagebox)
- 计算机科学的鼻祖,他是现代计算机科学的鼻祖,编程界的上帝
- python中的mat什么意思_python mat是什么文件
- ARM架构与编程2--ARM架构(基于百问网ARM架构与编程教程视频)
- ARM体系结构(1)- 工作模式与工作状态
- Arch Linux安装桌面xfce4,archlinux系列--在xfce4桌面上运行konqueror
- 2020机械员-通用基础(机械员)考试题库及机械员-通用基础(机械员)操作证考试
- 学习元宇宙,不如先了解下数字孪生
- githubusercontent.com被墙