在进入正题之前,首先思考一个问题,在下图中,我们如何从散乱的点中寻找到直线?

有多少直线?哪些点属于哪些直线?
如果是找圆形呢?
霍夫变换(Hough Transform)能很好的解决这些问题,要理解霍夫变换,首先要知道霍夫空间,看下图:

可以看到,霍夫空间实际上是参数空间,在上图的变换中,图像空间中的直线的斜率和截距是未知参数,由这两个未知参数构造的空间就是对应的霍夫空间。图像空间中的一条直线,对应霍夫空间中的一点;霍夫空间中的一条直线,对应图像空间中的一点,这就是对偶性,很容易理解。
那么如果图像空间中有两个点呢?看下图:

现在思考一个问题:什么样的直线经过图像空间中的两这个点呢?显然,它是霍夫空间中对应两条线的交点,即具有同样斜率和截距的直线。

这就是我们找到直线的方法,是不是显得有些多余?问题复杂些,极其好用!重新思考文章开头的问题,我们把这些点变换到霍夫空间,看下图(这里只是演示):

并用一些网格来划分霍夫空间:

对于每一个网格,我们对经过该网格的直线数目进行计数(投票),设定一个阈值,票数大于该阈值的网格,我们就认为该网格代表图像空间中的一条直线(阈值大一些,由数目较少的点构成的直线被忽略),见下图:


上图霍夫空间中画圈的网格与图像空间中的直线是对应的。
至此,我们已经对霍夫变换有了一定的认识,现在考虑一个特殊情况:如果直线是垂直于x轴的,即斜率为无限,怎么办?
为了避免出现这个问题,改用极坐标形式:

由直线的斜截式,很容易推出:

于是,有:

x,y是已知的,r和θ的关系显而易见;再根据r和θ构建霍夫参数空间即可。
下面简单分析一下经典霍夫变换的复杂度,霍夫空间的维数是由未知参数的个数确定的,一般来讲,空间复杂度为O(Kn),其中K是单维度的区间划分个数,n是未知参数的个数。
经典的霍夫变换能够解决可解析图形(直线、圆、椭圆,球,等)的识别问题,那么对于不可解析的不规则图形呢?广义霍夫变换能够解决这个问题。
下一篇文章学习广义霍夫变换。

【视觉算法】霍夫变换(Hough Transform)相关推荐

  1. 霍夫变换(hough transform)原理

    计算机视觉中经常需要识别或者定位某些几何图形,比如直线.圆.椭圆,还有其他一些图形.检测直线的霍夫变换提供了在图像中寻找直线的一种算法,是最简单的一种情形,后来发展到检测圆.椭圆.还有一般图形的霍夫变 ...

  2. java 霍夫变换_霍夫变换(Hough Transform)

    霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 我们先看这样一个问题: 设已知一黑白图像上画了一条直线,要求出这 ...

  3. matlab寻找直线_Matlab 霍夫变换 ( Hough Transform) 直线检测

    PS:好久没更新,因为期末到了,拼命复习中.复习久了觉得枯燥,玩玩儿霍夫变换直线检测 霍夫变换的基本原理不难,即便是初中生也很容易理解(至少在直线检测上是这样子的). 霍夫变换直线检测的基本原理:(不 ...

  4. hough变换检测圆周_一文解读经典霍夫变换(Hough Transform)

    引言 本文讲述霍夫变换的一些内容,并加入一些理解性东西,参考了部分博客等相关性内容.希望能对霍夫变换有所了解,也希望看到的人如果发现错误及时帮忙纠正.博主水平有限,还望赐教. 历史和简介 历史 霍夫变 ...

  5. 霍夫(圆)变换(hough Transform/hough cirlce Transform)原理和实现

    一.霍夫(圆)变换的广泛使用和简要历史 霍夫变换是一种特征提取方法,被广泛应用在图像处理和计算机视觉应用中.霍夫变换是用来辨别找出物件中的特征,例如:线条.他的算法流程大致如下,给定一个物件.要辨别的 ...

  6. python 图像变化检测_Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客...

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 33 篇. 基础知识铺垫 霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几 ...

  7. Hough Transform 的算法思想

    1.Hough Transform 的算法思想 在直角坐标系和极坐标系中,点.线是对偶关系. 即直角坐标系中的点是极坐标系中的线,直角坐标系中的线是极坐标系中的点.反之也成立. 如下图所示,想要检测图 ...

  8. Hough Transform 霍夫变换检测直线

    Hough Transform 霍夫变换检测直线 从理论到代码,再从代码到理论 (1)理论之通俗理解: 1.在图像中检测直线的问题,其实质是找到构成直线的所有的像素点.那么问题就是从找到直线,变成找到 ...

  9. 概率霍夫变换(Progressive Probabilistic Hough Transform)原理详解

    概率霍夫变换(Progressive Probabilistic Hough Transform)的原理很简单,如下所述: 1.随机获取边缘图像上的前景点,映射到极坐标系画曲线: 2.当极坐标系里面有 ...

最新文章

  1. 初学python之路-day18
  2. 服务器防渗透(1)--信息收集
  3. 能用计算机解决的问题十个,计算机常见问题及解决方法,计算机十项常见故障...
  4. 文件夹内的文本行数_重温生物信息重要的文本处理命令(实例命令及解释)
  5. 在线JWT Token解析解码
  6. 双系统如何在Centos7中添加GRUB2启动项
  7. 2016届毕业生-毕业设计的相关事项
  8. 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
  9. 备机大地院系项目dataguard archived_log及standby_log
  10. 软件测试学习视频 分享
  11. sap事务代码_SAP财务常用的MM模块事务代码清单
  12. 手心输入法 -无广告不骚扰
  13. html5播放 h.264裸流,[转载]成功在MP4封装的H264视频中提取能播放的裸流
  14. SUNLORDINC顺络电子LTCC产品推广资料
  15. 产品的思维与技术的思维差异
  16. Python常见低级错误/拼写错误
  17. 值此“程序员节”之际,祭奠那位猝死的程序员兄弟
  18. ai怎么让图片任意变形_ai文字怎么随意变形?ai文字变形技巧教程
  19. Dsolve PDE基础
  20. Procmon监控软件使用教程

热门文章

  1. 手机程序电量测试之docker toolbox安装docker
  2. Python 提示框详解(tkinter.messagebox)
  3. 计算机科学的鼻祖,他是现代计算机科学的鼻祖,编程界的上帝
  4. python中的mat什么意思_python mat是什么文件
  5. ARM架构与编程2--ARM架构(基于百问网ARM架构与编程教程视频)
  6. ARM体系结构(1)- 工作模式与工作状态
  7. Arch Linux安装桌面xfce4,archlinux系列--在xfce4桌面上运行konqueror
  8. 2020机械员-通用基础(机械员)考试题库及机械员-通用基础(机械员)操作证考试
  9. 学习元宇宙,不如先了解下数字孪生
  10. githubusercontent.com被墙