Hough变换圆检测定位

article/2025/9/29 5:29:35

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所示)。

同理,通过点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)的圆,我们将其表示为:

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

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

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

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

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

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

从上式看出,此时的参数空间从半径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变换的运算速度的因素主要有:参数空间的维数,边缘点的数量,运算的复杂性,参数空间的离散化程度,以及最后的峰值检测等。


http://chatgpt.dhexx.cn/article/eOoUxclo.shtml

相关文章

【图像处理——hough变换那些事】

#老板的每一次点赞&#xff0c;都是对小编精神上的支持&#xff0c;愿各位老板一路长虹&#xff0c;学习进步。 点赞点赞&#xff01;&#xff01;&#xff01;&#xff01; #author&#xff1a;yyt time:2023.5.5 #机器学习—图像处理 #本文为小编第一次写文章&#…

基于Hough变换的直线检测(Matlab)

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨无敌三脚猫 来源丨 古月居 1、引言 该程序实现了一些基本的图像处理算法&#xff0c;并将它们组合在一起&#xff0c;构建了一个基于霍夫变换的直线检测器。该程序能够在图像中找到直线段的起始点和结束…

Hough变换原理

霍夫变换在识别方程式已知的曲线是常用的一种方法&#xff0c;本文通过识别直线方程为向导&#xff0c;说明霍夫变换的原理。 话不多说&#xff0c;开始今天的主题&#xff0c;我们处理的对象是二值黑白图像&#xff0c;如下图&#xff1a; 上图是我自绘的五个点&#xff0c;考…

图像处理算法 之 Hough变换

Hough变换 一、标准Hough线变换(SHT)1.1 原理1.2 SHT步骤1.3 缺点 二、渐进概率Hough变换(PPHT)2.1 原理及步骤2.2 缺点 三、Hough圆变换3.1 原理及步骤3.2 缺点 四、实验代码 一、标准Hough线变换(SHT) 1.1 原理 标准Hough变换&#xff08;standard hough transform&#xf…

MATLAB中的Hough变换

下面来介绍一下关于Hough变换的原理及其如何在MATLAB中实现。 Hough变换&#xff1a;Hough变换是一种使用表决原理的参数估计技术。其原理是利用图像空间和Hough参数空间的点&#xff0d;线对偶性&#xff0c;把图像空间中的检测问题转换到参数空间。国内外对Hough变换的研究及…

智能图像分析——Hough变换

一、原理 引用 hough变换利用点、线对偶的思想&#xff0c;把提取图像空间中直线的问题转换成在参数空间/hough空间中计算点的峰值的问题。 在x − y坐标系中&#xff0c;假设有一条直线过点( x0 , y0 )&#xff0c;那么我们可以把这条直线的方程记为 ymxb&#xff08;1&#…

霍夫Hough变换

参考: https://blog.csdn.net/qq_15971883/article/details/80583364 MATLAB帮助文档 Hough变换是一种使用表决方式的参数估计技术,其原理是利用图像空间和Hough参数空间的线-点对偶性,把图像空间中的检测问题转换到参数空间中进行。 利用Hough变换检测直线 记住:直角坐标…

Hough变换及MATLAB示例

前言 在车道线检测中&#xff0c;最小二乘法&#xff0c;Hough变换是车道线模型拟合的传统方法之一&#xff0c;通过一系列离散的点拟合出车道直线&#xff0c;也就是得到基于像素平面坐标系的左车道和右车道直线方程。 Hough变换 Hough变换的基本思想 我们先来看看如何表达…

hough变换算法

VoteNet网络中会用Deep Hough Voting&#xff0c;所以先来学习一下Hough Voting。 正文开始 hough变换算法 1、算法思想 霍夫变换于1962年由Paul Hough 首次提出&#xff0c;后于1972年由Richard Duda和Peter Hart推广使用&#xff0c;经典霍夫变换用来检测图像中的直线&…

Hough 变换

Hough 变换是图像处理中&#xff0c;检测直线最基本&#xff0c;也是应用最广泛的一种传统方法。虽然现在是深度学习大行其道的时代&#xff0c;但是很多传统的算法&#xff0c;依然有其参考的价值所在&#xff0c;至少从数学表达上来看&#xff0c;是更加的简洁&#xff0c;有…

Hough transform(霍夫变换)

主要内容&#xff1a; 1、Hough变换的算法思想 2、直线检测 3、圆、椭圆检测 4、程序实现 一、Hough变换简介 Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性&#xff0c;将原始图像空间的给定的曲线通过曲线表达形式变…

Hough变换

目录 一、Hough变换简介 二、Hough变换的数学理解 1.x-y变量空间至k-b参数空间的变换 2.x-y变量空间至-空间的变换 三、Hough变换应用于线检测&#xff08;MATLAB实现&#xff09; 1.检测步骤 2.使用MATLAB工具箱中的Hough变换函数进行边缘检测 一、Hough变换简介 霍夫变…

图像处理:Hough变换原理分析

目录 一、前言 二、直线函数的形式化表示 2.1 直线被方程表示 2.2 直线被图表表示 2.3 直线的表格表示 三、hough变换的提出 3.1 极坐标表示点和线 四、 hough变换的原理 4.1 极坐标的​编辑表格 4.2 用​编辑平面表示&#xff1a;过任意点P(x,y)做所有射线&#xff0…

Hough变换原理-直线检测

目录 一、简介 二、原理 三、Python代码实现 一、简介 Hough&#xff08;霍夫&#xff09;变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换是将图像坐标空间变换到参数空间&#xff0c;利用点与线的对偶性&#xff0c;将原始图像空间的给定的曲线&#xff08…

YUV444、YUV422、YUV420、YUV420P、YUV420SP、YV12、YU12、NV12、NV21

前言 各种YUV格式多如牛毛啊&#xff0c;刚开始学起来确实很费劲&#xff0c;网上搜索的文章讲的并不是很明白。 各种不同的YUV格式其实只是采样方式和存储方式不同&#xff0c;就这两点&#xff0c;不同的采样方式是为了实现节省内存&#xff0c;不同的存储方式暂时不了解有…

2023-02-24:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,采用YUV420P转YUV420SP的方式。

2023-02-24&#xff1a;请用go语言调用ffmpeg&#xff0c;解码mp4文件并保存为YUV420SP格式文件&#xff0c;采用YUV420P转YUV420SP的方式。 答案2023-02-24&#xff1a; 使用 github.com/moonfdd/ffmpeg-go 库。 解码后就是yuv420p&#xff0c;然后用SwsScale函数转换成yuv…

ffmpeg处理YUV422和YUV420P相互转换

YUV422空间大小计算 YUV422封包width*heightwidth/2*height*2YUYV Y分量width*heightYUYV U分量width/2*heightYUYV V分量width/2*height YUV420空间大小计算 YUV420封包width*heightwidth/2*height/2*2Y分量width*heightU分量width/2*height/2V分量width/2*height/2 extern &…

Android Camera2 YUV420_888 格式详解

Camera2 YUV420_888 官网文档介绍 Android PAI 对 YUV420_888的介绍 &#xff0c;大致意思如下&#xff1a; 它是YCbCr的泛化格式&#xff0c;能够表示任何4:2:0的平面和半平面格式&#xff0c;每个分量用8 bits 表示。带有这种格式的图像使用3个独立的Buffer表示&#xff0c;每…

【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90°-180°-270°-镜像旋转

【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90 一、理论分析&#xff08;以yuv420p_i420格式为例&#xff09;二、顺时针旋转90 代码实现三、顺时针旋转180 代码实现四、旋转90-180-270-镜像旋转&#xff0c;完整代码实现五、运行结果 本文接着前文&#xff1a; …

YUV420->RGB888格式转换的CPP实现

git地址&#xff1a; GitHub - Evayangelion/EYUVConverter: A YUV converter implemented by cpp 上一次学习了YUV各种采样和存储方式的区别&#xff08;YUV知识存档&#xff09; 接下来一起学习一下RGB格式的知识和YUV到RGB的转换方式 RGB色彩模式的分类 RGB的分类相较YUV来说…