0

从给定的世界点(原始坐标)、内在矩阵、旋转矩阵和平移向量计算重投影点、重投影误差和平均重投影误差的过程是什么?

是否有任何内置的opencv函数或者我们应该手动计算?

如果我们必须手动计算,那么获得重投影点的最佳方法是什么?

4

1 回答 1

0

projectPoints将 3D 点投影到图像平面。

calibrateCamera返回最终的重投影误差。calibrateCamera从校准模式的多个视图中找到相机的内在和外在参数。

该函数估计每个视图的内在相机参数和外在参数。该算法基于 [Zhang2000] 1和 [BouguetMCT] 2。必须指定每个视图中 3D 对象点的坐标及其对应的 2D 投影。这可以通过使用具有已知几何形状和易于检测的特征点的对象来实现。这样的对象称为校准装置或校准模式,OpenCV 内置了对棋盘作为校准装置的支持(请参阅 参考资料 findChessboardCorners())。

该算法执行以下步骤:

  1. 计算初始内在参数(该选项仅适用于平面校准模式)或从输入参数中读取它们。除非指定其中一些,否则失真系数最初都设置为零CV_CALIB_FIX_K?

  2. 估计初始相机位姿,就好像内在参数已知一样。这是使用solvePnP().

  3. imagePoints运行全局 Levenberg-Marquardt 优化算法以最小化重投影误差,即观察到的特征点与投影(使用相机参数和姿势的当前估计)对象点之间的总平方 和objectPoints。详情请参阅 projectPoints()。该函数返回最终的重投影误差。

1张正友. 一种灵活的相机校准新技术。模式分析和机器智能,IEEE Transactions on,2000,22.11:1330-1334。

2 J.Y.布格。MATLAB 校准工具。http://www.vision.caltech.edu/bouguetj/calib_doc/

于 2016-06-06T06:44:59.780 回答