当前位置: 首页 > 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

在这里插入图片描述


相关文章:

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

文章目录前言1.打开matlab进行双目标定2.获取想要的参数前言 在相同的标定算法和标定参数下,Python和Matlab的标定精度是相同的。因为标定精度主要取决于标定算法和标定参数的质量,而不是编程语言的选择。 不同的编程语言可能使用不同的库或实现细节&…...

JVM类加载机制

回到2018年的抖音哈哈. 回顾下: java开发环境: java编译运行过程: 1) 编译期:.java源文件,经过编译,生成.class字节码文件 2) 运行期:JVM加载.class并运行.class(0和1) 特点: 跨平台、一次编程,处处报错 名词解释: 1…...

8.1 优化概述

数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置。这些软件结构导致了硬件级别的 CPU 和 I/O 操作,您必须将其最小化并尽可能提高效率。在研究数据库性能时,首先要学习软件端的高级规则和准则,然后使用墙上的时钟时…...

从0到1一步一步玩转openEuler--14 openEuler DNF(YUM)配置管理

文章目录14.1 DNF配置文件14.1.1 配置main部分14.1.2 配置repository部分14.1.3 显示当前配置14.2 创建本地软件源仓库14.3 添加、启用和禁用软件源14.3.1 添加软件源14.3.2 禁用软件源14.3.3 启用软件源DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查…...

leetcode707 设计链表 带有输入和输出的

题目: 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节…...

100种思维模型之非sr思维模型-012

什么是sr? sr是stimulus-response的缩写,意思是刺激反应。 那么非sr思维模型就是非刺激反应思维模型的意思。 今天我们来聊聊非sr思维模型——一个提醒我们思考,提醒我们任何时刻都有选择权的思维模型。 本文依然从三个方面进行介绍,何谓…...

绿竹生物再冲刺港交所上市:暂未商业化,孔健夫妇为实控人

近日,北京绿竹生物技术股份有限公司(下称“绿竹生物”)在港交所递交招股书,准备在港交所主板上市,中金公司为其独家保荐人。据贝多财经了解,绿竹生物曾于2022年6月28日在港交所递表。 相较于此前招股书&am…...

加拿大MSB金融牌照申请方案

什么是加拿大MSB金融牌照? 根据犯罪所得(洗钱)和恐怖主义融资法案,您的企业必须在加拿大金融交易和报告分析中心 (FINTRAC) 注册成为货币服务企业。自 2020 年 6 月 1 日起,外国货币服务企业也必须在 FINTRAC 注册&…...

javaEE 初阶 — 滑动窗口

文章目录滑动窗口1 滑动窗口下如何处理丢包TCP 工作机制:确认应答机制 超时重传机制 连接管理机制 滑动窗口 确认应答机制、超时重传机制、连接管理机制 都是给 TCP 的可靠性提供支持的。 虽然事变的比较可靠了,但是是有牺牲的,那就是传输…...

大咖说·图书分享|狼书(卷3):Node.js高级技术

Node.js都有哪些需要掌握的高级技术?前端为什么同样需要学习? Node.js未来的发展趋势究竟如何?本期大咖说,Node布道师桑世龙携新作《狼书(卷3):Node.js高级技术》展开分享。 ● 嘉宾介绍 桑世龙:Node布道…...

1.5配置NBMA和P2MP网络类型

1.3.3实验5:配置NBMA和P2MP网络类型 1. 实验需求 控制OSPF DR的选举修改OSPF的网络类型2. 实验拓扑 配置NBMA和P2MP网络类型实验拓扑如图1-13所示。 图1-13 配置NBMA和P2MP网络类型 3. 实验步骤 帧中继的配置如图1-14和图1-15所示...

Java面试题

三次握手,四次挥手中,为什么要挥手四次 第一次握手,客户端发送同步报文到服务端,客户端知道自己有发送数据能力,不知道服务端是否有发送、接受数据能力。 第二次握手,服务端收到同步报文,并回复…...

opencv锁定鼠标定位

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...

机器连接和边缘计算

以一种高效、可扩展的方式进行连接和边缘计算的结合,解决了在工业物联网应用中的机器数据集成问题。 一 边缘计算 边缘计算描述了由中央平台管理的数据分散式处理。边缘计算对于工业物联网而言非常重要。在许多应用程序中,由于数据量非常大,…...

利用NGROK将本地网站发布为一个公开网站

一般与第三方服务集成时,需要提供https的回调URL,本地开发阶段可以利用NGROK将本地网站发布为公开的https网站。https://ngrok.com/downloadWindow下载地址:https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip以Window…...

Vulnhub 渗透练习(一)—— Breach 1.0

环境搭建 环境下载: https://www.vulnhub.com/entry/breach-1,152/ 环境描述: Vulnhub 中对此环境的描述: VM 配置有静态 IP 地址 (192.168.110.140),因此您需要将仅主机适配器配置到该子网。 这里我用的是 VMware &#xff0…...

初探Spring采用Spring配置文件管理Bean

文章目录Spring容器演示--采用Spring配置文件管理Bean(一)创建Maven项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五)采用传统方式让勇敢骑士…...

【手写 Vuex 源码】第十二篇 - Vuex 插件机制的实现

一,前言 上一篇,主要介绍了 Vuex 插件的开发,主要涉及以下几个点: Vuex 插件的使用介绍;Vuex 插件开发和使用分析;Vuex 插件机制的分析; 本篇,继续介绍 Vuex 插件机制的实现&…...

图像去噪技术简述

随着每天拍摄的数字图像数量激增,对更准确、更美观的图像的需求也在增加。然而,现代相机拍摄的图像不可避免地会受到噪声的影响,从而导致视觉图像质量下降。因此,需要在不丢失图像特征(边缘、角和其他尖锐结构&#xf…...

数据迁移——技术选型

日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常支行。 背景如下:老系统中使用了mongo数据库,由…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...