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

    文章

    1087

    浏览量

    40500
  • 定位技术
    +关注

    关注

    7

    文章

    290

    浏览量

    25367
  • 2D
    2D
    +关注

    关注

    0

    文章

    66

    浏览量

    15205
  • 累加器
    +关注

    关注

    0

    文章

    50

    浏览量

    9471

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

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

收藏 人收藏

    评论

    相关推荐

    基尔霍夫定律及其应用

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

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

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

    什么是基尔霍夫电压定律

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

    验证基尔霍夫定律

    验证基尔霍夫定律 一、实验目的1. 验证基尔霍夫定律的正确性,加深对基尔霍夫定律的理解。2. 学会用电流
    发表于 09-24 09:28 2.3w次阅读
    验证基尔<b class='flag-5'>霍夫</b>定律

    基尔霍夫定律实验

    基尔霍夫定律实验 一、实验目的?⒈ 验证基尔霍夫定律。?
    发表于 09-24 19:17 3.9w次阅读
    基尔<b class='flag-5'>霍夫</b>定律实验

    基尔霍夫定律与叠加原理

    实验 基尔霍夫定律与叠加原理一.  实验目的 1. 验证基尔霍夫定律的正确性,加深对基尔霍夫定律的理解。
    发表于 11-02 22:20 1.8w次阅读
    基尔<b class='flag-5'>霍夫</b>定律与叠加原理

    基尔霍夫定律

    基尔霍夫定律  基尔霍夫定律是描述威廉希尔官方网站 中电压、电流遵循的最基本的规律。在介绍基尔霍夫定律之前,首先
    发表于 07-27 10:15 1.2w次阅读
    基尔<b class='flag-5'>霍夫</b>定律

    线变换综合示例_《OpenCV3编程入门》书本配套源代码

    《OpenCV3编程入门》书本配套源代码:线变换综合示例
    发表于 06-06 15:39 8次下载

    线变换综合示例_OpenCV3编程入门-源码例程

    OpenCV3编程入门-源码例程全集-线变换综合示例,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 17:02 18次下载

    简述基尔霍夫电流定律_基尔霍夫电流定律公式_基尔霍夫电流定律教案

    基尔霍夫电流定律也称为节点电流定律,于1845年由德国物理学家G.R.基尔霍夫(Gustav Robert Kirchhoff,1824~1887)提出,内容是威廉希尔官方网站 中任一个节点上,在任一时刻,流入节点的电流之和等于流出节点的电流之和。
    发表于 08-15 16:56 2.3w次阅读
    <b class='flag-5'>简述</b>基尔<b class='flag-5'>霍夫</b>电流定律_基尔<b class='flag-5'>霍夫</b>电流定律公式_基尔<b class='flag-5'>霍夫</b>电流定律教案

    基尔霍夫电流定律例题详解_基尔霍夫电压定律例题详解

    1845年,刚从德国哥尼斯堡大学毕业、年仅21对的基尔霍夫在他的第一篇论文中提出了适用于网络状威廉希尔官方网站 计算的两个定律,即著名的基尔霍夫定律。这两个定律分为基尔霍夫第一定律和基尔霍夫第二定律
    发表于 08-15 17:37 25.1w次阅读
    基尔<b class='flag-5'>霍夫</b>电流定律例题详解_基尔<b class='flag-5'>霍夫</b>电压定律例题详解

    基尔霍夫定律简单例题_基尔霍夫定律经典例题

    基尔霍夫第一定律为基尔霍夫电流定律,第二定律为基尔霍夫电压定律。
    发表于 08-15 19:51 13.9w次阅读
    基尔<b class='flag-5'>霍夫</b>定律简单例题_基尔<b class='flag-5'>霍夫</b>定律经典例题

    opencv变换的原理

    变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特征的集合作为
    发表于 12-04 14:39 5720次阅读
    opencv<b class='flag-5'>霍</b><b class='flag-5'>夫</b><b class='flag-5'>变换</b>的原理

    一文解读经典变换(Hough Transform)

    引言 本文讲述变换的一些内容,并加入一些理解性东西,参考了部分博客等相关性内容。希望能对变换
    的头像 发表于 04-22 11:17 1.1w次阅读
    一文解读经典<b class='flag-5'>霍</b><b class='flag-5'>夫</b><b class='flag-5'>变换</b>(Hough Transform)

    基于OpenCV经典变换的一些内容

    本文主要讲述的是变换的一些内容,并加入一些在生活中的应用,希望能对读者对于变换的内容有所
    的头像 发表于 07-06 10:43 1878次阅读