0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

霍夫变换的原理简述

新机器视觉 来源:技术饭 2023-12-19 16:56 次阅读

来源:技术饭

霍夫变换是一种对图像中形状的定位技术,常被用于提取图像中的直线,圆和椭圆等简单形状。霍夫变换运用两个坐标空间之间的变换,将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题。

简单形状指可以用少量参数表示的形状,如,直线可由两个参数表示。霍夫变换的主要优点是它对遮挡不敏感。本文通过一个简单的例子来介绍霍夫变换如何运作的。

霍夫变换检测直线

直线的方程通常表示为:

ccd96894-9e46-11ee-8b88-92fbcf53809c.png

该函数中斜率m可以取介于–∞到+∞之间的值。但对于霍夫变换,参数需要有界。故在霍夫变换中,直线的极形表示为:

cce3352c-9e46-11ee-8b88-92fbcf53809c.png

(方程1)

这里ρ表示直线与原点的垂直距离(以像素为单位),θ是以弧度为单位测量的角度,直线与原点形成的角度,如下图所示:

cceafc1c-9e46-11ee-8b88-92fbcf53809c.png

在理论上,ρ可能取0到+∞之间的值,但因为图片本身是有限的,故ρ也是有界的。

累加器

在2D空间中,每一个(ρ,θ)对应一条线,这个过程也叫做线由ρ和θ参数化。

下图2D阵列被称为累加器,因为我们将使用这个阵列的仓来收集图像中存在哪些线的证据。左上角的单元格对应于a(-R,0),右下角对应于(R,π)。随着收集到更多关于存在具有参数ρ和θ的线的证据,容器内的值(ρ,θ)将增加。

ccfe4b6e-9e46-11ee-8b88-92fbcf53809c.png

检测图像中的线条需要以下几个步骤:

1.初始化累加器

首先需要创建一个累加器数组。累加器中的单元格数量是一个设计决定。假设选择了一个10×10的累加器,意味着ρ只能取10个不同的值,θ可以取10个不相同的值,因此程序可以检测到100种不同的线。累加器的大小也将取决于图像的分辨率。

2.检测边缘

当累加器设置好后,我们需要为累加器的每个单元搜集数据。如果图像中有一条可见线,则边缘检测器应在该线的边界处发射。这些边缘像素为线的存在提供了数据。边缘检测的输出是边缘像素的阵列 [ (x1, y1), (x2, y2) ... (xn, yn)]

3. 按边缘像素进行投票

对于上述阵列中的每个边缘像素(x,y),我们将θ的值从0变为π,并将其代入方程1,以获得ρ的值。在下图中,我们改变三个像素的θ(由三条彩色曲线表示),并使用方程1获得ρ的值。这些曲线在一点相交,这表明参数为θ=1和ρ=9.5的线正在穿过它们。

cd067578-9e46-11ee-8b88-92fbcf53809c.png

我们会得到数百个边缘像素,累加器用于找到由边缘像素生成的所有曲线的交点。

假设我们的蓄能器尺寸为20×20。因此,θ有20个不同的值,因此对于每个边缘像素(x,y),我们可以使用方程1计算20个(ρ,θ)对。与这20个(ρ,θ)值相对应的累加器的bin递增。我们对每个边缘像素都这样做,现在我们有了一个累加器,它拥有关于图像中所有可能线条的所有数据。我们可以简单地选择累加器中高于某个阈值的仓,以找到图像中的线。如果阈值更高,则强线更少,如果阈值更低,就会发现大量的线,包括一些弱线。

在OpenCV中,使用Hough变换的线检测在函数HoughLines和HoughLinesP中实现。此函数包括以下参数:

edges:边缘检测器的输出

line:用于存储线的起点和终点坐标的矢量。

rho:分辨率参数ρ(以像素为单位)

θ:参数θ的分辨率,单位为弧度

threshold:检测直线的最小交点

cd18b9a4-9e46-11ee-8b88-92fbcf53809c.png

cd2e2474-9e46-11ee-8b88-92fbcf53809c.png

结果:

霍夫变换检测圆

在线霍夫变换的情况下,我们要检测圆需要三个参数:(x,y)圆心的坐标,半径。所以圆探测器将需要一个3D累加器,每个参数一个。圆的方程为:

cd6e7a06-9e46-11ee-8b88-92fbcf53809c.png

要检测圆需要以下步骤:

1. 在边缘检测器(Canny)的帮助下找到给定图像中的边缘。

2. 为圆半径的最大值和最小值设置了阈值。

3. 在3D累加器阵列中收集存在具有不同中心和半径的圆的数据。

函数HoughCircles在OpenCV中用于检测图像中的圆。它采用以下参数:

image:输入图像。

method:检测方法。

dp:累加器分辨率与图像分辨率的反比。

mindst:检测到的圆中心之间的最小距离。

param_1和param_2:这些是特定于方法的参数。

min_Radius:待检测圆的最小半径。

max_Radius:要检测的最大半径。

cd7dce48-9e46-11ee-8b88-92fbcf53809c.png

cddeb6e0-9e46-11ee-8b88-92fbcf53809c.png

检测结果如下,其质量很大程度上决定于边缘的质量。

霍夫变换最早于1962年被提出,但随着计算机视觉近年来的飞速发展,这种算法才开始广泛使用。如今,特征提取的需求量越来越大,对于数据进行标记所耗费的时间和精力也极大,而霍夫变换可在复杂的场景中提取特征,应用范围十分广泛。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40041
  • 定位技术
    +关注

    关注

    7

    文章

    260

    浏览量

    25264
  • 2D
    2D
    +关注

    关注

    0

    文章

    58

    浏览量

    15089
  • 累加器
    +关注

    关注

    0

    文章

    50

    浏览量

    9365

原文标题:霍夫变换基础简述

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基尔霍夫定律的验证

    基尔霍夫定律的验证
    发表于 12-03 14:19

    基尔霍夫定律及其应用

    基尔霍夫定律及其应用         一、基尔霍夫电流
    发表于 09-24 12:02

    变换检测圆,用于球体识别,如何标定

    变换检测到圆了,圆心差不多确定了,但是如何标定 啊,我用i=imshow('G:\球门.jpg'),title('标记');x0 =par1, y0 =par2; theta=0:pi/100
    发表于 11-16 00:17

    请问基尔霍夫定律的问题

    请问基尔霍夫能否适用于含有电容、电感等元器件的电路?请看图:对于回路R1、R2、C1和R3、R4、C1,请问这两个回路只适用KVL定律,不适用KCL定律,是吗?请问基尔霍夫定律的适用条件,是不是有什么条件?
    发表于 05-17 06:39

    当支路内有电流源的时候使用基尔霍夫定律

    当支路内有电流源的时候,怎么样得到基尔霍夫等式呢?(使用基尔霍夫第二定律)比如下面这个电路。B回路和C回路种含有电流源。
    发表于 09-25 14:01

    Vlib变换怎么得到直线的一个端点?

    空间可以提取极坐标和直线像素点个数,但是想要画出直线还需要直线的一个端点吧,怎么得出这个端点呢
    发表于 04-13 08:27

    基尔霍夫电路法分析

    1845年,德国物理学家古斯塔·基希(Gustav Kirchhoff)制定了一对或一组规则或法律,以处理电路中电流和能量的守恒。这两个规则通常称为:Kirchhoffs电路定律,其中
    发表于 10-05 11:42

    【正点原子FPGA连载】第十二章基于变换的直线检测实验-领航者ZYNQ之HLS 开发指南

    原子公众号,获取最新资料第十二章基于变换的直线检测实验直线检测是计算机视觉中的重要内容,例如车辆自动驾驶技术中道路边缘的获取,航拍图像中建筑物、机场跑道等直线特征的确定。
    发表于 10-14 16:06

    基尔霍夫的现行定律(KCL)及合并规则分析

    为了确定在电路或电子电路中流动的电流量或大小,我们需要使用某些定律或规则,使我们能够以等式形式记下这些电流。使用的网络方程式是根据基尔霍夫定律的网络方程,当我们处理电路电流时,我们将研究基尔霍夫
    发表于 10-26 07:58

    基尔霍夫的电压定律和能量守恒分析

    古斯塔·基希(Gustav Kirchhoff)的电压定律是我们可用于电路分析的第二个基本定律。他的电压定律指出,对于闭环串联路径,电路中任何闭环周围的所有电压的代数和等于零。这是因为电路回路
    发表于 10-27 08:00

    什么是基尔霍夫电压定律

    什么是基尔霍夫电压定律?基尔霍夫电压定律的内容有哪些?
    发表于 09-30 08:45

    基尔霍夫定律的基本概念有哪些

    基尔霍夫定律的基本概念有哪些?基尔霍夫定律有哪些注意事项?
    发表于 10-08 09:23

    什么是基尔霍夫定律?

    什么是基尔霍夫定律?
    发表于 10-21 08:54

    傅里叶变换简述

    发表于 02-12 14:35 0次下载

    电阻电路的等效变换简述

    发表于 03-30 17:23 0次下载