1

我正在使用密歇根大学 AprilTag 库来定位对象,并正在寻求满足我的定位准确性目标的建议。我正在使用0.4 MegaPixel 相机,在距离 0.1-1.5 米远的大约 7.5 厘米宽的标签上。我使用 MatLab 来校准我的相机内在函数和失真系数。

期望的结果 我希望能够将标签定位到 5 毫米以内的精度。

观察到的结果 当我相对于标签移动相机时,定位结果会有所不同。我离标签每移动 100 厘米,我发现标签在世界上的投影位置漂移了大约 10 厘米。

我的本地化准确性的合理期望是什么?我可以采取哪些措施来减少我观察到的漂移?

4

2 回答 2

2

如果漂移主要出现在 TVEC 的 Z 分量并且误差或多或少呈线性增加,则肯定表明校准的焦距(相机矩阵中的 fx 和 fy)已关闭。

尝试以下操作:

  • 检查您的校准板:网格的大小是否正确?确保您的打印机不会缩放原始文件
  • 确保校准板固定在坚固、平坦的表面上
  • 再次校准并检查 fx 和 fy 的值是否已更改(相机矩阵中的条目 (0,0) 和 (1,1))。
  • 使用至少 50 张图片,改变板的角度并在校准前删除所有显示运动模糊的图片
  • 还要检查您的检测参数:您可以尝试激活para.cornerRefinementMethod = cv2.aruco.CORNER_REFINE_APRILTAG以提高拐角精度(如果您使用的是 c++,请相应地调整命令)。
于 2020-03-16T07:46:44.603 回答
0

(评论太长,所以我必须将其作为另一个答案发布:)这将取决于传感器的像素大小和镜头的焦距(这会将您的实际像素大小“缩放”为“投影”像素大小)。由于有效分辨率随距离而变化,一个安全的估计是使用 1.5 m 有效像素值。就像素而言,我不相信低于 0.3 px 的标记角精度,因为在旋转标记时似乎存在亚像素精度问题(请参阅我的未决问题:详细了解 openCV aruco 标记检测/姿势估计:亚像素精度)。倾斜标记也会降低精度,因为确定的旋转精度(姿势的 rvec)通常只有几度以内。如果出现小角度(例如仅倾斜 2°),则姿势可能无法反映这一点,因此标记将显得更小,因此距离将被高估。在平面设置中(如果您不使用广角镜头),您可以使用 > 5 MPx 的传感器获得 5 mm 的精度。但考虑到标记的倾斜和旋转,我不确定它是否足够......

于 2020-05-12T11:40:07.113 回答