我试图使用Aruco标记找到摄像机的方向。从旋转矩阵中提取的欧拉角在某个点之外是不稳定的。随着摄像机距离标记的增加,摄像机的偏航角值只是不稳定。标记上的“Z”轴翻转。欧拉角抖动,在每一帧中并不相同,需要时间来稳定。我如何获得一些可靠的偏航角值和相机与标记之间的距离?我试图找到一个静态标记的运动相机的姿态。我实现了solvePnPransac和solvePnPransac,结果都不稳定。旋转矩阵是从estimatePoseSingleMarker转换旋转向量后得到的。在某个点上看起来不错,但失去了稳定性。我该怎么做呢?谢谢
2条答案
按热度按时间xqk2d5yq1#
一般来说,你不会从单个标记中获得准确的相机姿态估计。解决方案是添加更多的标记。你可以使用标记板,或者更稀疏的标记图案。
随着单个标记物远离相机,若干因素会降低标记物姿态估计的准确性。
1.标记的投影尺寸变得更小,并且通过像素网格更加量化。2距离是通过逆透视分割来估计的,因此随着距离的增加,它变得不那么精确。
1.在平行投影中,标记具有两个相等的可行方向,这两个方向可以交替返回(参见https://en.wikipedia.org/wiki/Necker_cube)。标记相对于摄像机的方向也很重要-在标记的更垂直的视图中(正投影),标记的俯仰和偏航是模糊的,与倾斜视图相比。随着距离的减少,透视失真使这种效果更糟,并且将导致计算的摄像机姿态偏航、俯仰和横向移动。
1.如果标记中的像素数量较少,则诸如传感器噪声和量化之类的小尺度效应变得更加显著,从而降低了帧与帧之间的稳定性并导致抖动。
正如你所发现的,姿态估计在单个标记的特写、倾斜视图中工作得很好,因为给solvePaddle()的投影点相距很远,并且有很大的透视失真。通过添加更多的标记,你总是有理想的投影点给solvePaddle()。
iibxawm42#
由于其他Angular 在算法中是依赖的,请确保检查滚动值是否相应地改变。这将是最负责z翻转,所以只需进行基本过滤以避免噪音。