繁体   English   中英

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

[英]OpenCV stereo camera calibration: support mixed camera models (normal + fisheye)?

在 OpenCV API 中,有cv::stereoCalibrate()cv::fisheye::stereoCalibrate()用于标定普通立体相机和鱼眼立体相机。 对于这两个 API,立体相机对使用相同的相机模型。 换句话说,两个立体相机都必须为cv::stereoCalibrate()使用普通相机模型(6 个径向畸变系数 + 2 个切向畸变系数)或为cv::fisheye::stereoCalibrate()使用鱼眼相机模型(4 个鱼眼畸变系数)。

有什么方法可以通过 OpenCV 校准立体相机对,其中一个使用普通相机模型,另一个使用鱼眼相机模型?

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

  1. 通过 API cv::calibrateCamera()cv::fisheye::calibrate()校准每个相机的内在函数。
  2. 取消扭曲两个相机的所有图像点通过 API cv::undistortPoints()cv::fisheye::undistortPoints()使用以前的内在函数。
  3. 通过 API cv::stereoCalibrate()cv::fisheye::stereoCalibrate() (使用CALIB_FIX_INTRINSIC标志仅计算外部参数) ,使用上一步未失真后的图像点和两个相机的“完美内部参数”校准立体对的外部参数). 具有完美本征的相机意味着它的相机矩阵是 [1 0 0; 0 1 0; 0 0 1] 并且具有零失真(失真系数全部为 0)。

    注意:在此步骤中使用cv::stereoCalibrate()cv::fisheye::stereoCalibrate() ,它们将产生相同的外部函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM