AprilTag由两个主要部分组成:标签检测器和编码系统。
检测器的工作是估计图片里标签可能的位置,换句话说,检测器试图找到比其外部具有更暗的内部的四边区域(“quad”)

标签检测器

A、检测线段

方法是监测图像中的线。计算每个像素的梯度方向和大小,并将像素聚类成具有相似梯度方向和大小的分量。
AprilTag:强大而灵活的视觉基准系统
AprilTag:强大而灵活的视觉基准系统
聚类算法类似于Felzenszwalb的基于图的方法:创建一个图,其中每个节点代表一个像素。在相邻像素之间添加边,边权重等于像素在梯度方向上的差异。然后根据增加的边权重对这些边进行排序和处理:对于每个边,我们测试像素所属的连接分量是否应该连接在一起。给定分量n,我们将梯度方向的范围表示为D(n),将幅度范围表示为M(n)。换句话说,D(n)和M(n)是标量值,分别表示梯度方向和幅度的最大值和最小值之间的差值。在D()的情况下,必须小心处理2Π(pai)环绕。但是,由于有用边的跨度远小于Π度,因此这很直截了当。给定两个分量n和m,如果满足以下两个条件,我们将它们连接在一起:
D(n ∪ m) ≤ min(D(n), D(m)) + KD / |n ∪ m|
M(n ∪ m) ≤ min(M(n), M(m)) + KM / |n ∪ m|
这些条件改编自Felzenszwalb并且可以直观地理解:D()和M()的较小值表示具有很小的分量内变化的分量。如果它们的结合大致与单独采集的簇一致,则两个簇连接在一起。通过KD和KM参数允许适度增加分量内变化,但随着分量变大,这会迅速缩小。在早期迭代期间,K参数基本上允许每个分量“学习”其簇内变化。在我们的实验中,我们使用KD = 100和KM = 1200,尽管该算法在很宽的范围内都能很好地工作。
AprilTag:强大而灵活的视觉基准系统
同时这种基于梯度的聚类方法对图像中的噪声敏感:即使适量的噪声也会导致局部梯度方向发生变化,从而抑制了分量的增长。这个问题的解决方案是对图像进行低通滤波。
聚类操作完成后,使用传统的最小二乘法将线段拟合到每个连接的分量,按照其梯度幅度对每个点进行加权。
AprilTag:强大而灵活的视觉基准系统

B、quad检测

下一个任务是找到形成4边形状的线段序列,即quad。
方法是基于深度为4的递归深度优先搜索。
在深度一,我们考虑所有线段。在深度为2到4的情况下,我们认为所有的线段开始“足够接近”前一个线段结束的位置并且遵循逆时针缠绕顺序。通过调整“足够接近”阈值来处理遮挡和分割错误的稳健性:通过使阈值变大,可以处理边缘周围的显着间隙。我们的“足够接近”的阈值是线的长度加上五个额外像素的两倍。

C、Homography和extrinsics估计

计算标签的位置和方向需要额外的信息:相机的焦距和标签的物理尺寸。

有效负载解码

最后的任务是读取有效载荷字段中的位。我们通过计算每个位域的标签相对坐标,使用单应法将它们转换为图像坐标,然后对得到的像素进行阈值处理来完成此操作。为了对明暗分布(不仅可以从标签到标签,也可以在标签内变化)保持稳健,我们使用空间变化的阈值。
具体来说,我们建立了“黑色”像素强度的空间变化模型,以及“白色”模型强度的第二个模型。我们使用标签的边框来包含白色和黑色像素的已知示例,以学习此模型。
AprilTag:强大而灵活的视觉基准系统
我们使用以下强度模型:I(x, y) = Ax + Bxy + Cy + D
该模型具有四个参数,可以使用最小二乘回归轻松计算。

编码系统

接着上面的有效负载解码,编码系统的工作就是确定它是否有效。 编码系统的目标是:

  • 最大化可区分码的数量
  • 最大化可检测或纠正的位错误数
  • 最大限度地减少误报/标签间混淆率
  • 最小化每个标签的总位数(以及标签的大小)

实验结果

定位精度的主要因素是目标的大小,它受标签的距离和方向的影响。
预计随着距离的增加,准确度会降低。估计探测器可以可靠地工作到50米。当然,由于噪声,光照变化和其他非理想性(例如透镜畸变或标签非平面性),系统的真实性能将低于这些合成实验。

相关文章: