点击我爱计算机视觉标星,更快获取CVML新技术


本文由纯真学者出神入化编译自:

https://ieeexplore.ieee.org/document/5230799/references#references

讲述霍夫(Hough)变换如何被发明的故事。

Hough变换用于检测数字图像中的直线等几何特征,可能是计算机视觉中使用最广泛的程序之一[1-3]。虽然没有人列出计算机视觉中使用任何特定算法或技术的频率,但我们可以通过注意在Google Scholar搜索术语“Hough变换”中返回超过22,000次引用, 来了解其受欢迎程度。这是好几倍于其他经典计算机视觉算子的引用次数,如Sobel算子[3]或Canny边缘检测器[4]。

这种变换来自哪里?你可能会模糊地回忆起它可以追溯到P.V.C的1962年专利,虽然我怀疑很少有读者真正看过这个专利,其标题页如图1所示。如果你这样做,你可能会惊讶地发现今天使用的变换其实并没有在那里描述。实际上,今天的变换不是一下子就被发明的,而是采取了几个步骤。Hough的初步想法与19世纪末数学中一个不起眼的分支的想法相结合,才产生了我们现在所熟悉的正弦变换。

图 1

以前无人知晓的这一历史说明了有时候将非显而易见的相关想法结合起来有多重要。正说明路易斯巴斯德的观察,“机会有利于准备好的思想”,在20世纪和21世纪仍然像19世纪一样恰当

霍夫的定义

1962年的Hough专利是一个简洁的奇迹,只有五页长,包括数字和索赔。更值得注意的是,没有定义任何变换的代数方程。此外,本发明的大多数公开内容,包括三个图中的两个并不是专用于变换,而是专用于使用诸如差分放大器和锯齿波发生器之类的部件来实现本发明的模拟电路的描述。

图 2

该专利描述变换的唯一图形如图2所示,图2显示了三角形中的共线点如何映射到变换平面中的相交线的三个示例。这些交叉点并非偶然:Hough明显地理解了他的几何结构的理论属性,他指出,“如果一个图形中的一系列点位于一条直线上,那么平面中的相应直线变换就会有一个相交。 “

对于Hough本人来说,如何看待点到线变换的想法是一个谜。他一直在寻求,没有成功。但一天晚上下班回家时,他有一个莫名其妙但真正的“aha!”见解:将零维点映射到一维直线 ,通过增加维度似乎使问题更复杂 ,但实际上导致了一个简单的解决方案,可以使用当时的模拟电子元件[6]实现

无论这个想法如何产生,Hough的1962年专利清楚地揭示了一个关键思想,它是当今使用的变换的基础:图像平面中的共线点可以通过将它们映射到在变换中相交的几何结构(对于Hough,直线)来识别。但同样清楚的是,Hough所描述的几何变换和现在为计算机视觉界已经使用了几十年的几何变换差别很大。其实,想真正达到目标还需要几个步骤。

罗森菲尔德的定义

1969年,阿兹里尔·罗森菲尔德(Azriel Rosenfeld)发表了他的计算机视觉基础书籍“计算机图像处理”。在几乎是某章节末尾,他提出了一个“有趣的替代方案,利用点线变换检测直线”[7]。他引用了Hough专利,并且据我所知,第一次以(1)给出的形式定义变换代数,其中(xi,yi)是图像平面中的点,x和y是变换平面的轴:

Y=yi*x+xi   (1)

他指出,如果一组点(xi,yi),i = 1,...,n是共线的,那么很容易证明变换平面中的相应线将全部通过单个点。他还用括号表示,如果点(xi,yi)位于几乎与x轴平行的直线上,那么这些直线几乎是平行的,因此它们的交点移动到无穷大的位置。也许从Hough的建议 “以正确的角度扫描每张图片两次” 中得到暗示,罗森菲尔德建议通过在(1)中交换xi和yi来克服这个困难。罗森菲尔德提出了另外一项建议。他再次注意到,存在许多共线这一现象将在变换空间中产生高值。

罗森菲尔德是如何发现Hough专利的,现在已经无法确定。众所周知,Hough和罗森菲尔德并不熟悉[6]。罗森菲尔德当然是一位了不起的学者,也许他只是自己找到了这项专利。但无论他如何找到它,我们都可以说罗森菲尔德沿着从霍夫的专利到今天使用的变换的路径迈出了一大步:他给出了变换的第一个显式代数形式,他向计算机科学和计算机视觉社区介绍了一个最初呈现为模糊的想法. 阿兹里尔·罗森菲尔德(Azriel Rosenfeld)是计算机图像处理史上的一位高瞻远瞩的人物,他的想法遍及600多篇论文和数十本书。但我怀疑很少有人知道他在将计算机视觉中最重要的算法之一带到现在的形式中所扮演的角色。

图 3

迂回

在模式识别研究的早期阶段,提出了许多替代的数学方法,这些方法早已被遗忘。其中一种方法是基于积分几何[8],这是纯数学的一个分支,研究随机几何事件的概率。首先在18世纪提出的整体几何中的典型问题是布冯的针问题:将针放在由木板制成的地板上并计算针将穿过裂缝的概率。其他经典问题是计算线截取图形的概率并计算圆的随机弦的预期长度。这些学科中的一些研究引起了我的注意。对于积分几何学,现在已经很好地定义了“随意”抛出一条线的概念。这意味着在ρ-θ空间中的矩形上采样均匀分布,该矩形ρ在0-ρmax之间,θ在0和2π之间。对我来说,它可以用来解决斜率和截距的无界值问题。

          发明霍夫变换

在20世纪60年代后期,我与我的同事Richard O. Duda和其他人一起为Shakey开发了一个视觉系统,这是一个由SRI International的人工智能中心创建的移动智能机器人。 Shakey生活在一个室内世界,房间里有几乎像楔子和立方体一样的几何实体。当今的视觉系统提供了噪声边缘检测作为起点,我们试图利用这种噪声输出来建立局部环境模型,并从已知地标的识别中更新机器人的位置。

我正在研究整体几何方法是否可以帮助解决这个问题,同时研究罗森菲尔德的计算机图像处理,看看我是否可以从这个开创性的书中获取任何想法。我对罗森菲尔德对“点线变换”的简要描述很感兴趣,但却被变换空间在理论上无界的尴尬事实所困扰,需要用到前面提到的不优雅的轴反转技巧。

然而最终通过考虑直线的正规形式的ρ和θ的有界值,以及由积分几何学建立的不变性,我提出了一个新的,我认为更令人满意的变换:

ρ=xicosθ+yisinθ   (2)

ρ

从(2)我们可以将图像平面中的点(xi,yi)映射到曲线

图 4

图4示出了x-y图像平面中的三个点,并指示每个点具有通过它的任意大量的线。所有这些都有一条共同的线路吗?在水平截获接近无穷大的过程中,隐含地意识到在变形空间中出现的问题。图5显示了ρ-θ变换空间中的三个正弦曲线,每个正弦曲线对应于图像平面中的单个点。交点处的ρ和θ值定义了穿过三个点的x-y平面中的线。

图 5

这种新变换不会受到与将点映射到直线相关的理论和计算问题的影响。有限图像平面中的点映射到有限变换空间中的正弦曲线,并沿着线图指向相交的正弦曲线,而与线的方向或坐标轴的选择无关

Duda和我在1972年向研究界介绍了新的变换[11]。在那篇论文中,我们将变换方法的计算复杂度与图像平面中所有点对的详尽分析的复杂性进行了比较,获得了简单的结果,我们还引入了变换的扩展,以解决检测高阶分析形状(如圆)的问题。今天教科书和大学课程普遍教授的变革是1972年杜达和我论文中描述的变换。

尾声

可是,我很惊讶那时研究界似乎对我认为的好主意没有反响,但我的注意力已经开始从计算机视觉转移到其他人工智能领域。许多年后,当我注意到1988年的一篇调查文章[12]引用了136篇参考文献时,我又感到惊讶。关于霍夫变换及其变化的研究一直持续到今天,偶尔还出现专门针对霍夫变换的特刊,例如[13]。

最近两个非常不同的例子说明了变换的广泛应用。第一个是粒子追踪(激发了霍夫的专利), 应用程序使用变换版本来检测大型强子对撞机中的μ子轨迹[14]。第二个应用与汽车安全有关:变换用于基于视觉的系统,该系统检测车辆何时离开车道

自引入Hough变换的现代形式以来已经超过35年了,它仍然是计算机视觉工具包中的标准项目。但它的早期历史表明,今天的变化几乎是由“偶然”从几何洞察演变为理论上优雅且计算上有效的程序。

[1] R. O. Duda and P. E. Hart, Pattern Classification and Scene Analysis. New York: Wiley-Interscience, 1973, pp. 335–337.

[2] R. Bradski and A. Kaehler, Learning OpenCV. Sebastopol, CA: O’Reilly, 2008, pp. 153–160.

[3] E. R. Davies, Machine Vision: Theory, Algorithms, Practicalities. San Francisco, CA: Elsevier, 2005, pp. 265–269.

[4] J. A. Canny, “A computational approach to edge detection,” IEEE Trans. Pattern Anal. Machine Intell., vol. 8, no. 6, pp. 679–714, 1986. [5] P. V. C. Hough, “Method and means for recognizing complex patterns,” U.S. Patent 3 069 654, Dec. 18, 1962.

[6] P. V. C. Hough, private communication, Mar. 13, 2009.

[7] A. Rosenfeld, Picture Processing by Computer. New York: Academic, 1969, pp. 335–336.

[8] H. Solomon, Geometric Probability. Philadelphia, PA: Society of Industrial Mathematics, 1987.

[9] A. B. J. Novikoff, “Integral geometry as a tool in pattern recognition,” in Principles of SelfOrganization, Von Foerster and Zopf, Eds. New York, NY: Pergamon, 1962, pp. 347–368.

[10] N. J. Nilsson, The Quest for Artificial Intelligence: A History of Ideas and Achievements. New York: Cambridge Univ. Press, 2010. [11] R. O. Duda and P. E. Hart, “Use of the Hough transformation to detect lines and curves in pictures,” Commun. ACM, vol. 15, no. 1, pp. 11–15, June 1972.

[12] J. Illingworth and J. Kitler, “A survey of the Hough transform,” Comput. Vis., Graph., Image Process. Arch., vol. 44, no. 1, pp. 87–116, 1988.

[13] Real-Time Imaging, vol. 6, no. 2, pp. 77–173, Apr. 2000.

[14] N. Amran and E. Etzion, “Hough transform track reconstruction in the cathode strip chambers in ATLAS,” CERN-THESIS-2008-062, 2008.

[15] K. Mineta, K. Unoura, and T. Ikeda, “Development of a lane mark recognition system for lane keeping assist system,” Honda R & D Rev., vol. 12, no. 1, pp. 101–108, 2000.

加群交流

关注计算机视觉与机器学习技术,欢迎加入52CV群,扫码添加52CV君拉你入群,

(请务必注明:52CV)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:702781905。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

霍夫变换是怎么发明的?相关推荐

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

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

  2. 自动驾驶感知-车道线系列(三)——霍夫变换

    霍夫变换 一.什么是霍夫变换 二.基本原理 1. 用霍夫变换拟合直线 2. 霍夫变换中的难点 三.函数原型 四.应用实例 五.总结 一.什么是霍夫变换 霍夫变换是一种特征检测(feature extr ...

  3. 实战:基于霍夫变换进行线检测

    霍夫变换算法线检测 一.目的 最近,我们发现自己不得不在应用程序中加入文档扫描功能.在做了一些研究之后,我们偶然发现了一篇熊英写的文章,他是Dropbox机器学习团队的成员.该文章介绍了如何Dropb ...

  4. 《OpenCV3编程入门》学习笔记7 图像变换(二 )霍夫变换

    7.2 霍夫变换 7.2.1 概述 1.特征提取技术,运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题 ...

  5. OpenCV+python:霍夫变换与直线检测

    1,霍夫变换 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段). 霍夫变换最简 ...

  6. 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用

    霍夫变换(Hough Transfrom)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍 ...

  7. CS131专题-4:拟合(最小二乘、RANSAC、霍夫变换)

    本专题目的:了解最小二乘.RANSAC.霍夫变换这3个算法的基本原理,能够做到脱口而出,并从零编程实现. 目录 1 前言 2 最小二乘 2.1 基本原理 2.2 求解方法 3 RANSAC 算法 3. ...

  8. OpenCV(十八)霍夫变换(直线、线段与圆检测)

    目录 一.基础理论 1.作用: 2.定义 3.原理 二.直线检测 1.基础理论 1.原理 2.过程 2.HoughLines函数(直线检测) 3.HoughLinesP函数(线段检测) 三.圆检测 1 ...

  9. 超赞网站推荐_字体(更多)超赞-标志性发明

    超赞网站推荐 by Pubudu Dodangoda 通过Pubudu Dodangoda 字体(更多)超赞-标志性发明 (Font (More) Awesome - an iconic invent ...

最新文章

  1. [推荐]Silverlight 2 开发者海报
  2. oracle中的listener.ora和tnsnames.ora
  3. 基于Laravel开发博客应用系列 —— 构建博客后台管理系统
  4. LINUX ulimit命令
  5. 打造最美HTML5 3D机房(MONO哥强势归来,第四季惊艳发布)
  6. 2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!
  7. uniapp中实现每次点击左侧菜单右边区域都从顶部开始
  8. JUnit 5测试中的临时目录
  9. sqlserver垮库查询_Oracle和SQLServer中实现跨库查询
  10. React开发(115):子组件无法处理复杂的数据格式
  11. java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)
  12. php连接Access实例
  13. 检测到无效的异常处理程序例程。_异常控制流(1):异常概述和基本类型
  14. 在linux里如何建立一个快捷方式,连接到另一个目录
  15. Linux根据端口号或者关键字查询进程,重启Tomcat服务脚本优缺点说明
  16. 2017山东省ACM省赛总结(校史首金!!)
  17. python中求根公式_python求根公式
  18. 拼多多回应漏洞:比薅羊毛更快的是“资损200亿”谣言的传播速度
  19. VMware虚拟机安装Windows XP学习教程
  20. 海南楼市泡沫拯救中国经济,90年代上演过一次

热门文章

  1. flexsim物流仿真案例_仓储物流设计-从设计方法到应用参数
  2. php网络学习,网络学习
  3. 作业帮电脑版在线使用_一起作业学生app 手机版免费在线下载
  4. android异步加载视频缩略图,swift-如何将视频URL的缩略图异步加载到tableview列表中...
  5. python怎么运行matlab代码_用python运行matlab代码
  6. mysql查询表的列名主键_Oracle中查看所有的表,用户表,列名,主键,外键
  7. java表单重复提交_JavaWeb防止表单重复提交(转载)
  8. springboot_通过Actuator了解应用程序运行时的内部状况
  9. 0821Servlet基础
  10. UVa 1588 换抵挡装置