我用同一个相机从两个位置拍摄了 aruco board 上的一个物体。我在工作前没有失真的图像和校准过的相机。我在一个镜头上取一个红点并计算3d线,它对应于这个点3D空间,然后将其投影到另一个图像:
问题是另一个图像上的线和点之间存在一些差异(~5px-15px)。我还观察到 opengl 生成的图像存在同样的问题,所以这似乎不是我的相机的问题。我使用这段代码来检测板的位置:
MarkerMapPoseTracker MSPoseTracker; // tracks the pose of the marker map
MSPoseTracker.setParams(camParam, theMarkerMapConfig);
MSPoseTracker.estimatePose(ret.markers);
是否有可能以某种方式增加耐受性?我还发现了具有某种容差参数的函数:
bool estimatePose(Marker& m, const CameraParameters& cam_params, float markerSize, float minErrorRatio = 4 /*tau_e in paper*/)
但我不知道如何将此参数传递给 MSPoseTracker.estimatePose。如果我相信至少理论上可以做到这一点,我该如何提高精度?