AprilTags论文翻译

news2024/11/15 7:11:01

AprilTag三篇论文的简单翻译.2011,2016,2019GitHub - AprilRobotics/apriltag: AprilTag is a visual fiducial system popular for robotics research.

 

AprilTag:一个健壮而灵活的视觉基准系统

摘要-虽然使用自然出现的特征是机器感知的重点,但人工特征在创建可控的实验、ground truthing和简单的系统开发中扮演重要的角色,这些方面感知并不是主要对象。

我们描述了一种新的视觉基准系统,该系统使用2D条形码样式标记,允许从单幅图像进行全6自由度的特征定位。我们的系统在以前的系统基础上进行了改进,包含了一个快速和健壮的线检测系统,一个更强的数字编码系统,以及对遮挡、弯曲和镜头失真更强的鲁棒性。虽然在概念上与ARTag系统相似,但我们的方法是完全开放的,算法也有详细的文档。

一、简介

视觉基准是人造地标,旨在易于识别和区分。尽管与其他2D条形码系统(例如QR码[1])相关,但它们具有显着的目标和应用。对于二维码,人们通常需要将相机对准标签,并以相当高的分辨率拍摄它,获得数百个字节,比如一个网址。相比之下,视觉基准的信息负载很小(可能是12位),但设计成即使在分辨率很低、光线不均匀、奇怪的旋转或隐藏在杂乱图像的角落时也能自动检测和定位。考虑到远距离的检测,视觉基准由更少的数据单元组成:QR标签的对齐标记约包含268像素(不包括所需的标题或有效载荷),而本文描述的视觉基准约为49到100像素,包括有效载荷。

不像二维条码系统,条码在图像中的位置是不重要的,视觉基准系统提供一个标签的相机相对位置和方向。基准系统也被设计用来检测单一图像中的多个标记。

视觉基准系统可能以其在增强现实中的应用而闻名,这刺激了几个流行系统的发展,包括ARToolkit[2]和ARTag[3]。现实世界的物体可以用视觉基准增强,允许虚拟生成的图像叠加。同样,视觉基准可以用于基本的动作捕捉[4]。

视觉基准系统已经被用于改善人机交互,允许人类去通过一个合适的卡片发送指令(例如跟随我、等在这)给机器人[5],平面标签也被用于生成覆盖机器人计划和任务分配到头戴显示器上的用户界面[6]。

机器人系统的性能评估和基准已成为研究界的中心问题,视觉基准在该领域特别有用。例如,基准可用于生成机器人轨迹和闭环控制[7]的ground truth,通常,人工特征可以在控制算法[8]下评价同步定位与建图(SLAM)算法。机器人的应用已经导致了附加标签检测系统的发展[9][10]。

从标记检测的角度(图像中的哪些像素对应一个标记?)和从容错数据编码的角度(是哪个标记?)来看,设计健壮的基准同时最小化所需的尺寸都是一个挑战。

在本文中,我们描述了一种新的视觉基准系统,该系统可显着改善先前系统的性能。本文的核心贡献是:

我们描述了一个鲁棒视觉检测系统的方法,提出了一种基于局部梯度的基于图的图像分割算法,该算法可以精确估计直线。我们还描述了一种可以处理重大遮挡的四边形提取方法。

我们证明,我们的检测系统比以往的系统提供了明显更好的定位精度。

我们描述了一种新的编码系统,该系统解决了二维条形码系统特有的问题:旋转的鲁棒性,以及自然图像产生的假阳性的鲁棒性。实验结果表明,与之前的工作相比,我们的编码系统提供了显著的理论和现实效益。

我们在一组基准上指定并提供结果,这些基准将来可以更好地比较基准系统。

与以前的方法(包括ARTag和Studierstube Tracker)相比,我们的实现是在开源许可下发布的,它的算法和实现都有很好的文档记录。这些系统的封闭性对我们的实验评估是一个挑战。在本文的比较中,我们使用了有限的公开信息,以便尽可能多的进行客观的比较。另一方面,ARToolkitPlus是开源的,所以我们能够进行更详细的比较。除了代码之外,我们还提供了我们的评估代码,以便将来的作者更容易地执行比较。

在下一节中,我们将回顾相关工作。我们将在以下两节中描述我们的方法:第3节中的标签检测器和第4节中的编码系统。在第5节中,我们将对我们的方法进行实验评估,并将其与之前的算法进行比较。

二、相关工作

ARToolkit[11]是最早的标签跟踪系统之一,针对的是人工现实应用。和接下来的系统一样,它的标签包含一个被黑色边框包围的方形有效载荷。然而,它的不同之处在于它的有效载荷不是直接用二进制编码的,相反,它使用了拉丁字符A等符号。标签解码时,标签的有效载荷(高分辨率采样)与已知标签的数据库相关联,并将最佳相关性标签报告给用户。这种方法的一个主要缺点是与解码标记相关的计算成本,因为每个模板都需要一个独立的、缓慢的相关操作。第二个缺点是很难生成彼此近似正交的模板。

ARToolkit使用的标签检测方案基于用户指定的阈值对输入图像简单二值化。该方案速度很快,但对光照变化的鲁棒性较差。一般来说,ARToolkit的检测甚至不能处理标签边界的中等遮挡情况。

ARTag[3]提供了改进的检测和编码方案。和我们自己的方法一样,检测机制是基于图像梯度的,这使得它对光照的变化具有鲁棒性。虽然检测算法的细节没有公开,但ARTag的检测机制能够检测出边缘被部分遮挡的标签。ARTag还提供了第一个基于前向矫正的编码系统,这使得标签更容易生成,更快地相互关联,并在标签之间提供了更好的正交性。

ARTag的性能启发了ARToolkit的几项改进,它们演化为ARToolkitPlus [2],  最后是StudierStube跟踪器[12],这些版本引入了像ARTag中使用的那些数字编码有效载荷。尽管是后期的工作,我们的实验表明,这些编码系统的性能不如ARTag所使用的,反过来,ARTag的性能被我们的编码系统超越。

除了单色标签,其他编码系统也已开发出来。例如,颜色信息被用来增加可编码[13]、[14]的信息量。反向反射的标签[15]也被使用。Bokode[16]使用了一种特别有趣的方法,它利用散焦效应来检测极小的标签,方法是故意使相机散焦。

除了二维条形码,人们还开发出了其他一些人工地标。头顶摄像机已被用于跟踪配备有闪烁led的机器人[17]。相比之下,北极星系统把视觉基准放在天花板上。二维平面系统,就像本文中描述的那样,与基于led的系统相比,有两个主要优势:目标可以在标准打印机上廉价打印,并且不需要多个led就可以提供6自由度的位置估计。

三、检测器

我们的系统由两个主要部分组成:标签检测器和编码系统。在本节中,我们将描述检测器,其工作是估计图像中可能的标签的位置。从理论上讲,检测器试图寻找内部比外部暗的四边区域(方形)。标签本身有黑色和白色的边界以方便这一点(见图2)。

检测过程由几个不同的阶段组成,在下面的小节中描述,并使用图2所示的示例进行说明。

请注意,四边形检测器的假阴性率(是标签但是没有检测出的)非常低,因此具有很高的假阳性(不是标签但是检测为标签)率。我们依靠编码系统(在下一节中描述)将这种假阳性率降低为可用的水平。

A.线段检测

我们的方法首先检测图像中的线条,和ARtag检测器的方法类似,计算每个像素的梯度方向和大小(见图3),并将像素聚类成具有相似梯度和幅值的组件。聚类算法类似于Felzenszwalb[19]的基于图的方法:创建一个图,其中每个节点代表一个像素。边缘在相邻像素之间添加,边缘权重等于梯度方向上的像素差。然后对这些边进行排序和处理,以增加边的权重:对于每条边,我们测试像素所属的连接组件是否应该连接在一起。给定一个分量n,我们将梯度方向的范围表示为D(n),将幅度的范围表示为M(n)。换句话说,D(n)和M(n)分别是表示梯度方向和大小的最大值和最小值之差的标量值。在D()的情况下,必须小心处理2π绕取。然而,由于有用边的跨度远小于π度,这是很简单的。给定两个分量n和m,如果满足下面两个条件,我们将它们合并在一起

3.早期处理步骤。标签检测算法首先计算每个像素的梯度,计算它们的大小(第一)和方向(第二)。采用基于图的方法,将具有相似梯度方向和幅度的像素聚类为分量(第三)。使用加权最小二乘,然后将线段拟合到每个组件(第四个)的像素。线段的方向是由梯度方向决定的,所以线段的左边是暗的,右边是亮的。线的方向通过在中点处的短的垂直凹槽来显示;注意,这些凹槽总是指向较浅的区域

这些条件是从[19]改编而来的,可以内在地理解:D()和M()的值较小,表示组件内部变化很小。如果两个簇的结合和单独取来的簇差不多一致,它们就可以结合在一起。通过KD和KM参数,允许组分内部变化适度增加,但随着组分变大,这种变化会迅速缩小。在早期迭代期间,K参数基本上允许每个组件学习其簇内变化。在我们的实验中,我们使用KD = 100和KM = 1200,尽管算法在较宽的值范围内工作良好。

出于性能原因,边缘权重被量化并存储为定点数。这允许边使用线性时间计数排序[20]。结合查找算法[20],将梯度方向和幅值的上下界存储在以每个分量的代表成员为索引的简单数组中,可以有效地进行实际的合并操作。

这种基于梯度的聚类方法对图像中的噪声非常敏感:即使是少量的噪声也会导致局部梯度方向的变化,抑制成分的增长。解决这个问题的方法是对[19],[21]图像进行低通滤波。不像其他问题域,这种过滤会模糊图像中的有用信息,标签的边缘本质上是大规模的特征(特别是与数据字段相比),因此这种滤波不会导致信息丢失。我们建议σ = 0.8。

一旦聚类操作完成,使用传统的最小二乘程序将线段拟合到每个连接的组件,并根据其梯度幅度对每个点进行加权(见图3)。我们调整每个线段,使线的暗面在它的左边,而亮面在它的右边。在处理的下一个阶段,这允许我们在每个四边形上执行缠绕规则。

分割算法是我们的检测方案中最慢的阶段。作为一种选择,这种分割可以在一半的图像分辨率上执行,以4倍的速度改进。子采样操作可以与推荐的低通滤波器有效结合。这种优化的结果是适度减少检测范围,因为非常小的四边形可能不再被检测到。

B.四边形检测

此时,图像中一组有向线段已经被计算出来了。下一个任务是找到形成四边形状的线段序列,即一个四边形。面临的挑战是在线段分段中尽可能稳健地做到这一点。我们的方法基于深度为4的递归深度优先搜索:搜索树的每一层都向四边形添加一条边。在深度1处,我们考虑所有线段。在深度2到4,我们考虑所有线段中开始的位置足够接近前一线段结束的位置,并且服从逆时针绕线顺序。对遮挡和分割错误的鲁棒性是通过调整足够接近的阈值来处理的:通过使阈值大,可以处理边缘周围的显著间隙。足够接近的阈值是直线长度的两倍加上额外的5个像素。这是一个较大的阈值,导致低的假阴性率,但也导致高的假阳性率。

我们填充一个二维查找表,以加速对开始于空间中某个点附近的线段的查询。通过这种优化,以及早期拒绝不服从缠绕规则的可判断四边形,或使用一个线段不止一次的四边形,四边形检测算法只占总计算需求的一小部分。

一旦发现四条线,就会创建一个候选的四边形检测器,这个四边形的角是构成它的几条线的交点。因为这些线是用来自许多像素的数据来拟合的,所以这些角的估计精确到一个像素的一小部分。

C.单应和外参估计

我们计算3x3的单应矩阵,该矩阵将标签坐标系的2D齐次坐标([0,0,1]T是标签的中心点,并且标签在x和y方向上扩展一个单位)投影到2D图像坐标系。使用直接线性变换算法[22]计算单应矩阵,请注意,由于单应性映射在齐次坐标中投影点,所以只能按比例定义它。

标签位置和方向的计算需要其他信息:相机的焦距和标签的物理大小。3 x 3单应矩阵(由DLT计算)可以写成3x4摄像机投影矩阵P(我们假设它是已知的)和4x3截断的外参矩阵E的乘积。外参矩阵通常是4x4的,但是标签上的每个位置在标签的坐标系中都是z = 0。因此,我们可以将每个标记坐标重写为z隐式为零的二维齐次点,并删除外参矩阵的第三列,形成截断的外参矩阵。我们将P的旋转分量表示为Rij,将平移分量表示为Tk。我们也将未知的比例因子表示为s:

注意我们不能直接解出E,因为P是秩亏的。我们可以展开等式2的右边,把每个hij的表达式写成联立方程的集合

对于Rij和Tk的元素,除了未知的比例因子s,这些都很容易求解。然而,由于旋转矩阵的列必须都是单位大小,我们可以限制s的大小. 我们有旋转矩阵的两列,所以我们计算s作为它们大小的几何平均值。s的符号可以通过要求标签出现在摄像机前面来恢复,即,Tz < 0。旋转矩阵的第三列可以通过计算两个已知列的叉乘来恢复,因为旋转矩阵的列必须是标准正交的。

DLT过程和上面的归一化过程不能保证旋转矩阵是严格标准正交的。为了纠正这个问题,我们计算了R的极坐标分解位置,得到一个适当的旋转矩阵,同时最小化误差[23]的Frobenius矩阵范数。

四、有效载荷解码

最后的任务是从有效载荷字段读取位。为此,我们计算每个位域的标记相对坐标,使用单应性将其转换为图像坐标,然后对结果像素进行阈值处理。为了适应光照(光照不仅可以因标签而变化,也可以在标签内变化),我们使用了一个空间变化的阈值。

具体地说,我们建立了黑色像素的强度空间变化模型和白色像素的强度的第二个模型。我们使用标签的边界,其中包含已知的白色和黑色像素的例子,来学习这个模型(参见图4)。我们使用以下强度模型:

该模型具有四个参数,可轻松使用最小二乘回归计算。我们构建了两个这样的型号,一种用于黑色,另一个用于白色。然后,解码数据位时使用的阈值只是黑白模型预测强度值的平均值。

4.四边形检测和采样。在图像中检测到四个四边形(其中包含两个标记)。第三个检测到的四边形对应于前景标签的三个边缘加上纸张的边缘(见图2)。第四个四边形在较大标签的一个有效载荷位周围检测到。这两个无关的检测最终被丢弃,因为它们的有效负载无效。白点对应标签边界周围的样本,用于拟合白色像素强度的线性模型;模型同样适用于黑色像素。这两个模型用于阈值数据有效负载位,如黄色圆点所示。

五、编码系统

一旦数据有效载荷从一个四边形中解码,就由编码系统来决定它是否有效。编码系统的目标是:最大化可区分代码的数量;最大限度地提高可检测或纠正的错误位数量;最小化假阳性/标签混乱率;最小化每个标签的总比特数(也就是标签的大小)

这些目标经常是冲突的,因此给定的编码方法代表了一种权衡。在本节中,我们将描述一种基于词汇码的新编码系统,它比以前的方法具有显著的优点。我们的过程可以生成具有各种属性的字典代码,允许用户使用最适合他们需要的编码。

A.方法论

我们提出了修改词典[24]的使用。经典词典通过两个数量进行了参数化:每个代码字中的位数n,和任何两个代码字之间的最小汉明距离d。词典可以纠正⌊(d -1)/2⌋位误差并检测d/2位误差。为了方便起见,我们将表示36位编码,最小汉明距离为10(例如)为36h10编码。Lexicodes的名称来源于用于启发式的生成有效码字:候选码字按字典顺序考虑(从最小到最大),当新的码字与之前添加到码本的每个码字至少有一段距离d时,就向码本添加新的码字。虽然非常简单,但该方案通常非常接近最优[25]。

在视觉基准的情况下,编码方案必须对旋转具有鲁棒性。换句话说,当标签旋转90度、180度或270度时,它与其他代码之间的汉明距离仍然为d,这一点非常关键。标准的词典码生成算法不保证这个属性。然而,标准生成算法可以简单地扩展以支持这一点:当测试一个新的候选码字时,我们可以简单地确保所有四次旋转都具有所需的最小汉明距离。lexicode算法可以很容易地扩展以合并额外的约束,这是我们方法的一个优点。

有些码字,尽管满足汉明距离约束,却是糟糕的选择。例如,一个由全0组成的码字将导致一个看起来像单个黑色方块的标签。这种简单的几何图案通常出现在自然场景中,导致假阳性。例如,ARTag编码系统显式禁止两个代码,因为它们太可能偶然出现。

我们不再手动识别有问题的标签,而是通过拒绝产生简单几何图案的候选码字来进一步修改词典码生成算法。我们的指标是基于生成标签的2D模式所需的矩形数量。例如,实心图案仅需要一个矩形,而黑白黑色条纹则需要两个矩形(一个大的黑色矩形,较小的白色矩形绘制第二个)。我们的假设得到了本文稍后的实验结果的支持,它是具有高复杂性(需要许多矩形的标签模式)在自然界中的频率较低,从而假阳性率较低。

最后,我们通过对词典码生成算法再做一次修改,从经验上观察较低的假阳性得分。我们没有按照(0,1,2,3,…)的顺序测试码字,而是考虑(b, b+1p, b+2p, b+3p,…),其中b是一个任意数,p是一个大素数,每步保留最低n位。从本质上讲,这种方法生成的标签在每个位位置上都有较大的熵;另一方面,字典顺序有利于小值代码。这种方法的缺点是创建的可区分的代码较少:字典顺序往往将码字包装得相当密集,而更随机的顺序导致码字包装效率较低。

总而言之,我们使用一个词典系统,该系统可以为任何任意标签大小(例如3x3,4x4,5x5,6x6)和最小汉明距离生成编码。我们的方法明确保证了每个标签的所有四个旋转的最小汉明距离,并消除了低几何复杂性的标签。计算标签可能是一项昂贵的操作,但可以离线完成。小标记(5x5)可以很容易地在几秒或几分钟内计算,但大标记(6x6)可能需要几天的CPU时间。我们的软件已经计算并分发了许多有用的编码族;大多数用户不需要生成自己的编码族。

B. 误差校正分析

理论上的假阳性率很容易估计。假设识别了一个假四元组,并且位模式是随机的。假阳性的概率是被接受为有效标记的码字与可能的码字总数(2n)的比值。更激进的错误矫正会增加这个概率,因为它增加了被接受的码字的数量。在下面的36H10和36H15代码中说明了他不可避免的错误率的增加:

当然,36h15编码的更好性能是有代价的:与36h10的2221可区分码字相比,36h15编码只有27个可区分码字。我们的编码方案明显强于先前的方案,包括ARTag使用的方案和ARToolkitPlus使用的两种系统:我们的编码系统实现了所有码字对之间更大的最小汉明距离,同时编码更多的可区分id。图5和下表说明了最小汉明距离的改进

为了对可能损坏的码字进行解码,计算码字与码书中每个有效码字之间的汉明距离。如果最佳匹配的汉明距离小于用户指定的阈值,则报告检测结果。通过指定这个阈值,用户能够控制假阳性和假阴性之间的权衡。

我们的方法的一个缺点是解码过程在码本的大小上需要线性时间,因为必须考虑每个有效码字。然而,该系数非常小,与其他图像处理步骤相比,计算复杂度可以忽略不计。

对于一个给定的编码方案,较大的标签(即36位和25位)比较小的标签具有更好的编码性能,尽管这是有代价的。在所有其他条件相同的情况下,一个给定的相机可以读取36位标签的范围将小于同一相机可以读取16位或25位标签的范围。然而,由于4像素的边界开销,较小的标签在范围上的好处是相当有限的;使用16位标记而不是36位标记只能提高25%的检测范围。因此,只有在对范围最敏感的应用程序中,更小的标记才是有利的。

6.实验结果

A.实证实验

我们希望回答的一个关键问题是,我们对假阳性率的分析预测是否适用于真实世界的图像。为了回答这个问题,我们使用了一个标准的来自标签数据集的图像语料库[26],包含了180,829张来自各种各样的室内和室外环境的图片。由于这些图像都不包含我们的标签,我们可以通过使用这些图像来测量编码系统的假阳性率。

复杂度启发式的评估:我们首先希望评估我们的假设,即通过引入几何复杂度启发式来拒绝候选码字可以降低假阳性率。为此,我们生成了25h9家族的十个变体,其最小复杂度从1到10。在图6中,给出了每种复杂性的假阳性率,作为校正的最大误码数的函数。还显示了基于数据有效载荷是随机分布的假设的理论假阳性率。

图6. 经验性假阳性与标签复杂性的对比。我们的理论错误率假设所有码字在现实环境中偶然出现的可能性是相等的。我们的假设是,现实环境偏向于具有较低矩形覆盖复杂度的代码,通过选择具有较高矩形覆盖复杂度的码字,我们可以降低假阳性率。上面的图表验证了这一假设,它显示了LabelMe数据集(实线)中矩形覆盖复杂度从c=2到c=10的经验假阳性率。在c=9和c=10的复杂度下,假阳性率低于悲观模型预测的真实载荷是随机分布的。

与其他编码方案的比较:接下来,我们将我们的编码系统的假阳性率与ARToolkitPlus和ARTag所使用的系统进行比较。

使用相同的真实世界图像数据集,我们绘制了图7中五个代码的经验假阳性率。ARToolkitPlus的BCH编码方案的假阳性率最高,其次是ARTag。我们的36h10编码的最小复杂度为10,比这两个系统的性能都好。这是本文的核心结果。

图中显示了另外两种方案的数据:ARTP- Simple的性能与我们的36h10编码大致相同,但因为它的标签族有四分之一的可区分标签,因此它的假阳性率相应较低。为了便于比较,我们还包括了只有27个可区分码字的36h15族的假阳性率。不出所料,它的假阳性率极低。

B.定位精度

为了评估探测器的定位精度,我们使用射线示踪器生成已知ground truth的图像(示例见图8)。标签的真实位置和方向随机变化,并与检测到的位置进行比较。用针孔透镜和400像素的焦距生成的图像分辨率为400x400。

图8.示例合成图像。我们生成了射线追踪图像,以便为我们的评估创建真实的地面数据集。在这个例子中,标签距离相机10m,它的法向量指向距离相机30.3度的地方

定位精度的主要因素是目标的大小,该目标受标签的距离和方向影响。为了解耦这些因素,我们进行了两个实验。第一个实验是在固定距离的同时测量目标的定位精度。关键参数是目标法向量金额相机之间的夹角φ。当φ为0时,目标直接朝向目标;当φ接近π/2时,目标旋转出视线,我们预计性能会降低。我们根据定位精度和检测率来衡量性能。在图9中,我们可以看到我们的检测器明显优于ARToolkitPlus检测器:不仅方向和距离估计更准确,而且它可以在φ的更大范围内检测标签。

补充实验是保持φ = 0,并改变距离。我们预计,随着距离的增加,准确度会下降。在图10中,我们可以看到我们的检测器在50米范围内工作可靠,而ARToolkitPlus检测器的检出率在25米左右下降到50%以下。此外,我们的探测器提供了更精确的定位结果。

自然,由于噪声、光照变化和其他非理想情况(如镜头失真或标签非平面性),系统的实际性能将低于这些合成实验。尽管如此,我们系统的实际性能仍然非常好。

虽然我们的方法通常比ARToolkitPlus使用的方法在计算上更昂贵,但我们的Java实现在VGA分辨率图像(Intel Core2 CPU在2.6GHz)上以交互速率(30帧/秒)运行。由于基于图的聚类,更高的分辨率显著影响运行时。我们希望通过使用SIMD优化和正在进行的C端口中的加速图像处理库来显著提高速度。

7.结论

我们描述了一种视觉基准系统,它在以往方法的基础上有显著的改进。我们描述了一种新的边缘检测方法,使用基于图的聚类方法和一个编码系统,明显比以往的系统更强壮。还描述了一组基准,我们希望这将使未来评估其他方法更容易。与其他系统(除了ARToolkit之外)相比,我们的实现是完全开放的。我们的源代码和基准测试软件是免费的:APRIL Laboratory APRIL Laboratory : Autonomy * Perception * Robotics * Interfaces * Learning

AprilTag 2: 高效和健壮的基准检测

摘要-AprilTags和其他被动基准标记需要专门的算法来检测自然场景中其他特征中的标记。视觉处理步骤通常支配着标记检测管道的计算时间,因此即使是标记检测方面的微小改进也可以转化为更快的标记检测系统。我们将从实现和支持AprilTag系统中获得的经验教训整合到这个改进的系统中。

这项工作描述了AprilTag 2,一个完全重新设计的标记检测器,与原始的AprilTag系统相比,它提高了鲁棒性和效率。标签编码方案不变,保持编码系统固有的对假阳性的鲁棒性。新的检测器提高了性能,提高了检出率,减少了误报,减少了计算时间。改进的小图像性能允许使用抽取输入图像,从而显著提高检测速度。

1.简介

基准是为自动检测而设计的人工视觉特征,通常带有独特的有效载荷,以使它们彼此区别开来。尽管这些类型的基准最初是由增强现实应用[1]、[2]开发和普及的,但它们后来已被机器人社区广泛采用。它们的用途从ground truth到物体检测和跟踪,它们可以作为一种简化的假设来代替更复杂的感知。

基准的一些关键属性使它们在机器人应用中对姿态估计或目标跟踪非常有用(图1)。它们的唯一性和高检出率非常适合测试SLAM系统。固定基准标记可用于视觉定位或作为机器人运动的地面真值估计。安装在对象上的基准可用于识别和定位感兴趣的对象。

这项工作基于早期的AprilTag系统[3]。将AprilTags设计为带有编码二进制有效负载的黑白方形标记,是基于早期的ARTag[2]和ARToolkit[1]。AprilTag引入了一种生成二进制有效载荷的改进方法,保证了在所有可能的旋转下标签之间的最小汉明距离,使其比早期设计更健壮。标签生成过程是一个基于字典码的过程,具有最小复杂度的启发式,与类似位长的ARTag设计相比,经验证明标签生成过程可以降低假阳性率

根据机器人社区中AprilTag用户的反馈,我们确定大多数用户不接受具有解码错误的标签。在这些情况下,诸如支持恢复部分遮挡的标签边界之类的功能很少有用。必须权衡此功能与额外计算时间的成本和提高的误报率。

这项工作描述了一种提高AprilTag检测速度和灵敏度的方法,同时牺牲了检测部分封闭式标签的能力。结果表明,该方法比之前的检测方法更快,在不牺牲定位精度的前提下降低了误报率。本文的贡献是:

一种AprilTag检测算法,与之前的算法相比,提高了小标签的检测率,显示更少的假阳性,并减少了计算时间;一种新的标签边界分割方法,它是许多性能改进的原因,并且可以应用于其他基准检测器;实验表征了我们的探测器在真实和合成图像上的定位性能。

2.相关工作

最早的视觉基准系统之一是由ARToolkit[1]引入的,这是一个增强现实应用程序库。ARToolkit引入了黑色方块标记作为跟踪标记,它具有从已知比例的单个标记提供完整的6自由度姿态估计的优势。ARToolkit通过在正方形内嵌入任意图像模式来区分标签,并与已知模式数据库进行匹配以进行识别。随着可识别模式数据库的增长,匹配的计算成本和混淆不同模式的可能性也在增长。ARTag[2]试图通过引入2D二进制条码模式来纠正标签间混淆的问题。二进制条码允许纠正检测中的误码。一种改进的检测算法使用图像梯度来检测标签边缘,这是对ARToolkit的原始阈值方法的改进。项目幸存的分支包括ARToolkitPlus[5]和Studierstube Tracker [6]。

AprilTag[3]建立在ARTag的基础上,引入了一个基于字典编码的生成标签的系统。AprilTags保证在所有可能的旋转下标签之间的最小汉明距离,同时执行最小的复杂度约束,以减少自然图像中产生的假阳性率。定位精度比ARTag之前的技术水平有所提高。此外,AprilTag提供了一个流行的开源检测器实现,鼓励学术界采用它。

原始的AprilTag检测器使用图像梯度来检测高对比度的边缘。与之前使用朴素阈值的方法相比,这种方法具有对阴影和照明变化的鲁棒性。对部分闭塞标签的检测是可能的,首先将线段与梯度拟合,然后搜索形成四边形状或四边形的线段组合。分段优先方法的一个缺点是产生的候选四边形的数量很大。大量的处理时间花费在试图解码无效的候选四边形上。根据经验,AprilTag检测器花了大部分时间将线与梯度边缘拟合,其中许多都不是有效标记检测的一部分。

除了方形二进制标签,其他的标签编码方案也被提出。特别是,reacTIVision[7]使用了d-touch[8]引入的独特的拓扑标签识别系统。FourierTags[9]是径向对称标签,旨在通过平滑降级增加检测范围。符文标记[10]是根据组成基准标记的圆形点模式(不连接的椭圆环)命名的。选择点是为了在牺牲计算时间的情况下提供定位精度,同时对模糊、噪声和部分遮挡具有鲁棒性。Pi-Tag[11]使用交叉比来识别标记,注意到一条直线上四个点的交叉比在相机射影几何下是不变的。色谱仪[12]是AprilTags的扩展,其中混合了两个双色标签,以最大化CIELAB颜色空间中的梯度大小。与灰度图像相比,彩色空间转换减少了边缘的数量,从而加快了检测速度。

3.标签检测

我们的系统具有一个改进的四边形检测器,它可以在灰度图像中找到候选标签。然后对每个候选项进行解码,以确定它们是否是有效的AprilTag检测。该方法比以前的先进检测器更少的假阳性,同时可靠地检测到有效的未封闭的四边形,有助于降低整体的假阳性率

A.经验教训

对标记检测器的改进是受到了用户对常见用例的反馈的启发。我们了解到,在大多数部署中,部分遮挡标签的检测作用有限。遮挡标签通常有一个或多个误码,由于对假阳性率的影响,大多数用户禁用误码标签的解码。没有已知用户接受超过两个比特错误的标签,这使得解码算法更快。根据我们的经验,提高的检测速度是一个有利的权衡,而不是恢复部分遮挡的标签边界的能力。

B.自适应阈值

第一步是将灰度输入图像阈值化为黑白图像。一些阈值方法试图为整个图像找到一个全局阈值[13],而另一些方法则寻找局部或自适应阈值[14]。我们采用自适应阈值方法,其思想是在每个像素周围的区域中找到最小值和最大值。

我们不是计算每个像素周围的精确极值(最大值和最小值),而是将图像分成4x4像素的块,并在每个块中计算极值。为了防止极值差异较大的像素块边界之间产生伪影,我们在3x3周边像素块的邻域中找到极值,确保在计算相邻像素块的极值时最小有一个块重叠。然后使用平均值(max+min)/2作为阈值(图3B),将每个像素分配为白色或黑色的值。对于我们的应用,我们只需要区分形成标签的亮像素和暗像素,为了节省计算时间,我们将图像中对比度不足的部分(如图3b中灰色部分)排除在后续处理中。

C.连续边界分割

给定二值化的图像,下一步是找到可能形成标签边界的边缘。一种直接的方法是识别具有相反颜色邻居的边缘像素,然后形成连接的边缘像素组。然而,当标签边界之间的空白仅接近一个像素宽时,这种方法就失效了,这可能发生在物理上很小或很远的标记上。如果两个标记边界合并错误,则标记将无法被检测到。我们提出的解决方案是根据产生边缘的黑色和白色成分的身份分割边缘。

使用union-find算法[15](图3c)分割亮和暗像素的连接组件,该算法给每个组件一个唯一的ID。对于每一对相邻的黑白组件,我们将这两个区域边界上的像素识别为一个独特的集群。通过使用散列表,通过黑色和白色组件id为每个集群建立索引,可以有效地完成这种聚类,如图4所示。在前面提到的单个像素宽的白色组件分隔两个不同的黑色组件的情况下,我们通过允许相同的白色像素出现在两个结果类中来解决这个问题。

D.拟合四边形

一步是为每个无序边界点簇拟合一个四边形,将这些点划分为四个组对应线段,然而,计算使直线拟合误差最小的最优分区计算量很大。即使对于n个点的有序列表,也有O(n4)种可能的方法来划分这些点。我们的方法通过找到少量的角点来计算一个近似的分区,然后迭代所有可能的角点组合。

首先,点按角度以一致的绕其质心的顺序排序。这种排序允许我们将相邻点定义为排序点的范围。累积的第一和第二弯矩统计数据在经过这些点的一次通过中计算,使第一和第二弯矩能够在恒定时间内的任何点范围内计算。

角点是通过尝试将一条线拟合到相邻点的窗口中,并在窗口扫过这些点时找到均方误差函数的峰值来识别的。线拟合计算采用主成分分析(PCA)[16],其中椭圆拟合样本均值和协方差。最佳拟合线是对应于第一主成分的特征向量。使用预先计算的统计量,所有候选线拟合可以在O(n)时间内计算,其中n是点的数量。均方误差的最强峰值被确定为角点。

最后,我们遍历四个可判断角的所有排列,将线拟合到候选四边形的每一边。在这一步,我们选择四个角,产生最小的平均平方线拟合误差。预滤波被执行以拒绝糟糕的四变形拟合,例如那些没有至少四个角,其平均平方误差太大,或其角角偏离90太远。

四边形拟合步骤输出一组候选四边形用于解码(图3d)。注意,四边形检测器正确地发现环境中的许多四边形结构,包括镜面,开关和单个标签像素。解码步骤将四边形的内容与已知的码字进行比较,过滤掉错误的候选四边形。

E.快速解码

解码标记的一种直接方法是将检测到的代码(在其四种可能的旋转中)与标记族中的每个代码进行异或。标记被识别为与检测到的代码具有最小汉明距离的代码。然而,如果我们将纠正的误码数限制为2位或更少,则有可能枚举标记族中有效代码的两个误码内的所有O(n2)个可能代码。这些代码可以预先计算并存储在哈希表中,从而加快从O(n)到O(1)的比较的解码速度,其中n是标记族的大小。

F.边缘精细化

阈值图像在用于分割和四边形边界检测的同时,也会引入噪声。例如,阴影和眩光会在阈值设定后冲击边缘,导致生成的标签定位精度较差。我们提供一个可选的一种利用原始图像提取边缘的计算成本低廉的方法。

其思想是使用沿候选四边形边缘的图像梯度来拟合新的边缘,近似于原始AprilTag检测器的行为。沿着每条边缘,在均匀间隔的采样点上,我们沿着边缘法线对图像梯度进行采样,以找到梯度最大的位置。我们知道标签在内部是暗的,并且在四边形中的点的缠绕顺序,我们拒绝那些梯度不是预期符号的点(即来自有噪声的单个像素)。我们计算沿法线的点的加权平均值,用梯度幅度加权。沿着这些加权平均点的线拟合然后被用作四边形的边缘。四角被计算为这些线的交点。

如果只对检测标签感兴趣,则边缘细化不是至关重要的,尽管它可以帮助解码非常小的标签。然而,当标签用于位姿估计时,边缘细化步骤提高了定位精度。

图3. AprilTag检测器的中间步骤。使用自适应阈值化(b)对输入图像(a)进行二值化。将连通的黑白区域分割为连通的分量(c)。采用一种新的算法对元件边界进行分割,有效地将边界位于同一黑白区域的像素聚类。最后,四边形适合每一簇边界像素(d),糟糕的四边形适合和不可修改的标签被丢弃,并输出有效的标签检测(e)。

4.实验结果

A.假阳性率

AprilTags的一个关键优势是在自然场景中对假阳性检测的弹性。之前的检测器被证明有比理论上预期的更低的假阳性率,这主要是由于标签生成过程中的复杂性启发式。我们注意到,假阳性的数量不仅是标记码字本身的一个特征,也是检测器生成的候选四边形数量的一个函数。产生较少的候选四边形的检测器应该产生较少的假阳性。

我们使用与前一篇论文相同的LabelMe[17]数据集进行了一个实验,以比较新检测算法与前一篇论文的性能。此数据集由自然场景的图像组成,其中没有一个包含AprilTags。注意,通过允许最多2位的错误被纠正,误报的可能性被有意增加。假阳性数量的减少比我们仅从较低的四检检出率中所预期的要多(表I)。检测器的选择性也更强,因此假阳性率更低。对产生假阳性的图像的分析表明,噪声图像区域更有可能意外解码为有效码字。新检测中的连续边界分割算法很可能对这种增加的鲁棒性负责,因为它不太可能拟合一个候选四边形噪声。

B.定位精度

为了表征探测器的定位精度,我们使用理想的针孔相机模型生成射线跟踪图像,其中标签的真实位置和方向是已知的。一个已知边长的标签被放置在场景中,同时改变距离和方向。在第一个实验中,标签位置被约束在与摄像机中心的固定距离上,而标签的方向被固定平行于图像平面。估计距离的误差是根据标签到相机的距离绘制的(图5)。在第2次实验中,为了使相机的光轴通过中心,固定了标签的位置。标签的方向是随机生成的,它的法向量与摄像机轴成相同的角度。估计方向的误差是根据离轴角绘制的(图6)。

两次定位误差实验都是在相同的图像被缩小到原来大小的一半的情况下进行的。当使用破坏图像时,新检测器的性能大大优于旧检测器,而对未破坏图像的定位精度没有显著影响。当标签在仿真图像中移动得更远时,检测率证明了这一观察结果;新的检测器在检测小标签方面的能力要强得多(图7)。对输入图像进行削弱的能力是新检测器计算效率的关键之一。

我们试图解决的另一个问题是,仿真结果是否会转化为现实世界的表现。为了回答这个问题,我们收集了一个大的AprilTag马赛克在增加距离的真实图像。相机与马赛克的中心标签对齐,并垂直移动远离马赛克平面。groundtruth是用激光卷尺测量的。到中心标记的估计距离如图9所示。除了提高定位精度,新探测器还能在全距离范围内检测标签,而旧的探测器检测率迅速下降(图10)。

C.计算时间

在LabelMe实验中,我们记录了处理每张图像所需的尺寸和挂墙时间。两个标签探测器都在Intel Xeon E5-2640 2.5GHz核上以单线程模式运行。在数据集中的所有图像中,每像素的平均时间为新探测器每像素约0.254微秒,而旧探测器每像素为0.374微秒。对于一张640 x 480的图像,这分别相当于78毫秒和115毫秒。(绝对时间并不意味着具有代表性,只有在相互联系时才有意义。计算时间随处理速度和输入图像中四边形的数量而变化。) 正如我们上面所显示的,使用新的检测器抽取图像不会显著影响定位误差。通过2倍的抽取,新的检测器每像素只需要0.072微秒,或者对640 x 480的图像大约22毫秒。探测器的性能足够好,可以在功率相对较低的iPhone和类似的智能手机处理器上运行,为将AprilTags嵌入小规模应用程序提供了新的可能性

5.结论

本文介绍了一种新的AprilTag检测算法,该算法在原有检测的基础上进行改进,降低了误报率,提高了检测率,减少了检测所需的计算时间。这些改进使健壮的标记检测在计算有限的系统上可行,如智能手机,并扩展了标记跟踪在实时应用程序中的有用性。在iPhone app Store1中有一个免费的AprilTag检测器应用程序。去年发布的检测器实现是开源的,可以在我们的网站上免费获得。

基准标签的灵活布局

摘要-基准是人工特征,在计算机视觉中有多种用途,如目标跟踪和定位。我们提出了视觉基准系统的灵活标签布局的思想。与传统的方形标签相比,灵活的标签布局允许圆形、环形或其他需要的形状。布局灵活性的一个用途是增加标准方形标签的数据密度。此外,我们描述了一种比AprilTag 2和ArUco检测器更快、召回率更高的检测器,同时保持精度。

1.简介

基准是人为的视觉特征,被设计成易于检测。它们在计算机视觉、增强现实和机器人技术中都有应用,因为它们极大地简化了感知问题。流行的基准系统已经聚合到一个标准布局上,其易于检测的方形边界围绕着一个独特的数据位模式,如图2a所示。然而,这种形状并不是适用于所有应用程序的完美解决方案。

们发现传统的方形布局存在三个问题。首先,标准布局基准标签的很大一部分区域由标签的检测边界组成。这就为标签的数据位留下了更少的空间。其次,正方形标记不能有效地利用圆形对象上的空间。例如,AprilTag基准已经被用于跟踪从蜜蜂[1]到微型圆形机器人[2]的所有东西,这些方形标签就像一个正方形的钉子插入圆孔。第三,与传统布局相比,标记无人机着陆点等应用将受益于可在更大距离范围内检测到的标签。我们提出的系统通过允许标签的布局为每个应用程序自定义来解决这些问题。我们可以生成具有更高数据密度和更小边界的布局(图2b, c),圆形标签(图2e, f),或者自定义标签布局(图2f),在中间的空白区域放置更小的标签,允许这种递归标签在大范围的距离内被检测到。这种递归标签可用于标记四旋翼着陆地点,如图1。

图1. 一个四旋翼飞行器,使用双嵌套的AprilTag在其着陆垫上方进行定位。这个标签由一个大的递归标签和一个小的递归标签组成,这个小的递归标签粘贴在这个标签里面

制作灵活的标签布局的一个挑战是保持低的假阳性率,使基准的效用。以前的基准系统通过使用复杂性度量[3]来实现这些低速率,[3]预测标签与自然发生的模式相似的可能性。找到一个在许多标签布局都有效的复杂性度量在新标签家庭中保持健壮性是必要的。

我们提出的标签设计可以适应许多不同的视觉基准系统。为了与传统标签进行直接比较,我们将我们的工作整合到流行的AprilTag[4]基准系统中。近年来,AprilTag应用的一些例子包括为机械臂[5]提供groundtruth,校准相机-激光雷达系统[6],允许无人机跟踪汽车[7],以及跟踪建筑材料[8]。

我们提出了一个基准系统的评估方案,它允许在针对不同用例调整的检测器之间进行公平的比较。基准系统的两个关键指标是检测器的速度和标签可以被检测到的距离。这两个特性之间有一个自然的权衡,因为在检测器的算法中花费更多的时间来增加检测距离将导致检测速度的降低。我们表明,我们的检测器比以前的基准系统更快,有更长的检测距离。

这项工作的贡献包括:

我们引入了一个灵活的布局系统,用户可以通过该系统生成标签集,其中数据位按指定的形状排列(有一些限制);我们引入了一个适用于不同标签布局的复杂度度量,我们用它来生成低假阳性率的标签;为了比较基准探测器的速度和召回率,我们引入了一种评价方案。我们将我们的探测器与AprilTag 2和ArUco探测器进行比较。

2.相关工作

根据标签的形状,我们可以将基准系统分为两类:外部有黑白边框的方形标签;和其他形状的标签。

对于方形标签,最早的例子之一是AR- Toolkit[9],它使用黑色边框和标签内部的图像。ARTag[10]引入了2D条形码,使标签解码更容易。AprilTag[3],[4]引入了基于字典编码的标记生成方法,以减少假阳性检测和更高效的检测算法。ArUco[11],[12]使用混合整数线性规划生成标签和检测器也兼容ARTag和AprilTag。ChromaTag使用红-绿颜色梯度来加快检测过程[13]。虽然我们已经用单色标签实现了我们的布局,但同样的思想也可以应用到像ChromaTag这样的彩色标签上。

还有许多系统使用非正方形标记。CALTag[14]使用正方形标签网格来提高定位精度和遮挡鲁棒性。符文标签[15]使用了一个由圆形圆点组成的标签。傅里叶标记[16]提出了圆形标记,用标记的径向强度函数的频率编码比特。ReacTIVision[17]使用由它们的拓扑结构标识的不同形状的标记。

与各种各样的非方形标签布局相比,方形基准标签系统似乎已经聚合到相对标准的10x10布局上。AprilTag 2和ArUco都支持这种布局。特别是,目前没有一个基准系统使用非正方形的总体布局,同时保持来自这些标记系统的经过验证的正方形检测边界。

3.方法

我们提出了一种生成和检测标签的方法,具有灵活的(即用户指定的)布局。这包括降低假阳性率的复杂性度量以及具有高召回率的快速检测器。

A.灵活的布局

以前的方形基准系统只允许一个布局参数的变化:标签的大小。标签的形状和标签内数据位的位置总是相同的。我们的系统允许数据位的位置是任意的。我们的标签不再一定是正方形的,除了每个单独的位仍然由一个正方形的黑色或白色像素表示。

现在将标签的布局指定为字符串,每个字符对应于结果标签家族的一个像素。有四个选项:白色(“ W”),黑色(b'),数据('d')和忽略('x')。鉴于此字符串,我们的系统生成了带有该布局的标签家族。例如,我们的圆形布局使用布局字符串中的ignore (x)字符来创建一个近似圆形的光栅(见图3)。

图3. 将21h7圆形标记族的布局字符串覆盖到该标记族的示例标记上

布局必须具有四重对称,并包含用于检测标签的黑白边框。然而,数据位不需要停留在边界内部,边界的外部可以是黑色或白色。我们提出了一种新的标准布局,它将边界向内移动,并在边界的外围有一层数据位(参见图2b),无论总体标记大小如何,都给每个标记额外的16个数据位。虽然较小的边界可能会降低位姿精度和检测距离,但在许多应用中,数据密度的增加和相应的假阳性率的降低是可取的。我们建议将这些新样式的标签命名为uramaki,将旧样式的标签命名为maki,因为数据位和边界的位置类似于寿司卷中米饭和海藻的位置。

我们还可以指定一个自定义布局字符串,以便自定义标记形状、假阳性率和标记数量。例如,我们生成一个递归标记,用于标记四旋翼机的着陆点(参见图3f)。递归标记在标记的中心使用一组忽略位。在那个空间内,我们插入一个较小的标签,在那个较小的标签中,我们插入一个更小的标签。将从较长的范围检测到较大/中间的标签,但将超过较短范围的相机视野,这是在检测到中间/较小标签的时候。当然,在某些距离可能会检测到多个标签,在这种情况下,较大的标签可以提供额外的定位精度。

B. 复杂度度量

一些数据位模式更有可能在自然图像中偶然出现。例如,在任何深色矩形对象上都可能错误地检测到由全0组成的标记(显示为纯黑色)。之前的研究表明如果我们使用复杂度度量[3]只生成非常不可能的标记模式,则假阳性率可以降低。对于我们的灵活布局来说,这种特定的复杂性指标的选择并不明显是最好的。我们测试了以下三个指标,并基于我们的实验评估选择了Ising模型。

我们的第一个复杂度度量是矩形复杂度度量[3]的扩展。我们的方法呈现整个标签,包括边框,并计算渲染该图像所需的(可能重叠的)矩形的数量。对于带有x像素的标签布局,我们渲染图像两次,每次都将所有x位设置为白色或黑色,取两者的最小复杂度。

我们的第二个指标是渲染图像的Ising模型能量,忽略x位

这相当于标记中白色和黑色像素之间的总长度。这个指标来自于一种直觉,即现实世界中的物体往往在相邻区域之间具有强度的相关性。

我们的第三个指标是标签中连接组件的数量。这里的连接组件被定义为白色或黑色的4连接像素集。

C.检测速度

1. 分解:算法的拆卸步骤减小了图像的大小,从而增加了后期步骤的速度。选择拆卸因子允许在召回和速度之间进行权衡。

Apriltag 2使用了一个box过滤器进行拆卸。每个输出像素的值是通过在输出像素周围“box”中的多个输入像素的值来计算的,我们使用点采样替代,输出像素的值设置为输入图像中单个像素的值。

盒形滤波器更接近低通滤波器,通常在其他图像处理应用分解之前使用,而点采样在保留边缘方面更好,但容易产生混叠。我们通过实验确定点采样对标签检测效果更好。这是有意义的,因为标记检测管道的第一阶段依赖于检测输入图像中的边缘。

2.联合查找。通过减少对union-find数据结构的调用数量,查找连接组件的速度得到了提高。通过跟踪输入图像的值,我们可以避免已经合并的输入之间的冗余调用,见图5。此外,我们还会对太小的连接组件进行早期拒绝,因为我们知道它们无法产生可解码的标签。

3.拟合四边形。该算法将图像中检测到的轮廓拟合成四边形。轮廓中的第一个点按它们相对于轮廓边框中心的角度排序。然后,四条直线拟合轮廓中的点集。为了加快这一进程,已经做了一些改变。

计算每个轮廓中所有点相对于边界框中心的角度非常耗时,因为需要调用atan2。新的检测器不是通过计算角度来计算排序键,而是将该点所在的象限和该点在该象限内的斜率的组合来计算排序键。

使用216的值,因为给定典型图像的大小,它大于y/x的任何可能值。这将给出一个排序键,其结果与实际角度的排序顺序相同。

算法的下一部分将直线与轮廓相匹配。这需要计算许多不同的候选最小二乘线拟合的误差。之前的检测器计算直线的法线,以计算拟合误差的标准差。相反,我们将线拟合误差计算为我们拟合线的点的协方差矩阵的最小特征值。这删除了对sin/cos的调用,并在计算相同数量时仅添加了sqrt的调用。

4.标签检测。第一步是做透视校正。这需要找到标签的期望姿势和实际姿势之间的转换。换句话说,我们要解出3x3矩阵H:

下标I在标签的每个角的点上从1到4。之前的算法用SVD来求解这个9x9 Ax = 0方程。如果我们通过添加H33 = 1的限制来固定矩阵H的尺度,然后,我们可以以8x8 ax = b方程的形式编写此问题,并使用高斯消元求解。

限制H33 = 1固定了矩阵的尺度,但它也限制我们拟合H33 不等于 0的单应性。我们可以通过考虑在H33 = 0的情况下,图像如何转换标签的中心来证明这一限制。在这种情况下,我们有

换句话说,H33 = 0的单应性将标记的中心映射到图像平面上无穷远处的一个点,这种情况我们不关心,因为这样的标记一开始就不会被检测到。

D.检测小标签

AprilTag 3没有使用最近的相邻像素对每个标记中心的像素值进行采样,而是使用双线性插值来提取每个标记单元中心的像素值。

像素值被读入二维数组并锐化。这使得邻近较暗的较亮像素更有可能被读取为白色像素。锐化应该有助于抵消在非常小的标签图像中发生的模糊。例如,如果标记来自36h11族,则每个单元格中心的值将被读入6x6数组。然后用3x3拉普拉斯核锐化这个2D数组,然后尝试对这些修改后的值进行解码:

E.实验设置

我们通过使用LabelMe[18]数据集测量假阳性率来评估复杂性度量的选择。此数据集由不包含任何apriltag的自然图像组成,因此在此数据集上的任何检测都是假阳性。LabelMe有207920张图像,其中6090028个候选四边形被检测器提取为41h12族,6128551为21h7族。

不同的复杂性指标导致标签数量略有不同,所以我们使用前1500标签为每个41h12族和前35标签为每个21h7族,使这些实验结果在每一组标签族直接比较。

我们在一个数据集上评估了检测器的速度,该数据集由来自maki 36h11家族的160张标签图像和来自uramaki家族的160张标签图像组成。这些图片的分辨率为1296x964,是用点灰色变色龙相机拍摄的。

每个家庭的10个不同的标签被拍摄在距离相机20厘米到160厘米的距离上,每增加20厘米。在每个距离都有一个标签正面对着相机的图像和另一个标签旋转45度远离相机的图像。每个标签打印的尺寸为4厘米,穿过标签的外部界限。

我们比较了ArUco检测器使用DM FAST模式、旧的AprilTag 2检测器和新AprilTag 3检测器在maki 36h11图像上的性能,以及新AprilTag 3检测器在uramaki 41h12图像上的性能。我们将AprilTag 2检测器的抽取参数设置在1到17之间,AprilTag 3检测器的抽取参数设置在1到24之间,ArUco检测器的minMarkerSize参数设置在0到0.11之间,步骤为0.01。这些参数的选择是从最小值到每个检测器根本无法检测到任何标记的值。每个探测器的速度是在2.80GHz运行的Intel R CoreTM i7-7600U CPU上测量的。

图4. 通过在36h11标签的真实图像上运行算法,说明了检测算法的步骤。1)输入。2) Decimated,在这个例子中是2倍。3)阈值。4)通过联合查找算法连接组件。5)白色和黑色成分之间的轮廓。6)四边形符合轮廓。7)读取透视校正和数据位。8)数据位被锐化并最终解码

4.结果和讨论

A.灵活布局

我们使用新的灵活布局系统(以及新的复杂性度量,参见第IV-B小节)来生成几个新的标签族。第一个是新的uramaki AprilTag(见图2b),汉明距离为12。这个标签家族是9x9细胞大小,共有2115个标签,相比之下,老maki 36h11家族(见图2a)是10x10细胞大小,只有587个标签。将数据位放在标记的边界之外允许我们增加由数据而不是边界组成的标记的比例。需要强调的是,新的9x9 uramaki标签布局比传统的10x10 maki标签有更大的汉明距离和编码更多的标签,尽管它的整体单元格更少。如果以相同的物理尺寸打印,9x9标签将有更大的位间距,这将提高其检测范围。总之,标签性能的提高是本文的主要贡献。

我们用uramaki布局生成了一个10x10标签族,它有52个数据位,汉明距离为13,以及48714个唯一标签。这些带有更多可能标签的新标签族可以实现新的应用,如跟踪可变形物体或大规模部署机器人。

我们还制作了两个圆形标记族(参见图2d和图2e)。较小的圆形标记族有38个惟一标记,较大的圆形标记族有65698个惟一标记。对于将标签安装在圆形物体[1]、[2]上的应用,能够更好地利用可用空间可以显著提高最小汉明距离或不同标签的数量。

最后,我们生成了一个递归标签族,它在外面有一层数据位,中间有一个2x2的孔,其中没有数据位。我们从这个系列中打印出三个大小不同的标签,以便每个标签都可以放在另一个标签的中间。我们使用这个90.2x90.2 cm双嵌套标签来定位一个四旋翼飞行器,如图1所示。该标签允许在较长的距离内进行检测,从0.08到16.15到0.03米,甚至使用来自板载树莓派相机模块V2的低分辨率640x480图像。

B.复杂性度量

在LabelMe[18]数据集上比较了使用三种不同复杂度指标生成的标签族的假阳性率(见第III-E小节)。从表一和表二可以看出,对于41h12和21h7族,最佳的复杂度指标是Ising能量。对于21h7族,Ising能量度量降低了假阳性率,甚至低于比特均匀随机分布的预期率。因此在AprilTag3中,我们专门使用Ising模型。

C.检测器速度

AprilTag和ArUco探测器都具有允许在速度和召回率之间权衡的参数。对于AprilTag检测器,这是抽取因子,对于ArUco检测器,这是minMarkerSize。由于这些参数,很容易得出关于两个基准系统的相对性能的错误结论,因为它们可能是不同的调优。在包含各种不同大小标记的数据集上,我们对两个检测器的相关参数进行参数扫描。这种比较的结果如图7所示。我们可以看到,AprilTag 3检测器比AprilTag 2和ArUco检测器更快,召回率更高。

我们认为,在包含所有不同大小标签的数据集上,通过显示每个检测器的参数扫描来比较不同检测器的速度和召回率是重要的。

在基准检测器的主要权衡是召回之间,特别是小标签,和速度。以这种方式比较探测器允许在可能具有不同默认参数设置的系统之间进行公平的比较。我们还可以比较新探测器的性能时,使用Uramaki41h12标签族与使用maki 36h11标签族的新探测器。当对最大召回率进行调优时,使用这两种检测器的性能大致相当。然而,当调整为更高的速度(高抽取因子)时,41h12标记族的召回率低于36h11标记族。这可能是因为我们数据集中的所有标签都是在白色背景上拍摄的,这使得36h11标签有了一个有效的更大的外部边界。

D.检测小标签

使用与上面相同的数据集,我们可以更仔细地查看是什么原因导致检测器无法检测到标签。在图8中,我们可以看到每个检测器的召回率(参数设置为最大召回率)与标签距离的关系。检测器之间召回率的差异主要是由于检测器开始无法检测到标签的距离的差异。可以看出,APRILTAG 3检测器的性能优于Apriltag 2和Aruco检测器在检测小标签时的性能。

5.结论

本文提出了一种能够在多种布局中生成和检测基准标签的基准系统。我们引入了有用的布局,包括更高数据密度的方形标签、圆形标签和递归标签。我们展示了一个递归标签的例子,用于四旋翼飞行器在着陆点上方的定位。

我们对AprilTag的改进,包括在第III-C小节中描述的新标签族和性能改进,已经被合并到开源的AprilTag分发版中,由密歇根大学的APRIL实验室维护。https://april.eecs.umich.edu).

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

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

相关文章

【SpingBoot定时任务】Spring自带@Scheduled、异步多线程@Async、quartz框架 定时任务示例

文章目录springboot定时任务1、基于注解(Scheduled)2、异步多线程使用定时任务3、使用quartz实现定时任务使用Springboot整合Quartz定时任务框架springboot定时任务 在springboot环境中&#xff0c;实现定时任务有两种方案&#xff1a; 使用 Spring 自带的定时任务处理器 Sched…

程序员,阿里 P8java 大神讲的 Spring 大家族原理汇总,你确定不看?

之前分享的 java 核心面试知识点已经花了三篇文章的篇幅讲完了 java 多线程并发。作为程序员来讲&#xff0c;多线程并发要学的东西确实挺多的&#xff0c;那天跟阿里程序员朋友聊天的时候&#xff0c;被绝对技术碾压了&#xff0c;多线程并发里的内容&#xff0c;能够全面的讲…

太硬核!用大数据技术预测足球胜率

点个关注&#x1f446;跟腾讯工程师学技术引言| 足球作为世界第一运动&#xff0c;充满了速度和力量的结果&#xff0c;团队与谋略的对抗。人们也说&#xff0c;足球是圆的&#xff0c;恰恰也表明了足球比赛的不可预知性&#xff0c;一切结果都皆有可能。强如巴萨&#xff0c;也…

JavaScript 简单介绍和使用

JS 环境搭建 基本语法&#xff1a; 注释&#xff1a; // 单行注释 /* 多行注释 */ 输入输出语句 // 输入输出语句 document.getElementById("btn").onclick function(){// 输入语句var message prompt("输入信息")var insure confirm("是否确认…

FrameWork之旅 -- 源代码主要目录结构

本系列的阅读&#xff0c;前提你是一个Android开发者&#xff0c;而且是一个app开发&#xff0c;并且有一定的工作经验。本系列的学习&#xff0c;不会每个细节都说明&#xff0c;会把有“看点”的地方加以说明。 我们开发或者熟悉任何软件项目&#xff0c;都要了解包名结构或…

Python学习基础笔记十五——命名空间和作用域

从Python解释器开始执行之后&#xff0c;就在内存中开辟了一个空间。 每当遇到一个变量的时候&#xff0c;就把变量名和值的对应关系记录下来。 但是当遇到函数定义的时候解释器只是象征性地将函数名读入内存&#xff0c;表示知道这个函数的存在了&#xff0c;至于函数内部的变…

Vue 插槽(slot)使用

1 为什么使用slot 组件的插槽 组件的插槽是为了让我们封装的组件更加具有扩展性。 让使用者可以决定组件内部一些内容到底展示了什么。 举例&#xff1a; 移动开发中&#xff0c;几乎每个页面都有导航栏 导航栏我们会分装成一个插件&#xff0c;比如nav-bar组件 一旦有了…

vue父子组件间数据的双向绑定

在vue中数据的流向通常是单向的&#xff0c;但是实际开发中&#xff0c;存在父子组件都需要对父组件值进行更新的情况&#xff0c;vue提供了两种方法实现数据的双向绑定&#xff1a; 1、使用v-model指令 在父组件上 v-model 会利用子组件名为 value 的 prop 和名为 input 的…

第5 部分 EIGRP

目录 5.1 EIGRP 概述 5.2 实验1&#xff1a;EIGRP 基本配置 1. 实验目的 2. 实验拓扑 3. 实验步骤 4. 实验调试 &#xff08;1&#xff09;show ip route &#xff08;2&#xff09;show ip protocols​编辑 &#xff08;3&#xff09;show ip eigrp neighbors &#…

[激光原理与应用-31]:典型激光器 -3- 光纤激光器

目录 第1章 光纤激光器概述 1.1 什么是光纤激光器 1.2 应用 1.3 光纤激光器的结构组成 1.4 特点 1.5 优势 第2章 光纤激光器的类型 2.1 按照光纤材料的种类进行分类 2.2 按增益介质分类为&#xff1a; 2.3 按谐振腔结构分类 2.4 按光纤结构分类 2.5 按输出激光特性…

基于 ARM + FPGA 的 EtherCAT 主站设计及实现

为解决实时工业以太网协议 EtherCAT 应用于嵌入式主站控制器所产生的实时性和稳定性等问题&#xff0c;首先研究了 EtherCAT 主站控制器在 EtherCAT 网络控制系统中的功能需求&#xff0c;分析并提出了实现嵌入式 EtherCAT 主站的架构&#xff0c;然后针对上述架构设计了基于 A…

补知识点:Feign、Nacos配置中心(命名空间、配置分组)

一、Feign的应用 和前面的Feign笔记是一样的&#xff0c;不过这里更深刻的理解一下 使用Feign的整体步骤就分为以下几个步骤&#xff1a; 1、引入open-feign依赖坐标 2、编写一个接口&#xff0c;告诉springCloud这个接口需要调用远程服务 3、在启动类当中开启远程调用功能注解…

[附源码]计算机毕业设计JAVA学生宿舍管理系统

[附源码]计算机毕业设计JAVA学生宿舍管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

06_openstack之创建云主机和常见错误

目录 一、环境准备 二、创建云主机 三、常见错误 1、创建云主机时&#xff0c;主机状态显示“错误” 2、云主机控制台无法访问&#xff0c;报错1006 3、云主机创建错误&#xff0c;提示“找不到有效主机&#xff0c;原因是没有足够的主机可用” 一、环境准备 部署openst…

什么样的架构师修炼之道文档,能帮助大家修炼成为出色的架构师?

前言 时间飞逝&#xff0c;转眼间毕业七年多&#xff0c;从事 Java 开发也六年了。我在想&#xff0c;也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Ja…

Java基于springboot+vue的汽车销售购物商城系统

前言背景 随着我国的经济发展&#xff0c;人们的生活水平也有了一定程度的提高&#xff0c;汽车也逐渐由以前的奢侈品变成了很多人必须的代步工具&#xff0c;然而我国的很多汽车销售企业都没有成套的管理系统&#xff0c;通过我在假期的实习和一定时间的调查研究发现了传统的…

[附源码]Python计算机毕业设计Django教务管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Js逆向教程18-l参数分解

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程18-l参数分解 一、l参数分解 可以看到l是一个大数组。 里面有很多字节码 V[$_CAIAt(353)](gt[$_CAIAt(218)](o), r[$_CAIA…

【Java基础】· 集合习题详解

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

如何测试 LoRaWAN 全球频段

To be a sailor of the world, bound for all ports. 做世界的水手&#xff0c;游遍所有的港口。 背景 自 2015 年 LoRa 联盟创建 LoRaWAN 协议&#xff0c;经过 7 年长跑&#xff0c;到 2022 年国际电信联盟 (ITU) 正式批准 LoRaWAN 作为全球标准: ITU-T Y.4480“广域无线网…