我使用OpenCV和MATLAB校准了一个棋盘格相机。在OpenCV和MATLAB中,我分别得到了均值重投影误差为0.489和0.187。从结果看,MATLAB更精确。但我的顾问认为MATLAB和OpenCV都使用相同的BOUGET算法,应该报告相同的误差(或接近)。是这样吗?有人能解释一下MATLAB和OpenCV相机校准方法之间的差异吗?谢谢!
您的顾问是正确的,MATLAB和OpenCV都使用基本相同的校准算法。然而,MATLAB使用Levenberg-Marquardt非线性最小二乘算法进行优化(请参见文档),而OpenCV使用梯度下降。我猜这解释了大部分的投影误差差异。此外,MATLAB和OpenCV使用不同的算法来检测棋盘格。