hough变换检测圆原理(定位变换后的面如何变成实体)

Hough变换基本原理Hough变换是由PaulHough于1962年提出的一种检测圆的算法,它的基本思想是将图像从原图像空间变换到参数空间,在参数空间中,使用大多数边界点都满足的某种参数形式作为图像中的曲线的描述,它通过设置累加器对参数进行累积,其峰值对应的点就是所需要的信息。Hough变换最大的优点是对噪声不敏感。对于满足直线方程y=ax+b的某一个点(x0,y0),对应于参数平…

大家好,又见面了,我是你们的朋友全栈君。

Hough变换基本原理

Hough变换是由Paul Hough于1962年提出的一种检测圆的算法,它的基本思想是将图像从原图像空间变换到参数空间,在参数空间中,使用大多数边界点都满足的某种参数形式作为图像中的曲线的描述,它通过设置累加器对参数进行累积,其峰值对应的点就是所需要的信息。

Hough变换最大的优点是对噪声不敏感。

对于满足直线方程y=ax+b的某一个点(x0,y0),对应于参数平面(a,b)上的一条直线b= y0-ax0,而来自于这条直线上的其他数据点也必然对应于参数平面(a,b)上的直线,且相交于特定的参数点(a,b)。

在实际应用中,为了避免垂直直线斜率无穷大的问题,通常采用直线极坐标的方程r=xcosq+ysinq,显然此时参数面变为(rq)面。

直线由两点A(x1,y1)和B(x2,y2)定义(如下图a所示)。

通过点A的所有直线可由方程y1=k x1+q表示,其中kq是表示斜率和截距的一定值,如果我们将kq认为是参数空间的话,此时通过点A的所有直线就可以表示为q= – x1 k + y1 (如图b所示)。

hough变换检测圆原理(定位变换后的面如何变成实体)

同理,通过点B的所有直线可由方程y2=k x2+q表示,在参数空间kq中,通过点B的所有直线就可以表示为q= – x2 k + y2,此时,图b中两条直线的唯一公共交点表示的就是图a中连接A、B两点的直线。

这样,原图像空间中直线上的每一点都可以映射为参数空间kq中的一条直线,我们对参数空间的点进行累计,其峰值就对应图像空间中要确定的直线。

因此,对于Hough变换,有以下对应关系:

  • 图像空间的一条直线在参数空间映射为一个点。
  • 图像空间的一个点映射为参数空间的一条正弦曲线。
  • 图像空间的一条直线上的多个共线点映射为参数空间相交于一点的多条正弦曲线。

Hough变换的具体算法步骤如下:

  • 适当的量化参数空间。
  • 将参数空间的每一个单元看作一个累加器。
  • 初始化累加器为0。
  • 对图像空间的每一点,在其所满足参数方程对应的累加器上加1。
  • 累加器存储的最大值即为对应的图形的参数。

Hough圆检测原理及方法

Hough变换不仅适用于直线检测,还适用于任何形式的f(x,a)=0所表示的图形的检测,其中x 表示坐标向量,a表示系数向量。下边我们对Hough变换检测圆的原理做简要介绍。

对于一个半径为r,圆心为(a,b)的圆,我们将其表示为:

hough变换检测圆原理(定位变换后的面如何变成实体)

此时x=[x,y]T,a=[a,b,r]T,其参数空间为三维。

显然,图像空间上的一点(x,y),在参数空间中对应着一个圆锥,如下图所示。

hough变换检测圆原理(定位变换后的面如何变成实体)

而图像空间的一个圆就对应着这一簇圆锥相交的一个点,这个特定点在参数空间的三维参数一定,就表示一定半径一定圆心坐标的图像空间的那个圆。

上述方法是经典的Hough圆检测方法的原理,它具有精度高,抗干扰能力强等优点,但由于该方法的参数空间为三维,要在三维空间上进行证据累计的话,需要的时间和空间都是庞大的,在实际应用中不适用。

为加快Hough变换检测圆的速度,学者们进行了大量研究,也出现了很多改进的Hough变换检测圆的方法。

如利用图像梯度信息的Hough变换,对圆的标准方程对x求导得到下式:

hough变换检测圆原理(定位变换后的面如何变成实体)

从上式看出,此时的参数空间从半径r,圆心(a,b)三维,变成了只有圆心(a,b)的二维空间,利用这种方法检测圆其计算量明显减少了。

但这种改进的Hough变换检测圆的方法其检测精度并不高,原因在于,此种方法利用了边界斜率。

从本质上讲,边界斜率其实是用曲线在某一点的弦的斜率来代替的,这种情况下,要保证不存在误差,只有在弦长为零的情况。

但在数字图像中,曲线的表现形式是离散的,其在某一点处的斜率指的是此点右向n步斜率或是左向n步斜率。

如果弦长过小了,斜率的量化误差就会增大。

这种方法比较适用于干扰较少的完整圆形目标。

除了上述方法外,还有其他的一些Hough圆检测算法。

如随机Hough变换,它的主要思想是通过在图像空间中随机抽样来降低内存需求与计算时间,具体做法是在图像空间中随机选取不共线的三点映射到参数空间,参数空间的单元集是一个动态链表结构,当参数单元陈列的值到达一定阈值就认为其确定了一个圆,将其作为候选圆,再通告证据累计统计图像空间中落在该候选圆上的点数,若点数大于一定阈值,确认为真实圆。

此种方法有效的降低了计算量和时间消耗,但其也存在一定问题,如无效累积量大,检测效率不高等其检测精度也低于经典的Hough变换。

另外还有王建峰等改进的快速随机Hough变换,其基本思想是,考虑到圆必定在其外接正方形之内,为了减少随机Hough变换的无效累计,可以只对外接正方形之内的像素进行计算,之外的像素可以直接排除,这样大大降低了计算时间。

可以取边缘厚度为一个较小数t,对于任意三点确定对应的参数圆心(a,b)和半径r,边缘点集中的点di(dix,diy),如果有dix >a+r+t或dix <a-r-t或diy >b+r+t或diy <b-r-t,则不必对其进行计算。

通过这种方法就可以排除大量不是候选圆的点,提高了速度。

这种方法的缺点是没有解决好候选圆外接或者内切正方形的边长问题。

通常情况下,影响常规Hough变换的运算速度的因素主要有:参数空间的维数,边缘点的数量,运算的复杂性,参数空间的离散化程度,以及最后的峰值检测等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127628.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Dreamweaver 2020 安装教程

    Dreamweaver 2020 安装教程AdobeDreamweaver,简称“DW”,中文名称”梦想编织者”,是集网页制作和管理网站于一身的所见即所得网页代码编辑器。利用对HTML、CSS、JavaScript等内容的支持,设计人员和开发人员可以在几乎任何地方快速制作和进行网站建设。它第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。受众人群:网页设计师,UI设计师,电商美工,学生及业余爱好者1、所见即所得的强大功能没有一个Web编辑软件能像Dream

    2022年5月29日
    39
  • 支持向量回归-SVR

    支持向量回归-SVR对于一般的回归问题,给定训练样本D={(x1,y1),(x2,y2),…,(xn,yn)},yi€R,我们希望学习到一个f(x)使得,其与y尽可能的接近,w,b是待确定的参数。在这个模型中,只有当发f(x)与y完全相同时,损失才为零,而支持向量回归假设我们能容忍的f(x)与之间最多有ε的偏差,当且仅当f(x)与y的差别绝对值大于ε时,才计算损失,此时相当于以f(x)为中心,构建一个宽度为2ε的

    2022年6月5日
    21
  • PyCharm插件和配置[通俗易懂]

    PyCharm插件和配置[通俗易懂]常用插件TheChineseLanguagePackJetBrains的官方中文插件,能够直接使PyCharm实现中文版。CSVPlugin它可以让CSV各个列之间区别明显,很清晰的显示各种颜色的高亮。RainbowBracketsRainbowBrackets可以让代码块之间清晰的显示出各种颜色,比如括号相同颜色,选中区域代码高亮的功能等,并且支持支持Java,Python,JavaScript,Go,PHP等多种编程语言。SonarLintSonar

    2022年6月24日
    29
  • PL/SQL Developer下载安装及使用[通俗易懂]

    PL/SQL Developer下载安装及使用[通俗易懂]PL/SQLDeveloper下载安装及使用前言PL/SQLDeveloper是什么PL/SQLDeveloper下载PL/SQLDeveloper安装PL/SQLDeveloper使用PL/SQLDeveloper汉化PL/SQLDeveloper修改字体PL/SQLDeveloper编写SQL代码PL/SQLDeveloper连接远程服务器前言古语说的好,工欲善其事必先利其器。在开发中我们乜需要熟悉各种开发工具、数据库集成开发工具、等其他工具的使用。因为笔者在公司所使用的是or

    2022年10月12日
    0
  • Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)

    Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)采用selenium界面抓取信息,需要渲染界面,并且也是单线程操作,效率极低,一晚上只爬去了一个工行的数据。突然想到了分布式爬虫安装Scrapypip版本过于老旧不能使用,需要升级pip版本,输入python-mpipinstall–upgradepip,升级成功安装scrapy命令:pipinstallScrapy因为scrapy框架基于Twisted,所以先要下载其whl包安装地址:http://www.lfd.uci.edu/~gohlke/pythonl..

    2022年6月26日
    22
  • HikariPool-1 – Thread starvation or clock leap detected与Hikari数据源配置

    HikariPool-1 – Thread starvation or clock leap detected与Hikari数据源配置2019-12-0412:10:51.494WARN14480—[l-1housekeeper]com.zaxxer.hikari.pool.HikariPool:HikariPool-1-Threadstarvationorclockleapdetected(housekeeperdelta=7m48s317ms362µs591ns)….

    2022年6月23日
    480

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号