OpenCV立体摄像机标定:支持混合摄像机模型(普通+鱼眼)?



在OpenCV api中,有cv::stereoCalibrate()cv::fisheye::stereoCalibrate()分别用于校准普通立体相机和鱼眼立体相机。对于这两个api,立体相机对使用相同的相机模型。也就是说,对于cv::stereoCalibrate(),两种立体摄像机必须使用正常摄像机模型(6个径向畸变系数+ 2个切向畸变系数),对于cv::fisheye::stereoCalibrate(),两种立体摄像机必须使用鱼眼摄像机模型(4个鱼眼畸变系数)。

是否有办法校准立体相机对,其中一个使用普通相机模型,另一个使用鱼眼相机模型通过OpenCV?

对于任何发现这个问题有帮助的人来说,OpenCV不支持混合相机模型(例如,一个是正常的,另一个是鱼眼的)的立体校准(即通过stereoCalibrate()API)。但是,这可以通过以下步骤完成:

  1. 通过APIcv::calibrateCamera()cv::fisheye::calibrate()校准每个相机的内在特性。
  2. 通过APIcv::undistortPoints()cv::fisheye::undistortPoints()为两个相机使用先前的intrinsic来消除所有图像点的扭曲。
  3. 使用前一步未失真后的图像点校准立体对的外部和"完美的内在"; 通过APIcv::stereoCalibrate()cv::fisheye::stereoCalibrate()(CALIB_FIX_INTRINSIC标志仅计算外部性)。具有完美本征的摄像机,其摄像机矩阵为[1 0 0];0 0 0;0 0 1],失真为零(失真系数均为0)。

    注意:在这一步中使用cv::stereoCalibrate()cv::fisheye::stereoCalibrate()并不重要,它们将导致相同的外部外观

相关内容

  • 没有找到相关文章

最新更新