opencv 相机内参标定函数cameraCalibrate

       在做相机方面的工作,需要进行内参标定,之前一直是在用matlab中camera_calibrate做的,需要拍摄多张标定板图片另外还需要安装matlab软件,工程操作有误可能带来后续计算位姿误差,因此在做内参标定优化,发现内参标定原理一直理解不够深,就去找了下opencv中cameraCalibrate函数的源码来看下,做个记录

     函数定义在opencv\opencv-master\opencv-master\modules\calib3d\src\calibration.cpp中,从cv::calibrateCamera函数进入,几层封装,找到cv::calibrateCameraRO函数开始看解算实现

opencv 相机内参标定函数cameraCalibrate_第1张图片

 下面会跳过一些变量定义和检查,主要看实现过程,这里找到计算的函数接口cvCalibrateCamera2Internal

opencv 相机内参标定函数cameraCalibrate_第2张图片

 开始解算

1. initialize intrinsic parameters & LM solver 初始化参数和LM求解器

opencv 相机内参标定函数cameraCalibrate_第3张图片

 cvInitIntrinsicParams2D解算内参矩阵作为优化初值

opencv 相机内参标定函数cameraCalibrate_第4张图片

  求内参时先用cvFindHomography获取单应性矩阵,再用cvSolve进行线性求解(参考张正友内参标定推导[图像]张正友论文翻译(2)_祥的专栏-CSDN博客_张正友论文)

opencv 相机内参标定函数cameraCalibrate_第5张图片

2. initialize extrinsic parameters 获取外参初始值  RT

opencv 相机内参标定函数cameraCalibrate_第6张图片

 3. run the optimization 用LM进行求解 这里暂时没看到雅可比矩阵在哪求解的(待续)

opencv 相机内参标定函数cameraCalibrate_第7张图片

 

LM接口及变量介绍参见LM 优化算法 opencv中的实现_xuelangwin的博客-CSDN博客

这里相机模型的jaccobi矩阵推导参考相机标定过程中,根据得到的标定参数进行重投影计算的推导过程(推导公式对后续LM算法中计算Jacobian矩阵有重要作用)_肉夹馍不放香菜的博客-CSDN博客

你可能感兴趣的:(相机标定,计算机视觉)