一、简介
在许多计算机视觉应用程序中,姿势估计非常重要:机器人导航,增强现实等等。 该过程基于发现真实环境中的点与其2d图像投影之间的对应关系。 这通常是一个困难的步骤,因此通常使用合成或基准标记来简化操作。
最受流行的方法之一是使用二进制方形基准标记。 这些标记的主要优点是单个标记可提供足够的对应关系(四个角)来获得相机的姿势。 而且,内部二进制编码使它们特别强大,从而允许应用错误检测和纠正技术。
通常,我们将AprilTags和ArUco标记用于:
- 相机校准
- 物体尺寸估算
- 测量相机和物体之间的距离
- 3D位置
- 目标对象方向检测
- 机器人与自主导航
等等
AprilTag是一种视觉基准系统,类似的视觉基准标签还有:ArUco、ARTag、TopoTag等。而AprilTag是改进的ARToolkit、 ARTag。因其对旋转、光照、模糊具有良好的鲁棒性,因此被广泛应用于目标跟踪、室内定位、增强现实等领域。在AR,机器人,相机校准领域广泛使用。通过特定的标志(与二维码相似,但是降低了复杂度以满足实时性要求),可以快速地检测标志,并计算相对位置。
April Tag的种类家族(family)有以下几种:
TAG16H5 → 0 to 29
TAG25H7 → 0 to 241
TAG25H9 → 0 to 34
TAG36H10 → 0 to 2319
TAG36H11 → 0 to 586
ARTOOLKIT → 0 to 511
二、AprilTag过程
AprilTag内容主要包含三个步骤。
第一步,是如何根据梯度检测出图像中的各种边缘。
第二步,即如何在边缘图像中找出需要的四边形图案并进行筛选,AprilTag尽可能的对检测出的边缘检测,首先剔除非直线边缘,在直线边缘进行邻接边缘查找,最终若形成闭环则为检测到一个四边形。
最后一个步,便是如何进行二维码编码和二维码解码,编码方式分为三种,其黑边色块长度分别为8,7,6三个色块长度(不同编码方式其点阵的个数不相同,根据选择编码方式不同有8 ∗ 8 , 7 ∗ 7 , 6 ∗ 6 可选,其编码方式由使用者对物体进行标定时确定,根据编码方式的不同,生成不同的内点坐标),对于解码内容,要在检测到的四边形内生成点阵列用于计算每色块的值,再根据局部二值模式(Local Binary Patterns)构造简单分类器对四边形内的色块进行分类,将正例色块编码为1将负例色块编码为0,就可以得到该二维码的编码。得到编码以后再与已知库内的编码进行匹配,确定解码出的二维码是否为正确。
三、ArUco
ArUco标记是一种二进制正方形的基准标志物,可用于相机的姿态估计,该标准板主要的优点是检测快速,简单且稳健。
ArUco标记,由宽的黑色边框和确定其标识符(id)的内部二进制矩阵组成。 黑色边框有助于其在图像中的快速检测,并且二进制编码允许其识别以及错误检测和纠正技术的应用。 标记大小决定内部矩阵的大小。 例如,标记大小4x4由16位组成。
ArUco模块包括检测这些不同类型的标记板的方法,以及使用它们进行姿态估计和相机标定的工具。
此外,ChArUco功能将ArUco标记与传统棋盘相结合,以实现简单而多功能的角点检测。该模块还包括检测ChArUco角点并将其用于姿态估计和相机机标定的功能。
在opencv中aruco有以下几个模块:
(1)Detection of ArUco Markers:检测单个ArUco标记板:基于单个ArUco标记板的基本检测和姿态估计。
(2)Detection of ArUco Boards:基于ArUco标记板的检测与姿态估计
(3) Detection of ChArUco Corners检测ChArUco标记板角点:检测ChArUco标记板的角点
(4)Detection of Diamond Markers:基于ChArUco标记板的检测与姿态估计
(5)Calibration with ArUco and ChArUco:使用ArUco和ChArUco标定板进行相机标定
(6)ArUco module FAQ : 关于ArUco 模块的常见且有用问题的汇总