首页 > 其他分享 >双目标定中stereoCalibrate()函数

双目标定中stereoCalibrate()函数

时间:2023-10-09 09:33:51浏览次数:41  
标签:CvMat 双目 FIX 矩阵 标定 相机 CALIB stereoCalibrate CV

用于标定立体相机

函数形式

C++:
cvStereoCalibrate( const CvMat* object_points, const CvMat* image_points1,
const CvMat* image_points2, const CvMat* npoints,
CvMat* camera_matrix1, CvMat* dist_coeffs1,
CvMat* camera_matrix2, CvMat* dist_coeffs2,
CvSize image_size, CvMat* R, CvMat* T,
CvMat* E CV_DEFAULT(0), CvMat* F CV_DEFAULT(0),
CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria(
CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,1e-6)),
int flags CV_DEFAULT(CV_CALIB_FIX_INTRINSIC));
参数
o objectPoints– 校正的图像点向量组.
o imagePoints1–通过第一台相机观测到的图像上面的向量组.
o imagePoints2–通过第二台相机观测到的图像上面的向量组.
npoints--角点数
o cameraMatrix1– 输入或者输出第一个相机的内参数矩阵
o distCoeffs1– 输入/输出第一个相机的畸变系数向量
o cameraMatrix2– 输入或者输出第二个相机的内参数矩阵
o distCoeffs2– 输入/输出第二个相机的畸变系数向量
o imageSize– 图像文件的大小——只用于初始化相机内参数矩阵。
o R– 输出第一和第二相机坐标系之间的旋转矩阵。
o T– 输出第一和第二相机坐标系之间的旋转矩阵平移向量
o E–输出本征矩阵。
o F–输出基础矩阵。
o term_crit– 迭代优化算法终止的标准。
o flags–
不同的FLAG,可能是零或以下值的结合:
§ CV_CALIB_FIX_INTRINSIC要确认cameraMatrix? and distCoeffs?所以只有R, T, E , 和F矩阵被估计出来
§ CV_CALIB_USE_INTRINSIC_GUESS根据指定的FLAG优化一些或全部的内在参数。初始值是由用户提供。
§ CV_CALIB_FIX_PRINCIPAL_POINT在优化过程中确定主点。
§ CV_CALIB_FIX_FOCAL_LENGTH确定和 .
§ CV_CALIB_FIX_ASPECT_RATIO优化 . 确定的比值.
§ CV_CALIB_SAME_FOCAL_LENGTH执行以及 .
§ CV_CALIB_ZERO_TANGENT_DIST设置每个相机切向畸变系数为零并且设为固定值。
§ CV_CALIB_FIX_K1,...,CV_CALIB_FIX_K6在优化中不改变相应的径向畸变系数. 如果设置CV_CALIB_USE_INTRINSIC_GUESS , 使用distCoeffs矩阵提供的系数。否则将其置零.
§ CV_CALIB_RATIONAL_MODEL能够输出系数k4,k5,k6。提供向后兼容性,这额外FLAG应该明确指定校正函数使用理性模型和返回8个系数。如果FLAG没有被设置,该函数计算并只返回5畸变系数。
说明:
该函数计算了两个摄像头进行立体像对之间的转换关系。如果你有一个立体相机的相对位置,并且两个摄像头的方向是固定的,以及你计算了物体相对于第一照相机和第二照相机的姿态,(R1,T1)和(R2,T2),各自(这个可以通过solvepnp()做到)通过这些姿态确定。这意味着,给定予(:数学:t_1),就可以计算(:数学:t_2)。你只需要知道第二相机相对于第一相机的位置和方向。
除了立体的相关信息,该函数也可以两个相机的每一个做一个完整的校准。然而,由于在输入数据中的高维的参数空间和噪声的,可能偏离正确值。如果每个单独的相机内参数可以被精确估计(例如,使用calibratecamera()),建议您这样做,然后在本征参数计算之中使用CV_CALIB_FIX_INTRINSIC的功能。否则,如果一旦计算出所有的参数,它将会合理的限制某些参数,例如,传递CV_CALIB_SAME_FOCAL_LENGTH and CV_CALIB_ZERO_TANGENT_DIST,这通常是一个合理的假设。
与calibratecamera()类似,该函数最大限度地减少了从相机中所有可用的视图的所有点的总的重投影误差。该函数返回的重投影误差最终值。

原文链接:https://blog.csdn.net/b5w2p0/article/details/10210821

标签:CvMat,双目,FIX,矩阵,标定,相机,CALIB,stereoCalibrate,CV
From: https://www.cnblogs.com/Jack-Elvis/p/17750731.html

相关文章

  • 必须收藏!双目立体匹配算法:Patch Match Stereo实用详解教程
    计算机视觉life聚焦计算机视觉、机器人SLAM、自动驾驶、AR领域核心技术。公众号本文对立体匹配算法:PatchMatchStereo实用进行了教程详解。作者丨3D视觉开发者社区01简介我们知道,现有立体匹配算法一般被分类为局部算法、全局算法和半全局算法,其中局部算法和半全局算法是应用最为广......
  • SLAM 深度估计 三维重建 标定 传感器融合
    经常有粉丝问视觉/激光/SLAM、三维重建等方向的学习路线,这里我再总结给大家,如下所示:随着最近几年智能机器人、自动驾驶、AR/MR等领域的快速发展,企业对3D视觉算法及SLAM算法需求越来越强烈,该领域迎来了爆发式发展。按照应用不同我们把3D视觉及SLAM算法分为如下方向:视觉深度估计视觉(......
  • YOLO v5与双目测距结合,实现目标的识别和定位测距
    YOLOv5与双目测距结合,实现目标的识别和定位测距1、首先安装YOLOv52、数据集的标定3、双目测距代码的单独运行调试4、YOLOv5与双目测距的代码的结合5、最终识别测距效果6、代码下载调试运行7、最终演示视频欢迎各位点赞投币收藏哦......
  • YOLO v5学习之数据集的标定及训练
    1、首先下载数据集标定工具labelImgLabelImg数据集标定工具的下载地址:https://github.com/tzutalin/labelImglabelImg的安装首先安装labelImg所需要的依赖。UbuntuLinuxPython3+Qt5sudoapt-getinstallpyqt5-dev-toolssudopip3install-rrequirements/requirement......
  • Python-OpenCV双目测距代码实现以及参数解读
    一、双目相机拍照后使用Matlab进行双目标定必看:USB双目相机的具体标定过程:https://blog.csdn.net/qq_40700822/article/details/124251201?spm=1001.2014.3001.5501主要参考:https://blog.csdn.net/dulingwen/article/details/98071584感谢大佬的分享!!!(*≧ω≦)!!二、标定后生成......
  • 【双目相机产品调研整理】22/12/01
    ......
  • 【动态结构光双目相机调研】22/11/24
    ......
  • 双目测距
    双目视觉测距WriteByChamprinFrom2022-12-09To2022-12-31GUETEvolutionTeamVisualGroup双目图像生成三维点云双目视觉测距原理,数学推导及三维重建资源双目立体视觉:块匹配视差图计算(WLS滤波)《LearningOpenCV3》ch19:双目标定与立体匹配单目系统对目标物体距离......
  • OpenCV相机标定
    OpenCV相机标定相机内参矩阵cameraMatrix\[cameraMatrix=\begin{bmatrix}f_x&0&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}\]相机畸变系数distCoeffs畸变系数:径向畸变\((k_1,k_2,k_3)\),切向畸变\((p_1,p_2)\)\[distCoeffs=\beg......
  • OpenCV手眼标定
    OpenCV手眼标定使用OpenCV进行手眼标定,版本需要4.1.0及以上。为了确定手眼变换,至少需要两个具有非平行旋转轴的运动。因此,至少需要3个不同的姿势,但强烈建议使用更多的姿势。——OpenCV官方文档提示cv::calibrateHandEye()OpenCV有关手眼标定官方文档voidcv::cali......