我正在尝试使用 OpenCV 校准我的相机。我正在使用以下指南:
https://docs.opencv.org/4.8.0/d4/d94/tutorial_camera_calibration.html
但是我发现相机矩阵得到的结果在很大程度上取决于校准图像距相机的距离。应该是这样吗?指南中似乎没有讨论图像应该距离相机多远。
最终我想使用在调用solvePnP时通过校准获得的相机矩阵来获取物体的姿态。如果相机矩阵取决于校准网格的位置,那么solvePnP计算的结果也将取决于它。
我错过了什么?
相机校准本质上是一个数据拟合过程,类似于直线与数据的最小二乘拟合。良好的拟合需要足够的高质量数据来很好地约束模型。否则,最小量的噪声就会影响参数。我怀疑用远处的棋盘进行校准时会得到非常不确定的结果,因此棋盘只覆盖了图像的一小部分。 一些提示:
cv::calibrateCamera()
的扩展重载,它提供了stdDeviationsIntrinsics
中参数不确定性的估计。根据经验,与参数值相比,这些不确定性应该很小。