AprilTag是一个视觉基准库,在AR,机器人,相机校准领域广泛使用。通过特定的标志(与二维码相似,但是降低了复杂度以满足实时性要求),可以快速地检测标志,并计算相对位置。
示例图片
官网:https://april.eecs.umich.edu/software/apriltag.html
列出了如下三篇文章
1. AprilTag: A robust and flexible visual fiducial system(2011)
2. AprilCal: Assisted and repeatable camera calibration(2013)
3. AprilTag 2: Efficient and robust fiducial detection(2016)
对于如下示例图片,检测步骤分为以下几步:
1 检测线段
计算每个像素的梯度方向和大小,通过聚类将梯度大小方向相似的聚集到一起,
聚类的方法与Felzenszwalb基于图的图像分割方法类似,首先创建一个图,每个节点代表一个像素。如果相邻两个节点梯度方向差和边的权重相等,那么就增加这条边。然后讲这些边挑选出来,对边的权重进行递增处理:对于每条边,我们测试像素点属于的连通分支是否应该加入合并。(个人感觉比较像LSD直线检测)
这部分最为耗时,超过总运行时间的一般。通过一个
2 检测正方形
找到直线段后,下一步就是检测正方形。整个任务转化为一个递归的、深度为4的深度优先搜索。第一层时,依次把每条线短作为起始线段。第二层至第四层,去找和这个起始线段终点(默认每条线短都是逆时针方向)足够近的线段。通过调整阈值来增加最闭合区域和分割误差的鲁棒性。
使用一个二维查找表来加速寻找距离某个点最近的线段。通过这种优化方式、以及之前拒绝逆时针旋转方向的方形、或者使用某条线段超过1次,方形检测部分仅占总运行时间的一小部分。
3 单应性及外估计(Homography and extrinsics estimation)
利用Direct Linear Transform(DLT)算法计算单应性矩阵。