我很难用相机估计Aruco标记的位置。在我用DICT_6X6_250字典和上面有4个20x20厘米标记的木板进行的测试中,我在6米处测量,误差为20-30厘米。我需要更精确的测量。
这个错误率正常吗?我能做些什么来提高准确性?
通常,Aruco存在歧义问题,您可以在此处找到。
我正在做一些关于基准标记的研究,这个错误率很正常。标记的姿态估计往往在x和y旋转以及z平移中存在误差。
然而,也有一些因素会影响Aruco姿态估计的准确性。以下是一些有助于提高姿态估计准确性的要点,您应该考虑这些要点:
- 第一种是使用高分辨率的Camara。如果标记在图像平面中很小,则姿态估计将不那么准确
- 其次,我建议使用
cv2.SolvePnP()
,而不是使用cv2.aruco.estimatePoseSingleMarkers()
,因为它允许您使用不同的透视N点算法来计算姿势。你可以在这里阅读更多关于SolvePnP的信息,也可以在这里了解不同的方法 - 对于Aruco检测
cv2.detectMarkers()
,使用亚像素角细化方法 - 最后,您可以使用姿势优化方法来改进估计的姿势(此处(。这种方法减少了估计姿态的重投影误差,因此应该获得更好的姿态估计精度
姿态的不准确可能源于亚像素定位中的不准确。
几乎所有的亚像素定位算法和所有人都假设物理上存在的东西(边、角(与如何映射到像素强度之间存在线性关系。
网络摄像头1提供伽马压缩数据,而不是原始线性传感器值。此外,网络摄像头喜欢";锐化";图片。两者都会影响亚像素定位。
1并非网络摄像头独有。这适用于所有不是";原始传感器";文件格式。所有JPEG、PNG。。。图像是伽马压缩的,所有视频也是如此。