opencv 相机内参标定函数cameraCalibrate

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

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

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

 开始解算

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

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

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

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

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

 

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

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

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenCV双目相机标定是指将两个相机内参、外参以及相对位置关系进行测量和计算,以便进行双目视觉测量、三维重建、立体匹配等工作。下面是OpenCV双目相机标定的步骤: 1. 准备标定板:首先需要准备一张标定板,标定板是一个黑白相间的平面,通常采用棋盘格样式。标定板需要在两个相机的视野范围内,拍摄多张不同角度、不同姿态的图片。 2. 拍摄标定板图片:使用两个相机标定板进行拍摄,保证两个相机同时获得标定板的图像。每个相机至少拍摄20张以上的标定板图片。 3. 提取角点:使用OpenCV中的函数标定板图片进行处理,提取出棋盘格内部的角点坐标。 4. 标定相机内参:使用OpenCV中的函数根据角点坐标计算出相机内参矩阵。内参矩阵包括相机的焦距、主点坐标、畸变系数等参数。 5. 标定相机外参:根据标定板图片的拍摄位置和姿态,使用OpenCV中的函数计算出相机的外参矩阵。外参矩阵包括相机的旋转矩阵和平移矩阵。 6. 计算双目相机相对位置:使用OpenCV中的函数将两个相机内参和外参进行合并,计算出双目相机的相对位置关系。 7. 评价标定结果:使用标定板的图片进行评价,计算出标定误差等参数,评价标定结果的准确性。 以上就是OpenCV双目相机标定的步骤,通过标定可以得到两个相机内参、外参以及相对位置关系,为后续的双目视觉测量、三维重建、立体匹配等工作提供基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值