姿态估计在许多计算机视觉的应用中都是十分重要的环节,在机器人导航、增强现实等场景中广泛运用。这个过程主要基于找到点在真实3d环境中的坐标和2d图像中的对应坐标。这通常是一个比较困难的步骤,因此运用通用的标记物或者标准标号来使这个问题简单一点。
使用二维码记号通常是一个常用的途径之一。这标记的主要优势是单个记号就提供了获取相机姿态的足够对应信息。同时,记号的内部二进制编码使得标记在错误检查和修正等方面保持一定的稳定性。
Aruco模块主要基于 ArUco library,是一个二维码识别中被广泛使用的库。
Markers and Dirctionaries
一个ArUco标记外围都有一组黑色边框,同时内部有着确定该标记ID的二维矩阵组合而成。黑色的边框能加速标记在图像中的检测速度,内部的二维编码能唯一识别该标记,同时进行错误检测和错误修复。标记的大小确定了内部矩阵的大小,例如4x4大小的标记有16个bit(5x5就有25bits?)。
Some examples of ArUco markers:
尤其需要注意到的是,标志在环境中通常存在旋转,然而,检测的过程需要确定旋转的初始方向,因此,每一个角点在二维编码的过程中就会被唯一确定。
标记字典是一组被用来进行特殊应用的标记,它大大简化了每个marker二维码列表。字典的主要属性就是字典的大小和标志的大小:
- 字典大小:合成字典的marker的数量 (50 100 250 1000)
- 标志大小:marker的大小(bits 16