-
论文地址
chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F%2Fapril.eecs.umich.edu%2Fmedia%2Fpdfs%2Folson2011tags.pdf -
Apriltag是改进的ARToolkit、 ARTag
- ARToolkit的劣势
- 每个模板都是独立的,所以校正操作非常慢。
- 每一个合适正交直线的图像创建模板是非常困难的。
- tag获取的时候通过用户设定的阈值得到一个简单的二值化图像。易受光照影响,而且识别不了有适当遮挡的标签边缘。
- ARTag对ARToolkit的改进
- 使用图像梯度来获取tag,这样对光照的鲁棒性更强。
- ARTag算法不开源
- ARToolkit的劣势
-
AprilTag主要组件
-
Tagdetector
-
估计图像中可能的标签位置(内黑外白的四边形区域),为了方便识别标签的黑白边缘特征。尽可能多的检测出所有可能的标签。
-
线段检测:计算每个像素点的梯度方向和幅值,并把具有相似梯度幅值和方向的像素聚类。这种方法可以在一半的图像分辨率提升4倍的速度。
在相邻像素之间添加边缘,边缘的权重等于梯度方向上的像素差。然后这些边缘按照增加的边缘权重进行排序和处理:对于每条边缘,我们测试像素所属的连接组件是否应该连接在一起。
此算法对噪声敏感,甚至适当的噪声会导致局部梯度不同,约束部件增长。可以对图像进行低通滤波处理。这个滤波会模糊一些有用的信息,tag的边缘本质上是一个很大的特征,所以滤波不会导致信息丢失,建议设置值为0.8。
使用加权最小二乘法拟合直线段。
线段的方向通过梯度的方向来决定,因此线段的左边是暗部,右边是亮部。线段的方向在线段的中部短的垂直槽口来直观表示,注意这些槽口总是指向亮得区域。
-
四边形检测:基于一个深度为4的递归深度优先搜索算法,每一层搜索添加一个边缘到四边形。在第一层深度,考虑所有的线段。在第二层到第四层,考虑所有的线段从“完全闭合”之前线段结束的地方开始,并且服从一个逆时针缠绕顺序。
通过线段检测已经得到了一组有向线段,四条线段组成一个候选四边形。
检测到的四边形包括:a.三个标签边缘加上一条纸张边缘;b.一个有效的载荷位。这两种情况因为编码无效将被丢弃。
-
-
计算tag相对于相机的距离与角度
-
单应性变换和外参估计
通过DLT算法计算得到单应性矩阵(3*3大小),将一个点从2D标签坐标系映射到2D图像坐标系。
计算标签相对于相机的位置和方向需要附加信息:a.相机的焦距;b.标签的物理尺寸。
3 * 3的单应矩阵(由DLT计算)可以写成3 * 4的相机投影矩阵P(通过相机标定得到)和外参矩阵E的乘积。s是未知比例因子
展开:
这样就容易得到Rij和Tk了,除了未知的比例因子s。
然而, 由于旋转矩阵的列必须都是单位幅值,我们可以限制 s 的大小。我们有两列的旋转矩阵, 所以我们计算 s 为他们幅值的几何平均值。标记s可以重新获得通过请求在相机前的tag。即Tz < 0。旋转的第三列矩阵可以通过计算交叉乘积来恢复两个已知列, 因为旋转的列矩阵必须是正交的。
-
-
编码系统
-
从有效负载字段中读取位。我们通过计算每个字段的tag相对坐标系,利用单应矩阵将它们转换为图像坐标,然后对结果像素进行阈值化。我们建立了 “黑色” 像素的强度的空间变化模型, 以及第二个模型的强度"白色" 模型。我们使用标签的边框, 它包含白色和黑色像素的已知示例。
使用阈值解码数据位,根据编码系统,决定获取的四边形是否有效。
-
编码系统的目的:
- 最大化可区分代码的数量
- 最大化可以检测器校正的比特错误数
- 最小化误报/标签混淆速率
- 最小化每个标签的总位(并因此提出标签)
-
-
-
这只是我对这篇论文浅显的理解,欢迎大家在评论区提出疑问,相互交流共同学习!
-
AprilTag 2: Efficient and robust fiducial detection(2016)论文理解
[计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解
最新推荐文章于 2023-03-15 21:36:44 发布