我正在尝试使用Aruco标记找到相机的方向。从旋转矩阵提取的欧拉角在某个点以上不稳定。随着摄像机到标记的距离增加,摄像机的偏航角值变得不稳定。标记上的“ Z”轴翻转。欧拉角抖动,在每帧中都不相同,并且需要花费一些时间才能稳定下来。如何获得偏航角和相机与标记之间的距离的可靠值?我试图找到一个带有静态标记的移动摄像机的姿势。我实现了solvePnP和solvePnPRansac都产生不稳定的结果。从estimatePoseSingleMarker转换旋转向量后获得的旋转矩阵 似乎可以达到一定程度,但会失去稳定性。我该怎么办?谢谢
通常,您不会从单个标记获得准确的相机姿态估计。解决方案是添加更多标记。您可以使用标记板,也可以使用更稀疏的标记图案。
随着单个标记器距离相机越来越远,一些因素在起作用,以降低标记器姿势估计的准确性。
标记的投影尺寸变得更小,并且通过像素网格更加量化。距离是通过反透视除法估算的,因此随着距离的增加,其精度会降低。
透视变形减少,接近平行投影。在平行投影中,标记具有两个同样可行的方向,可以交替返回(请参阅https://en.wikipedia.org/wiki/Necker_cube)。标记相对于相机的方向也很重要-在标记的更垂直视图(正投影)中,与倾斜视图相比,标记的俯仰和偏航不明确。随距离减小的透视变形会降低此效果,并导致计算出的摄影机姿势偏摆,俯仰和横向移动。
如果标记中的像素数量较少,则诸如传感器噪声和量化之类的小规模影响将变得更加明显,从而降低帧与帧之间的稳定性并引起抖动。
正如您所发现的,姿势估计在单个标记的特写,倾斜视图中可以正常工作,因为为solvePnP()提供的投影点相距较远且透视变形较大。通过添加更多的标记,您将始终具有用于solvePnP()的理想投影点。