ARTAG论文笔记

ARTag

  ARTag是一个具有2002个标记的平面标记系统,在检测与识别方面改进了ARToolkit的性能,拥有一个更大的库,并且不需要使用图案文件。ARTookit的最大弊病在于它会错误识别出不存在的标记,并且容易混淆任意的两个标记。ARTag中保留了使用带有内部图案的方形边框的范例,但内部图案的处理被数字方法所取代。
  分析ARToolkit的特点,可以看出对其功能的贡献最大的是边界仅使用黑色和白色,在标记中仅使用两个极端的反射率可以避免许多图像捕获问题和灰度非线性问题。 这个二元决策在ARTag中扩展,从仅定义边界到定义内部模式。
  ARToolkit方形边框对于AR非常有用,因为它有四个突出的角落。 四个点允许完全提取相关标记到相机姿势的6自由度(DOF)势(假设相机焦距已知)。 ARTag旨在包含ARToolkit和Datamatrix的成功元素,并充分利用两者,并为AR制作一个最小但功能强大的系统。
ARTag的主要特征是使用了两个极性的方形边框(白色为黑色或黑色为白色)和6 x 6方形网格划分内部。 整个标记为10 x 10单位,边界厚度为2个单位,内部留下36个单元格以携带信息。 每个单元只有黑色或白色,并带有一位数字数据。 因此,一旦确定了边界,就可以从标记的相机图像中提取36位字。

一、四边形检测

  图像中存在许多四边形边框,有的可能属于标记的外边界。在ARTag系统中,用基于边缘的方法来检测到这些边框,边缘像素被阈值化并链接成段,这些段又被分组为“四边形”。 四边形的四个角用于创建单应映射以对标记内部进行采样。 图3显示了一幅图像,及其提取的线段,四边形和内部可能包含ARTag标记码的四边形
在这里插入图片描述
  基于边缘的方法比其他系统(如ARToolkit)的灰度区域阈值处理方法提供了一些性能改进。 在ARToolkit中,找到低于指定阈值的连接像素组,并且具有四边形边界的那些用作潜在标记。 具有灰度强度阈值的空间导数而不是简单的灰度强度阈值允许在较少受控的照明条件下找到标记。 实际上,一个标记边缘的“白色”程度可能比另一侧的“黑色”程度更暗,并且仍然可以检测到标记。
  ARTag基于边框方法的另一个好处是在存在遮挡的情况下仍能检测标记轮廓的能力。在图3中,两个标记(ID 103,104)具有侧面断裂或角落缺失但仍然通过几乎相遇的线段的启发式检测。 图3(右下)显示了用虚线绘制的遮挡四边形,表明它们不是从四个分段完整的分组中获得的。
  为了进一步降低假阴性率(false negtive rate),ARTag在三个等级上搜索四边形。 线段提取和分组为四边形工作使用的原始图像的尺寸;而重采样工作使用的是宽度和高度的一半的图像,以及在四分之一尺寸的重新采样版本上完成的。 这允许检测可能模糊并且不具有高于阈值的空间导数的边界。

二、数字处理

  一旦定位了四边形边界轮廓,就用6×6网格对内部区域进行采样,并为其分配数字符号“0”或“1”。 应用的阈值来自四边形周围的强度。 用于验证和识别标记的所有后续处理以数字方式执行。 从2D 6×6数字符号阵列获得四个36位二进制序列,每个二进制序列都代表标记的一种旋转方式,在解码过程中只验证四个序列中的一个。标记中编码的36位二进制序列使用数字方法封装10位ID。 额外的26位提供冗余以减少错误检测和识别的可能性,并提供四种可能旋转的唯一性。 循环冗余校验(CRC)和前向纠错是用于识别36位代码是否是ARTag标记集的一部分并提取其ID的数字方法。
  这些方法使用称为GF-2或Modulo-2数学的数字代数,并涉及使用逻辑XOR,卷积和反卷积运算符的加法概念,以及生成在该基数2数系统中作为素数的多项式。 除了描述实际上用一个操作者操纵短二进制符号序列时,超出本文的范围解释,ARTag标记解码中最重要的一个是反卷积/除法运算符。 读者可以参考[10],数字通信和存储文本以及标准文档以获取更多信息。 在解码ARTag标记的两个阶段中,数字代码被特别选择的二进制多项式除,其中使用了被除数和余数。
  该系统可以抽象地描述为通信系统,其中尝试通过ARTag视觉软件接收的图像捕获介质发送10位ID。 从ID创建标记模式是编码阶段,并且从提取的36位代码中识别ID是解码阶段。
  在创建要在环境中安装的2D图案时,编码有三个主要阶段,当查找ARTag标记时,它们的操作反向执行。 数字编码操作如下面的图4所示。
  标记图案的打印,标记的反射,照明,场景中的其他对象,包括噪声的照相机的光捕获和数字图像形成以及标记的透视姿势都构成“通信介质”。 在从图像中提取6×6网格的二进制符号之后,执行图5中概述的数字解码步骤,并且确定ARTag标记存在与否的判定,并且如果存在则报告ID。
  XOR操作用于对代码进行一些加扰,因为期望用户使用较低的数字0,1,2,…等,并使ID为0可用。 CRC-16多项式(在数据存储和通信领域中也称为CRC-CCITT) x 16 + x 12 + x 5 + 1 x^{16}+ x^{12} + x^5 + 1 x16+x12+x5+1是通过将XOR’d ID与二进制字符串10001000000100001卷积来应用的解码器中的去卷积类似于产生被除数和余数的除法运算。 余数必须为0,否则代码被认为不是来自ARTag标记,只有 1 2 16 \frac{1}{2^{16}} 2161可能的二进制序列通过此测试以防止找到相机视野中找到的那些并不是ARTag标记的四边形物体。
  前向纠错(FEC)解码块是ARTag系统中最复杂的数字处理组件,并允许检测和修复输入36位代码中的几个错误位。 这会增加误报率(false positive rate)但通过识别与正确代码接近的代码来减小误负率(false negative rate),这可能是由于诸如不完美阈值,检测到的四边形边界未对准,图案内的镜面反射,部分遮挡和一般图像噪声。
在这里插入图片描述
  ARTag标记库中没有两个ARTag ID号,682和1706,将库大小减小到2046.原因是子ID 682是一个退化的情况,导致包含全0的36位代码。 这将转化为完全黑色或白色的内部,这将经常在环境中被错误地检测到。 通过去除44个ID来进一步将文库缩减为2002个标记,以改善标记间混淆率,如[4]中所述。

三、误正标记检测(False Positive)

  标记检测系统的一个失败的情况是错误地检测出一个不存在的标记,而ARToolkit系统的一个很大的不足就是它存在一个较高的False Positive Rate。
  ARToolkit通过相关性识别标记,而ARTag使用数字技术。对于ARTag,内部模式被采样并作为数字代码处理,并且具有可以在数学上描述的低误报率(false positive rate)。 1001 ∗ 4 = 4004 1001 * 4 = 4004 10014=4004个数字代码映射到从四个方向之一观察的正确的ARTag标记。该模式中有36个点采样,所以需要在 2 36 = 68.7 2^{36} = 68.7 236=68.7亿个数字代码随机选取填充四边形。当N = 2(N = FEC可以校正的位数,在ARTag的第一个版本中N = 2)时,每个有效的ARTag 36位代码将从 1 + 36 + 36 ∗ 35 / 2 = 667 1+36+36*35/2 = 667 1+36+3635/2=667 的36bit码中映射,产生 4004 ∗ 667 = 2.67 4004*667 = 2.67 4004667=2.67百万个36位模式内部,这将导致ARTag报告标记的存在。因此,从随机36位数进行误报检测的概率是 2.67 ∗ 1 0 6 68.7 ∗ 1 0 9 = 0.0039 % \frac{2.67*10^6}{68.7*10^9}=0.0039\% 68.71092.67106=0.0039%或大约 1 26000 \frac{1}{26000} 260001。因此,非标记四边形有0.0039%的可能产生误报(false positive)标记事件,假设模式内部的可能性相等(通常情况下不会给出更罕见的概率)。环境中的大多数天然(非标记)四边形是纯黑色,或者包含比ARTag图案内部少得多的熵。
  用几个不包含任何ARToolkit或ARTag标记的图像序列进行比较实验,以收集假阳性统计数据(ARToolkit是作者唯一可用的现代标记系统,理想的研究也将测试Intersense圆形基准点[9] ]和ARVIKA项目的标记5)。 ARToolkit代码和ARTag库都被编译成一个程序,因此它们都可以看到完全相同的图像帧。 表1显示了使用来自几个摄像机的视频进行标记检测的结果,这些摄像机在我们的实验室中移动,其中没有ARToolkit或ARTag标记存在,因此任何标记检测都是假阳性。 电影也被用作图像序列,以获得比我们实验室的视频片段更多随机和变化的图像。
  观察表1中的结果,可以简单地提高阈值c.f. 因子为0.90从而避免了ARToolkit的所有误报。 但是,在相同条件下,c.f. 必须降低到0.75才能获得实际可用的假阴性率
  在实验中我们并没有一个ARTag的误报(false positives),但是我们要知道这个概率并不是0,是上文说的 1 26000 \frac{1}{26000} 260001。然而,这是在发现四边形假设所有36位代码的相等可能性之后的概率。 然而环境中的大多数四边形形状大多数都是暗的或全白的,并且可能不像ARTag模式那样具有全频率内容(所使用的卷积码的伪随机性质给出了空间频率的广泛使用)。
在这里插入图片描述

四、标记的唯一性:减少标记间混淆

  除了低错误检测率之外,良好的标记系统应该在标记之间具有低混淆率。 用户应该高度确信一个标记不会被误认为是另一个标记。 在现实世界中,人们不可能有100%,但是通过适当的标记系统设计,可以最小化这种情况发生的概率,理想情况是在实际用时不会出现这种情况。 Owens et al. [2]探讨了ARToolkit标记与均方误差(MSE)方法之间的相似性,并提出了一个基于空间频率的标记库,试图解决这个问题。
  可以通过考虑将一个数字符号代码误认为另一个代码的概率来分析ARTag的标记间混淆率。 衡量两个二进制代码之间可以是否可以轻易混淆的方法是计算汉明距离[6],它是两个数字序列之间差异的总和(例如,序列01001和00011之间的汉明距离为2))。 可以使用所有标记之间的汉明距离的知识来计算标记间混淆事件的概率,所述标记集在所有标记之间进行旋转并且可选地考虑镜像。
  通过求取给定标记错误地识别为该组中的每个其他代码的概率的总和,给出数字代码在一组代码中可能被误认为另一代码的概率。 为了找到给定标记可能被误认为该集合中的任何其他代码的概率,为每个标记添加四个(仅用于旋转)或八个(旋转和镜像)概率。 可以通过将所有相等汉明距离的情况分组在一起并且从总汉明距离直方图计算概率来将概率加在一起。
  为了计算标记A可能被误认为另一个的概率(在系统中使用的集合中),可以使用等式1中的误码率p。 p(n)和q(n)分别是错误和正确检测n比特的概率。 如果比特错误是不相关的和独立的事件,则n比特错误地切换的概率是 p ( n ) = p n p(n) = p^n p(n)=pn而不切换的概率是 q ( n ) = ( 1 − p ) n q(n) = (1 - p)^n q(n)=(1p)n,因此我们将概率重写为Eqn。2。
P ( ! = A ) = ∑ n = 1 36 H D ( n ) ⋅ p ( n ) q ( n ) P(!= A) = \sum_{n=1}^{36}HD(n)\cdot p(n)q(n) P(!=A)=n=136HD(n)p(n)q(n)   (1)
P ( ! = A ) = ∑ n = 1 36 H D ( n ) ⋅ p ( n ) ( 1 − p ) 36 − n P(!= A) = \sum_{n=1}^{36}HD(n)\cdot p(n)(1-p)^{36-n} P(!=A)=n=136HD(n)p(n)(1p)36n  (2)
  标记间混淆的概率现在分为两部分; 系统相关概率(噪声等),以及由汉明距离直方图表示的标记本身的独特性引起的分量。 通过这种方式,我们可以通过优化该直方图来优化(即降低)任何系统的标记间混淆的概率。 我们寻求降低低值的频率。 直方图可以向右推出的越多(如本文所示,如果在本文中绘制),并且较低的是前几个(低值)非零值,则对于标记集的混淆的免疫力越强。
  对于每个候选符号A,该汉明距离直方图将是不同的。如果对于集合中的所有标记将直方图加在一起,则可以使用等式1或2来找出该集合中的任何标记将被误认为任何其他标记的概率。 集合中的标记,给出标记间混淆的单一概率。
  当应用等式1时,前几个非零项(对于低的n)将主导计算的概率。 这定义了要优化的总标记集的度量:在所有四个可能的旋转位置中测量每个可能标记与所有其他标记之间的汉明距离,将其聚合成汉明距离的直方图,并尝试减小最小非零值和 直方图第一部分下的区域。
  这是考虑到所有可能的标记组合之间的旋转和反射来完成的,以选择最佳的FEC多项式,并从2046的可能范围中选择2002 ID的子集[4],并在推荐列表中对它们进行排序以帮助创建 使用少于完整2002标记的应用程序。
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值