是否有任何opencv函数来计算重投影点?

时间:2016-06-06 06:08:56

标签: opencv image-processing computer-vision camera-calibration reprojection-error

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

是否有内置的opencv功能,或者我们应该计算手动?

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

1 个答案:

答案 0 :(得分:-1)

projectPoints投影3D指向图像平面。

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

  

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

     

该算法执行以下步骤:

     
      
  1. 计算初始内部参数(该选项仅可用   对于平面校准模式)或从输入读取它们   参数。失真系数最初都设置为零   除非指定了CV_CALIB_FIX_K?的某些内容。

  2.   
  3. 估计最初的   相机姿势好像内在参数已经知道。   这是使用solvePnP()完成的。

  4.   
  5. 运行全球Levenberg-Marquardt   优化算法,以减少重投影错误,即,   观察到的特征点之间的平方距离的总和   imagePoints和预计(使用当前的相机估算值)   参数和姿势)对象点objectPoints。看到   projectPoints()了解详情。该函数返回最终结果   重新投影错误。

  6.   

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

<子> 2 J.Y.Bouguet。 MATLAB校准工具。 http://www.vision.caltech.edu/bouguetj/calib_doc/