ArUco姿势估计中的不稳定值

问题描述 投票:0回答:1

我正在尝试使用Aruco标记找到相机的方向。从旋转矩阵提取的欧拉角在某一点之外是不稳定的。随着相机的距离从标记增加,相机的偏航角值仅是不稳定的。标记上的“Z”轴翻转。欧拉角是抖动的,每一帧都不一样,需要时间来稳定。如何获得相机和标记之间的偏航角和距离的可靠值?我试图找到移动相机的姿势w.r.t静态标记。我实现了solvePnP和solvePnPRansac都产生了不稳定的结果。从estimatePoseSingleMarker转换旋转矢量后获得的旋转矩阵似乎没有达到某一点但失去稳定性。我该怎么做?谢谢

c++ opencv aruco
1个回答
4
投票

通常,您无法从单个标记获得准确的相机姿态估计。解决方案是添加更多标记。您可以使用标记板或更稀疏的标记模式。

当单个标记距离摄像机越来越远时,有几个因素会降低标记姿势估计的准确性。

  1. 标记的投影尺寸变得更小并且由像素网格更加量化。通过逆透视分割来估计距离,因此随着距离的增加它变得不那么准确。
  2. 透视畸变减少,接近平行投影。在平行投影中,标记具有两个同样可行的方向,可以交替返回(参见https://en.wikipedia.org/wiki/Necker_cube)。标记相对于相机的方向也是显着的 - 在标记(正投影)的更垂直视图中,与倾斜视图相比,标记的俯仰和偏转是模糊的。随着距离减少透视失真会使这种效果变得更糟,并且会导致计算出的相机姿势偏向,俯仰和横向移动。
  3. 如果标记中的像素数量较少,则传感器噪声和量化等小尺度效应会变得更加显着,从而降低帧与帧之间的稳定性并导致抖动。

正如您所发现的那样,姿势估计在单个标记的特写,斜视图中可以正常工作,因为给予solvePnP()的投影点相距很远并且具有较大的透视失真。通过添加更多标记,您始终可以获得solvePnP()的理想投影点。

© www.soinside.com 2019 - 2024. All rights reserved.