当前位置: 首页 > news >正文

matlab进行双目标定获取双目参数并打印教程

文章目录

  • 前言
    • 1.打开matlab进行双目标定
    • 2.获取想要的参数


前言

  在相同的标定算法和标定参数下,Python和Matlab的标定精度是相同的。因为标定精度主要取决于标定算法和标定参数的质量,而不是编程语言的选择。

  不同的编程语言可能使用不同的库或实现细节,可能会导致一些差异,但这种差异通常很小。因此,应该选择更熟悉的编程语言来进行标定,同时注意使用正确的算法和参数,确保标定的精度达到预期。
  我一般就是两个都用一次,看哪个精度高一点。

1.打开matlab进行双目标定

  输入下面代码,启动双目标定工具箱

stereoCameraCalibrator

  选择add images,添加左右图像和标定板尺寸
在这里插入图片描述
  详细步骤可以参考我的另一篇文章:matlab单双目标定提取相机标定中各张标定图片的重投影误差数据

2.获取想要的参数

  这里畸变系数我是按左右相机畸变系数:[k1, k2, p1, p2, k3]保存的,大家不需要的话,可以修改一下。
  

 % 内参参数
intrinsics1 = stereoParams.CameraParameters1.IntrinsicMatrix;
intrinsics2 = stereoParams.CameraParameters2.IntrinsicMatrix;% 外参参数
rotation = stereoParams.RotationOfCamera2;
translation = stereoParams.TranslationOfCamera2;
[R, t] = cameraPoseToExtrinsics(rotation, translation);% 焦距
focalLength1 = intrinsics1(1,1);
focalLength2 = intrinsics2(1,1);
f = (focalLength1+focalLength2)/2% 基线
baseline = norm(t);% 左相机畸变系数
distCoeffs1 = stereoParams.CameraParameters1.RadialDistortion;
tangCoeffs1 = stereoParams.CameraParameters1.TangentialDistortion;
leftDistCoeffs = [distCoeffs1(1:2) tangCoeffs1 distCoeffs1(3)];% 右相机畸变系数
distCoeffs2 = stereoParams.CameraParameters2.RadialDistortion;
tangCoeffs2 = stereoParams.CameraParameters2.TangentialDistortion;
rightDistCoeffs = [distCoeffs2(1:2) tangCoeffs2 distCoeffs2(3)];% 打印参数
fprintf('左相机内参: \n');
disp(intrinsics1);
fprintf('右相机内参: \n');
disp(intrinsics2);fprintf('旋转矩阵: \n');
disp(R);
fprintf('平移矩阵: \n');
disp(t);fprintf('左相机焦距: %f\n', focalLength1);
fprintf('右相机焦距: %f\n', focalLength2);
fprintf('焦距: %f\n', f);% 打印参数[k1, k2, p1, p2, k3]
fprintf(' 左相机畸变系数: [%f, %f, %f, %f, %f]\n', leftDistCoeffs);
fprintf(' 右相机畸变系数: [%f, %f, %f, %f, %f]\n', rightDistCoeffs);fprintf('基线: %f\n', baseline);

在这里插入图片描述
  我们在使用python过程中,常常需要转换一下内参外参。
  由于Matlab和Python的内参矩阵定义方式略有不同,Matlab中的内参矩阵需要进行转置后才能用于Python的cv2.stereoRectify。因此,在将Matlab的内参矩阵用于Python的cv2.stereoRectify时,需要进行转置操作。

 % 内参参数
intrinsics1 = stereoParams.CameraParameters1.IntrinsicMatrix;
intrinsics2 = stereoParams.CameraParameters2.IntrinsicMatrix;% 对内参矩阵进行转置
intrinsics1_transpose = intrinsics1';
intrinsics2_transpose = intrinsics2';% 输出转置后的内参矩阵
fprintf('左相机内参(转置): \n');
disp(intrinsics1_transpose);
fprintf('右相机内参(转置): \n');
disp(intrinsics2_transpose);

在这里插入图片描述

  此外,如果想临时关闭科学计数法,可以输入,永久关闭请百度:

format long g

在这里插入图片描述


http://www.lryc.cn/news/6772.html

相关文章:

  • JVM类加载机制
  • 8.1 优化概述
  • 从0到1一步一步玩转openEuler--14 openEuler DNF(YUM)配置管理
  • leetcode707 设计链表 带有输入和输出的
  • 100种思维模型之非sr思维模型-012
  • 绿竹生物再冲刺港交所上市:暂未商业化,孔健夫妇为实控人
  • 加拿大MSB金融牌照申请方案
  • javaEE 初阶 — 滑动窗口
  • 大咖说·图书分享|狼书(卷3):Node.js高级技术
  • 1.5配置NBMA和P2MP网络类型
  • Java面试题
  • opencv锁定鼠标定位
  • 机器连接和边缘计算
  • 利用NGROK将本地网站发布为一个公开网站
  • Vulnhub 渗透练习(一)—— Breach 1.0
  • 初探Spring采用Spring配置文件管理Bean
  • 【手写 Vuex 源码】第十二篇 - Vuex 插件机制的实现
  • 图像去噪技术简述
  • 数据迁移——技术选型
  • 第二十七章 java并发常见知识内容(CompletableFuture)
  • Qt扫盲-QMake 使用概述
  • Spring Cloud之Zuul
  • 为什么要有分布式锁?
  • 【Redis】Redis持久化之RDB详解(Redis专栏启动)
  • Retinanet网络与focal loss损失
  • Spring事务的失效场景
  • 芯动联科在科创板IPO过会:拟募资10亿元,金晓冬为实际控制人
  • 数据结构之单链表
  • 儿子跟妈妈关系不好怎么办?这里有解决办法!
  • 论文投稿指南——中文核心期刊推荐(植物保护)