Monocular Model-Based 3D Tracking of Rigid Objects:2005年综述

news2024/12/23 9:10:10

1 Introduction

在视频序列中跟踪一个物体意味着在物体或摄像机移动时,持续识别其位置。根据物体类型、物体和摄像机的自由度以及目标应用的不同,有多种方法可供选择。二维跟踪通常旨在跟踪物体或物体部分的图像投影,这些物体的三维位移会导致可以建模为二维变换的运动。为处理由于透视效应或变形引起的外观变化,需要一个自适应模型。它可以提供物体图像位置,表示为其质心和尺度或仿射变换 [141, 26, 62]。或者,可以使用更复杂的模型,例如样条 [16]、可变形模板 [142]、二维可变形网格 [112] 或二维关节模型 [20]。然而,这些方法都不涉及恢复实际的空间位置。

相比之下,三维跟踪旨在持续恢复定义相对于场景的摄像机位置和方向的全部六个自由度,或等效地,恢复相对于摄像机的物体的三维位移。

1.1 本综述的关注点与结构

3D跟踪文献特别庞大,这不仅是因为目标应用几乎有多少种方法就有多少种,而且因为解决同一问题的不同方法也是可能的。在这里,我们专注于使用单个摄像机的在线基于模型的3D跟踪。我们将描述用于摄像机、场景和物体3D跟踪的基于标记的技术和无标记的自然特征方法。

特别是,我们不会考虑用于摄像机轨迹恢复的批处理方法:因为这些方法可以将图像序列作为一个整体来考虑,它们可以依赖不适用于在线摄像机跟踪的非因果策略。此外,已有一本非常出色的参考书【54】。我们将仅限于单摄像机方法,因为多摄像机系统需要校准立体装置,因此不太受欢迎。我们只会考虑刚性物体或场景,而不是变形物体【25, 89】或关节物体(如人体)【43, 121】,这些会使我们偏离主题。

我们将首先介绍3D跟踪所需的关键数学工具。然后,我们将介绍使用点基准或平面标记来简化跟踪任务的基于标记的技术。接下来,我们将重点介绍依赖自然特征的技术。最后,我们将讨论旨在通过在每个帧中分别进行检测来代替帧间跟踪以提高跟踪对目标物体消失和重新出现的鲁棒性的最新进展。

1.2 不同应用的不同方法

3D跟踪在许多不同领域中都是非常有用的工具,下面我们简要回顾其中的一些领域。

1.2.1 增强现实应用

已经探索了许多潜在的增强现实(AR)应用,如医疗可视化、维护和修理、注释、娱乐、飞机导航和目标定位。这些应用都涉及将计算机生成的图像叠加在真实场景上,这必须在在线系统中以帧速率完成。因此,3D实时跟踪是大多数AR应用的关键组件。真实世界和虚拟世界中的物体必须相互正确对齐,并且系统延迟也应该很低,否则两者共存的幻觉将会被破坏。

1.2.2 视觉伺服

视觉伺服涉及使用一个或多个摄像机和计算机视觉系统来控制设备(如机器人臂)相对于它要操纵的部分的位置,这需要检测、跟踪、伺服和抓取。因此,它涵盖了计算机视觉、机器人学、运动学、动力学、控制和实时系统,并且被用于各种丰富的应用中,如汽车车道跟踪、移动平台导航和通用物体操纵。

跟踪信息用于测量机器人当前位置与其参考或期望位置之间的误差。因此,跟踪算法必须是鲁棒的、准确的、快速的和通用的。

1.2.3 人机界面

3D跟踪可以集成到人机界面中。例如,它可以用于连续更新手持物体的位置,随后该物体将作为3D指针。这种物体将成为所谓的“有形界面”的实例。这类界面的目标是通过允许用户操作熟悉的物体来表达他们的愿望,从而利用他们的日常经验来取代传统界面。

最终,这有望带来更自然和直观的界面。在这种情况下,基于视觉的跟踪是与物理物体无缝交互的适当技术。

1.3 基于计算机视觉的3D跟踪

除了视觉技术之外,还有许多其他技术被尝试用于实现3D跟踪,但它们都有各自的弱点:机械跟踪器虽然足够准确,但它们将用户限制在一个有限的工作空间内。磁跟踪器容易受到环境中金属的干扰,这种情况很常见,并且限制了位移范围。超声波跟踪器容易受到噪声影响,并且由于环境温度的变化,在远距离时通常不准确。惯性跟踪器则会随时间漂移。

相比之下,视觉有可能提供非侵入性、准确且低成本的解决方案,前提是愿意投入足够的努力来开发足够鲁棒的算法。在某些情况下,可以接受在场景或目标物体上添加LED或特殊标记等基准点,以简化注册任务,如将在第3节讨论的那样。当然,这假设了一个或多个基准点始终可见,否则注册将失败。此外,并非总是能够放置基准点。例如,增强现实的最终用户不喜欢它们,因为它们在场景中可见,并且在应用程序运行之前不总是可能修改环境。

因此,更可取的是依赖自然存在的特征,如边缘、角点或纹理。当然,这使得跟踪更加困难:寻找和跟随特征点或边缘可能很困难,因为在许多典型物体上它们数量太少。被跟踪物体的完全或部分遮挡通常会导致跟踪失败。摄像机移动过快会导致图像模糊;拍摄期间的光照可能显著变化;反射和镜面反射可能会混淆跟踪器。更重要的是,物体可能由于位移而迅速改变其外观。例如,当摄像机拍摄一栋建筑并绕过拐角时,一面墙会消失,另一面墙会出现。在这种情况下,必须跟踪的特征总是在变化,跟踪器必须处理不断进入和离开视野的特征。第4节和第5节将集中讨论这些难题的解决方案。

2 Mathematical Tools

 讲了投影变换、内外参,欧拉角、四元数等,指数映射、估计外参矩阵、DLT、PnP、LSM、鲁棒性核、Ransac、贝叶斯跟踪、EKF、粒子滤波。

详见文献,此处略。

3 Fiducial-Based Tracking

基于视觉的3D跟踪可以分解为两个主要步骤:首先是图像处理,从图像中提取信息;其次是姿态估计本身。在场景中添加基准点(也称为地标或标记)对这两个步骤都有很大帮助:它们构成了易于提取的图像特征,并为姿态估计提供了可靠、易于利用的测量数据。

在这里,我们区分两种类型的基准点。第一种类型我们称之为“点基准点”,因为这种类型的每个基准点在场景和图像之间提供一个点对应关系。为了从每个基准点获得更多信息,可以将其转换为具有可识别角点的平面形状,我们将其称为“平面基准点”:单个平面基准点提供定义坐标系所需的所有六个空间约束。

3.1 Point Fiducials

多年来,近景摄影测量师一直使用基准点。基准点可以设计成容易检测和识别的方式,并且它们的图像位置可以比自然特征更高精度地测量。特别是,圆形基准点效果最好,因为圆形图案在透视变形下相对不变,其中心可以稳定地提供易于以亚像素精度确定的2D位置。假设基准点在世界坐标系中的3D位置是精确已知的:这可以通过手动、激光或结构光方法来实现。为了便于识别,基准点可以布置成独特的几何图案。一旦在图像中识别出基准点,就可以提供一组对应关系 Mi​↔mi​,并可以应用类似于我们在2.3小节中描述的技术来检索摄像机姿态。

对于高端应用,如近景摄影测量师所发现的,基准点位置应仔细估计。特别是,应该有均匀的照明和强烈的前景-背景对比度。大多数专业解决方案使用由反光材料制成的圆形或球形基准点,以及配备环形闪光灯或其他对称照明的摄像机。图像曝光以消除背景,使基准点由于高对比度而能自动检测。然后更容易以亚像素精度估计其重心。目标在图像中至少应有4-5个像素,并且其直径至少是前景直径的3倍。较大的目标提供类似但不会更好的结果。应避免所有形式的饱和、溢出和摄像机非线性,以及试图使图像看起来更清晰的电子设备。在这些条件下,可以轻松实现1/10像素的精度,经过仔细和使用高质量摄影测量相机,可以实现1/100像素的精度。对于高端结果,这些要求不是多余的。例如,在AR应用中,振幅仅为1/10像素的抖动是很容易被注意到的。公司如Geodetic Services, Advanced Real-time Tracking, Metronor, ViconPeak和AICON 3D Systems都提出了基于这种方法的商业产品。

低成本和低精度的解决方案也被计算机视觉社区提出。例如,同心对比圆(CCC)基准点[56]是通过在白色背景上放置一个黑色环(或相反)形成的。检测这些基准点时,首先对图像进行阈值处理,然后进行形态学操作以消除过小的区域,最后进行连通组件标记操作以找到白色和黑色区域及其重心。在[56]中,四个CCC被放置在一个平面的矩形图案中,并在矩形的一侧添加第五个CCC以消除歧义。可以通过测试每组三个点的共线性来找到三个共线的CCC。

[123]使用颜色编码的基准点以提高识别可靠性。每个基准点由一个内点和一个外环组成,使用四种不同颜色,因此可以基于其两种颜色创建并识别出12个唯一的基准点。在跟踪过程中引入了一些启发式方法:基准点应保持接近其预测位置;如果外部和内部区域的重心不够接近,则基准点可能部分被遮挡,不计入姿态计算。

由于跟踪范围受输入图像中基准点可检测性的限制,[23]引入了使用多种尺寸基准点的系统。这些基准点由几个彩色同心圆环组成,其中较大基准点比较小基准点有更多的环,并且环的直径与基准点中心的距离成比例,以便于识别。当摄像机靠近基准点时,仅检测到小尺寸的基准点;当距离较远时,仅检测到大尺寸的基准点。

前述的提取方法涉及对图像进行阈值处理,通常在不同的照明条件下无法使用而不调整它们。为了处理可变照明,[23]使用了一种基于规则的方法,将颜色相似的样本分组,这些样本可能都属于同一个基准点。[98]使用同态图像处理,该处理旨在消除非均匀照明的影响。阈值操作不是在图像本身上进行,而是在图像的对数梯度上进行。这允许在非常非均匀照明(包括溢出效应)的情况下也能稳健地检测基准点。

为了扩展唯一可识别的基准点数量,[98]在传统的外环和内环之间添加“数据环”。这些附加环由黑色或白色的扇形组成,可以作为条形码来编码基准点索引。通过这种设计,可以有多达 3×2153×215 个不同的基准点。

虽然之前所有基准点检测的方法都使用了特定的方法,[24]则使用了机器学习方法,显著提高了可靠性。基准点由白色背景上的黑色圆盘组成,收集在不同透视、尺度和照明条件下的样本基准点图像,以及负面训练图像。然后在这些数据上训练分类器级联:第一步是快速的贝叶斯决策规则分类,第二步是在第一阶段通过的子集上进行的更强大但较慢的最近邻分类器。在运行时,使用这个级联对图像中的所有可能子窗口进行分类。这导致了一种非常可靠的基准点检测方法。

3.2 平面基准点

前述的基准点都是圆形的,并且仅使用它们的中心。相比之下,[71]介绍了黑白相间的方形基准点,这些基准点包含用于识别的小红方块。通过拟合基准点边界上的最大梯度点的直线段来找到角点。这种基准点的每个四个角都提供一个对应关系 Mi​↔mi​,并使用扩展卡尔曼滤波器估计姿态。

[108, 67, 68] 也使用平面矩形基准点,并表明单个基准点足以估计姿态。这种方法变得流行,既因为它提供了稳健的低成本实时3D跟踪解决方案,也因为有一个名为ARToolKit的软件库公开可用[3]。

如前所述,大多数基准点具有黑白背景边框以便于检测。内部图案允许识别不同的基准点。图像首先被阈值处理,系统寻找黑色像素的连通区域。轮廓可以通过四条线段拟合的区域被保留。然后通过模板匹配与已知图案进行比较来纠正每个区域的透视变形。通过估计将图案坐标 mp​ 映射到屏幕坐标 ms​ 的单应性 H 来进行校正。

ms​=Hmp​

可以从图像中检测到的基准点角和图案坐标系统中的坐标来估计 H 的系数[54]。如果摄像机的内部参数已知,可以从 H 恢复摄像机姿态,如2.3.4小节所述。整个过程(基准点的检测和姿态估计)以报告的每秒30帧运行,因此可以在每一帧中应用:3D跟踪系统不需要任何手动初始化,并且对基准点遮挡具有鲁棒性。实际上,在良好的照明条件下,恢复的姿态对增强现实应用来说也是足够精确的。这些特性使得ARToolKit在可以对场景进行工程化时成为3D跟踪的一个良好解决方案。由于其低CPU要求,这样的基于标记的应用开始在移动设备如PDA和手机上实现[139]。Symbian OS上的免费计算机视觉库(这是智能手机的主流操作系统)也在开发中,并希望这些技术在移动设备上得到发展。

4 Natural Features, Model-Based Tracking

使用标记物来简化3D跟踪任务需要对环境进行工程设计,而跟踪技术的最终用户通常不喜欢或有时甚至无法接受这种做法,例如在户外环境中。因此,尽可能依赖于图像中自然存在的特征会更好。当然,这种方法会使跟踪变得更加具有挑战性,并且通常需要一些3D知识来简化任务。这些3D知识可以采用场景对象的CAD模型、一组平面部件,甚至是粗略的3D模型,如椭球体。这些模型可以使用自动化技术或商业产品创建。

为了完整起见,我们还介绍了不需要3D场景模型的方法,同时恢复相机轨迹和3D结构。我们将看到这些方法可以实时可靠地运行。然而,它们无法消除误差累积,并且在模型语义重要的情况下不合适。例如,对于自动抓取的目的,不仅需要恢复相机轨迹,还需要决定在哪里进行抓取。此外,基于模型的技术通常可以使系统更加健壮和安全。简而言之,建立3D模型的不便与其带来的增加的可靠性之间存在着权衡,选择其中一种方法取决于手头的应用。

为了对该主题的大量文献进行组织,我们在此区分了两类方法,具体取决于所使用的图像特征的性质。第一类是基于边缘的方法,它们将目标对象的3D边缘投影与高梯度图像区域进行匹配。第二类包括所有依赖于对象投影内部像素提供的信息的技术,这些信息可以从光流、模板匹配或兴趣点对应中得出。

在跟踪过程中,对前一帧姿势的了解大大简化了任务:一旦初始化,通常是手动或使用专门方法,就会经常使用运动模型来预测下一帧的姿势,以帮助寻找图像特征。最简单的模型假设是相机在连续帧之间移动不大。

4.1 Edge-Based Methods

历史上,早期的跟踪方法都是基于边缘的,主要是因为这些方法在计算上高效,而且相对容易实现。它们对于光照变化也自然稳定,即使对于具有镜面材料的情况也是如此,而这对于考虑内部像素的方法并不一定成立,稍后将会讨论。这些方法可以分为两类:

  • 一种方法是在没有明确提取轮廓的情况下,在图像周围查找强梯度,这是快速且通用的方法。
  • 另一种方法是首先提取图像轮廓,如直线段,然后将模型轮廓与这些图像轮廓进行拟合。由于丢失了一般性,可以通过增加鲁棒性来弥补。

我们在下面讨论了这两种方法。

4.1.1 RAPiD

由于其低计算复杂度,RAPiD [52] 是最早成功实时运行的3D跟踪器之一。尽管自那时以来已经提出了许多改进,但我们在这里详细描述它,因为许多基本组件在更近期的系统中仍然保留着。其关键思想是考虑一组3D对象点,称为控制点,这些点最有可能投影在高对比度的图像边缘上。如图4.1所示,控制点可以沿着3D模型边缘进行采样,以及在快速反射率变化的区域。它们也可以动态生成,作为遮挡轮廓上的点。在两个连续帧之间,可以从控制点的2D位移中恢复出对象的3D运动。

初始化后,系统执行一个简单的循环:对于每个帧,使用预测的姿势(通常可以是前一帧估计的姿势)来预测哪些控制点将可见以及它们的新位置应该在哪里。将控制点与图像轮廓匹配,并从这些对应关系中估计新的姿势。对于每个控制点,系统在新图像中寻找其投影m,即其在上一帧中的投影m。由于光圈问题,位置m不能完全确定。如图4.2所示,仅测量了m到适当图像边缘的垂直距离l。假设图像边缘和模型边缘的方向几乎相同,则沿着从m到图像边缘的单位向量n的方向进行一维搜索。对于快速实现,通常在水平、垂直或对角线方向上进行搜索,最接近实际边缘的法线。[27]使用了预先计算的轮廓方向卷积核函数,以找到与重新投影轮廓方向相似的边缘,而不是扫描线中的所有边缘。

在原始的RAPiD公式中,运动是在对象坐标系中估计的,其原点位于相机坐标系中的T=(Tx,Ty,Tz)T,并且其轴与相机坐标系对齐初始化设定)。对象坐标系中的控制点P=(Px,Py,Pz)T被表示为M=T+P=(X,Y,Z)T在相机坐标系中。然后,它在图像中的投影是m=KM。为简单起见,将其投影表达为规范化图像,即校正为焦距和纵横比统一的图像,并将其原点设置为光学中心,如m=XZ,ZT。通过将对象围绕对象原点旋转δp并将其平移δt,相机坐标系中的控制点位置变为M=T+δt+∆RP。RAPiD假设在小运动后获得新图像,从而使得可以将对象投影与运动线性化。如子段2.7所示,旋转∆R近似为∆R≈I+Ω,其中Ω是一个Skew-Symmetric矩阵。因此,我们有M≈M+δt+ΩP。然后,可以将M的投影m的表达式展开为Ωx,Ωy,Ωz和δt,并且仅保留一阶项,变为 u=u+1 Tz+Pz(δtx+ΩyPz−ΩzPy−u(δtz+ΩxPy−ΩyPx)), v=v+1 Tz+Pz(δty+ΩzPx−ΩxPz−v(δtz+ΩxPy−ΩyPx))。 这可以写成矩阵形式 m=m+Wδp, 其中δp=(Ωx,Ωy,Ωz,δtx,δty,δtz)T是由旋转系数和平移分量组成的六维向量,W是一个2×6矩阵,是T和P的坐标的函数。 。

[52]中,提出了对这种基本方法的一些增强。当控制点的边缘响应变得太弱时,它不会被考虑到运动计算中,因为它可能随后会错误地吸附到附近的较强边缘上。正如我们将在下文中看到的那样,这也可以使用鲁棒估计器来处理。可以用来拒绝不正确边缘的另一个线索是它们的极性,即它们是否对应于从暗到亮或从亮到暗的转变。还介绍了使用对象的遮挡轮廓的方法。在[36]中,提出了将卡尔曼滤波器集成到RAPiD中的方法。

可以动态定义控制点。[52]展示了如何沿着由模型投影定义的遮挡轮廓创建轮廓边缘点。[84]还讨论了在时间t可见的模型边缘的离散化,以生成用于估计时间t + 1的姿势的控制点。

4.1.2 Making RAPiD Robust

4.1.3 Explicit Edge Extraction

4.1.4 Direct Optimization on Gradients

[72, 84, 8] 提出通过直接将模型投影拟合到图像梯度来恢复姿态。一个简单的方法是最大化模型投影上的梯度范数,但是不能保证模型边缘应该对应于高强度梯度值。

更好的方法是考虑到投影轮廓的预期方向:[84] 提出最小化值为∇I²的值的总和,其中∇I表示图像I的空间梯度, n表示预期方向。这个度量倾向于支持梯度既强且在预期方向上的位置。[72] 最大化预测梯度范数与测量梯度范数之间的相关性,再加上一个额外项来约束运动。

这样的方法需要一个非常好的初始估计才能收敛到正确的姿态。因此,它们最好用作一个优化步骤。

4.2 Optical Flow-Based Methods

4.2.1 Using Optical Flow Alone

4.2.2 Combining Optical Flow and Edges

4.3 Template Matching

6 conclusion

为了总结这项调查,我们首先试图为读者提供一些实用建议,他们可能想知道在特定情况下使用哪种方法。然后,我们讨论了我们认为的3D跟踪研究的未来。

6.1 选择适当的3D跟踪方法

这样的选择关键取决于目标应用程序和预期工作的环境。表6.1总结了我们以下将更详细讨论的可能性。 即使经过二十多年的研究,基于视觉的实用3D跟踪系统仍然依赖于标志物,因为这仍然是唯一一个足够快速、稳健且准确的方法。因此,如果在系统所在的环境中引入它们是可行的,那么这种解决方案肯定必须被保留。如果费用不是一个主要问题,商业产品(例如由Advanced Real-time Tracking或Geodetic services, Inc.、Advanced Real-time Tracking GmbH、Metronor、ViconPeak、AICON 3D Systems GmbH等公司提供的产品)提供了工业或医疗应用所需的准确性、可靠性和速度。 然而,它们的缺点是它们需要反射球和红外摄像机,这使得它们的部署相对昂贵和繁琐。ARToolkit [3]是一个免费可用的替代方案,它使用可以打印在纸张上的平面标志物。虽然不太准确,但它仍然稳健,并允许快速开发低成本的应用程序。因此,它在增强现实社区中变得流行。 然而,这种局面可能即将改变,因为现在计算机已经足够快,可以可靠地实时处理自然特征,从而使得完全不需要标志物成为可能。特别是在处理多边形、纹理或两者兼而有之的对象时,这一点尤其明显。

  • 多边形对象

对于具有明显轮廓并且对相对简单的背景进行了轮廓化的对象,如4.1小节中的RAPiD-like方法是一个很好的起点。它们在提供良好结果的同时,速度快,实现相对简单。通过依赖快速优化技术和快速可靠的自上而下特征提取,可以在现代PC上以超过50 Hz的速度处理图像[69]。它们对光照和尺度变化以及镜面效应自然具有鲁棒性。它们即使在旧的、较慢的计算机上运行速度也很快。因此,它们实际上已经被用于工业环境中的视觉伺服,其中可以找到可靠的边缘。 然而,请注意,这些跟踪器容易发生灾难性失败,导致完全丢失跟踪。当背景变得混乱或出现视角变化时,这一点尤其明显,这使得很容易将真实对象边缘与其他对象混淆。通过仔细实现,可以将这种情况最小化,但无法完全消除。请注意,在跟踪简单对象(例如矩形框)时,此类故障比跟踪更复杂的对象更频繁发生。这是有道理的,因为后者为可能方向的集合提供了更丰富的采样。因此,如果某些数据受到噪声的干扰,通常更容易对其进行忽略并使用剩余的数据,这使得鲁棒估计器更容易使用。

  • 纹理对象

如果目标对象具有纹理,则此图像线索可以替换或补充轮廓信息。

如果目标对象是平面的,且不太可能发生遮挡,则基于模板的方法(如4.3.3小节中讨论的方法)据报告在具有敏捷运动的情况下表现非常准确。该方法据报告在现在已经过时的计算机上(O2硅图形工作站,带有150 MHz R5000处理器)上花费不到10毫秒。不幸的是,它对遮挡非常敏感,并且难以扩展到完全三维对象。

相比之下,在4.4.4和4.4.3小节中讨论的基于兴趣点的方法在场景足够纹理时至少不会受到这些限制。然而,它们需要更复杂的实现和更大的计算负担。它们在现代PC上以帧率运行,但仍然需要全部CPU才能运行。因此,我们预计还需要等待几年,以便它们只使用部分可用的CPU,就像轮廓基于方法已经做到的那样。尽管如此,我们仍然相信等待是值得的,因为这些方法可以被设计得非常鲁棒,可以抵御局部遮挡以及光照、角度和背景的变化。在众多现有方法中,可以根据目标对象的可用模型进行选择。在没有这样的模型的情况下,可以依靠完全自下而上的方法[28, 100]或者将场景视为一组平面补丁[119],但没有明确的3D模型管理。[100]在1 GHz计算机上报告了每秒13帧的速度。[28]在Pentium M 1.6 GHz笔记本电脑上达到了每秒30帧的速度,考虑了更少但更强的兴趣点。

如果完整的3D模型可用,或者通常情况下AR应用程序需要的话,它可以有效地用于消除抖动并确保准确地投影到图像中[137]。此外,如果在训练阶段可以创建一些关键帧(即目标对象的视图,其姿态已知),则可以与3D模型一起使用,以补充与之前帧匹配提供的信息。这导致了一种不会漂移且可以从跟踪失败中恢复的算法[137]。它在2.8 GHz上以每秒20帧的速度运行。

6.2 Implementation Issues

大多数在这里讨论的方法在基本原理上都相当容易理解。然而,它们的性能通常与实现的质量密切相关。这些实现细节通常被埋藏在论文的末尾,如果有的话。为了给读者一点参考,我们在这里列出了一些简短而非全面的细节。

对于所有这些方法,虽然粗略校准内部参数的摄像机可能足以获得合理的结果,但准确、仔细地进行校准可能会带来令人惊讶的改进。广角摄像头通常有助于提供更多的约束。正如2.1.5小节所示,失真可以很容易地被校正。在可能的情况下,还可以使用新的全方位摄像头[46, 126],这些摄像头提供了更多的图像约束,并提高了准确性和鲁棒性。

6.2.1 基于轮廓的方法

如[85]所讨论的那样,采样投影轮廓似乎比采样3D模型轮廓更可取。使用一阶高斯核也可以很好地找到相应的图像轮廓,即使使用保持准确性和计算速度的3×3或5×5的小型掩模。在查找可能找到多个图像边缘的情况下,用于选择最佳边缘的标准必须在梯度强度和与先前位置的接近度之间取得平衡,以防止跟踪器快速发散。一种方法是赋予算法同时考虑多个假设的能力[136]。

6.2.2 基于兴趣点的方法

如[54]所讨论的那样,在估计图像之间的单应性时,应该对点坐标进行归一化以提高精度。Harris检测器[53, 116]是点检测的有效选择。然而,为了降低产生病态配置的风险,点应该在对象的可见表面上分布得很好。实现这一目标的有效方法是首先将输入图像分成子区域,然后对每个子区域应用自适应阈值。这样可以确保在低纹理区域检测到一些点,同时减少在高纹理区域检测到的点的数量。一旦检测到,可以使用Kanade-Lucas-Tomasi跟踪器[129, 116]对点进行跟踪,可以在OpenCV库[60]和Stan Birchfield的网站[14]上找到该实现。然而,根据我们的经验,最好在连续图像中检测和匹配点,如4.4.1和4.4.2小节所述。这似乎不太容易漂移,并且允许进行方面变化。

6.3 三维跟踪的未来

尽管三维跟踪算法即将成为实用,而无需使用标志物,但读者必须意识到,大多数这些算法的递归性质使它们固有地脆弱:它们必须手动初始化,并且如果出现任何原因导致过程失败,则无法恢复。在实践中,甚至最好的方法经常遭受失败,例如因为运动太快,完全遮挡发生,或者简单地因为目标对象暂时移出视野。 这可以通过将图像数据与由惯性传感器或陀螺仪提供的动态数据相结合来解决[123, 41]。传感器可以预测摄像机位置或相对运动,然后使用类似于本调查中描述的视觉技术来加以改进。这种组合对于需要跟踪摄像机与静态场景的应用(例如增强现实)是可能的,假设愿意为摄像机安装传感器。然而,并非总是有可能为摄像机安装传感器。例如,使用静态摄像机跟踪移动的汽车没有任何用处。 因此,一种更普遍且更理想的方法是开发纯粹基于图像的方法,该方法可以检测目标对象并从单个图像中计算其三维姿态。如果它们足够快,那么它们可以用来根据需要初始化和重新初始化系统,即使它们不能像传统的递归方法那样提供相同的精度,后者使用时间连续性约束来优化其估计。能够做到这一点的技术刚刚开始出现。 而且,由于它们是拼图中的最后一块缺失的部分,我们预计我们不必再等待另外二十年,纯粹基于视觉的商业系统就会成为现实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1704519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信资源混淆,导致的约束布局 Constraintlayout 控件重叠!

问题 1、广告六要素 虽然我不参与广告 sdk 接入等相关工作,但是最近总是听到一个词广告六要素。这到底是什么? 国内下载类广告,尤其是针对移动应用推广的广告,其成功实施往往围绕几个关键要素进行,这些要素能够帮助…

互联网政务应用安全管理规定:使用安全连接方式访问

前几日,由中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部等4部门联合制定的《互联网政务应用安全管理规定》(以下简称规定)发布了,规定定义了互联网政务应用,也对互联网政务应用…

stream-并行流

定义 常规的流都是串行的流并行流就是并发的处理数据&#xff0c;一般要求被处理的数据互相不影响优点&#xff1a;数据多的时候速度更快&#xff0c;缺点&#xff1a;浪费系统资源&#xff0c;数据少的时候开启线程更耗费时间 模版 Stream<Integer> stream1 Stream.of…

拿捏数据结构- 链式二叉树

链式二叉树的概念&#xff1a; 链式二叉树解决的是非完全二叉树解决不了的问题 什么意思呢&#xff0c;简单的说就是&#xff0c;链式二叉树 可以是下面三种二叉树 但是非链式二叉树只能是前两种 链式二叉树的存储 节点结构&#xff1a;首先定义一个结构体或类来表示二叉树的节…

快速上手 HuggingFace

HuggingFace HuggingFace 是类似于 GitHub 的社区&#xff0c;它主要提供各种的模型的使用&#xff0c;和 github 不同的是&#xff0c;HuggingFace 同时提供了一套框架&#xff0c;进行模型推理&#xff0c;模型训练、和模型库文件的管理等等。本文将介绍&#xff0c;如何快速…

大字体学生出勤记录系统网页源码

源码介绍 上课需要一个个点名记录出勤情况&#xff0c;就借助AI制作了一个网页版学生出勤记录系统&#xff0c; 大字体显示学生姓名和照片&#xff0c;让坐在最后排学生也能看清楚&#xff0c;显示姓名同时会语音播报姓名&#xff0c; 操作很简单&#xff0c;先导入学生姓名…

Golang | Leetcode Golang题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; func numDistinct(s, t string) int {m, n : len(s), len(t)if m < n {return 0}dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)dp[i][n] 1}for i : m - 1; i > 0; i-- {for j : n - 1; j > 0; j-- {if s[i] …

C++ | Leetcode C++题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int numDistinct(string s, string t) {int m s.length(), n t.length();if (m < n) {return 0;}vector<vector<unsigned long long>> dp(m 1, vector<unsigned long long>(n 1));for (i…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-19.1讲 串口格式化输出printf

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

PHP:集成Xunsearch生成前端搜索骨架

如果是安装宝塔&#xff0c;我们在集成xunsearch的时候就会比较简单&#xff0c;后面我们在介绍其他的接入方式&#xff1b; 首先我们进入到宝塔管理后台&#xff1a;【软件商店】-【输入xun】-【点击xunsearch】直接安装即可 安装成功之后&#xff0c;会自动在www/server中创…

(delphi11最新学习资料) Object Pascal 学习笔记---第13章第4节 (内存管理和接口)

13.4 内存管理和接口 ​ 在第11章中&#xff0c;我介绍了接口的内存管理的关键要素。与对象不同&#xff0c;接口是受管理且具有引用计数。如我所提到的&#xff0c;接口引用会增加所引用对象的引用计数&#xff0c;但您可以声明接口引用为弱引用以禁用引用计数&#xff08;但…

Reactor模式Proactor模式

1.Reactor/Dispatcher模式 1.1 概述 Reactor模式下&#xff0c;服务端的构成为Reactor 处理资源池。其中&#xff0c;Reactor负责监听和分发事件&#xff0c;而处理资源池则负责处理事件。 该模式下的组合方案有下面几种(第三种几乎没有被实际应用)&#xff1a; 1 * Reacto…

AURIX TC3xx单片机介绍-启动过程介绍1

从各个域控制器硬件解决方案来看,MPU可能来自多个供应商,有瑞萨,有NXP等,但对于MCU来说,基本都采用英飞凌TC3xx。 今天我们就来看一下TC3xx的启动过程,主要包含如下内容: uC上电过程中,会经过一个上电时序,从复位状态“脱离”出来;Boot Firmware是复位后第一个执行的…

设计模式:原型模式(Prototype)

设计模式&#xff1a;原型模式&#xff08;Prototype&#xff09; 设计模式&#xff1a;原型模式&#xff08;Prototype&#xff09;模式动机模式定义模式结构时序图模式实现在单线程环境下的测试在多线程环境下的测试模式分析优缺点适用场景应用场景模式扩展应用实例实例 1&am…

SecureCRT for Mac注册激活版:专业终端SSH工具

SecureCRT是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;简单地说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH&#xff0c;同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过…

user-agents,一个无敌的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个无敌的 Python 库 - user-agents。 Github地址&#xff1a;https://github.com/selwin/python-user-agents 在Web开发和数据分析中&#xff0c;了解用户的设备和浏览器信息是非常重要的。通过…

开发一个comfyui的自定义节点

文章目录 目标功能开发环境comfyui自定义节点的实现原理仓库地址完整代码目标功能 开发一个comfyui的自定义节点,该节点的功能是:可以对comfyui工作流中最终输出的图像添加一些自定义文案,且可以指定文案在图像上的位置、文案的字体样式、字体大小、字体颜色等。最终效果如…

Go语言之GORM框架(三)——Hook(钩子)与Gorm的高级查询

Hook(钩子) 和我们在gin框架中讲解的Hook函数一样&#xff0c;我们也可以在定义Hook结构体&#xff0c;完成一些操作&#xff0c;相关接口声明如下&#xff1a; type CreateUser interface { //创建对象时使用的HookBeforeCreate() errorBeforeSave() errorAfterCreate() …

小识MFC,一套设计优雅与不优雅并存的类库----小话MFC(2)

Q1&#xff1a; CPoint继承于POINT&#xff0c;这样有什么好处&#xff1f; A&#xff1a; 继承的一个最基本的好处当然就是减少代码量。CPoint和POINT内部数据一样&#xff0c;只是一个提供了更多的方法来操作对象。 typedef struct tagPOINT {LONG x;LONG y; } POINT, *P…

ARM IHI0069F GIC architecture specification (7)

3.1 GIC逻辑组件 GICv3体系结构由一组逻辑组件组成&#xff1a; •Distributor。 •每个受支持的PE都有一个Redistributor。 •支持的每个PE都有一个CPU interface。 •中断翻译服务组件&#xff08;ITS&#xff09;&#xff0c;支持将事件翻译为LPI。 Distri…