基于matlab根据一系列图像估计单个校准相机的轨迹(附源码)

news2024/11/17 5:48:48

一、前言

视觉里程计是通过分析一系列图像来确定相机的位置和方向的过程。视觉里程计用于各种应用,例如移动机器人、自动驾驶汽车和无人机。此示例说明如何根据一系列图像估计单个校准相机的轨迹。

此示例演示如何从一系列二维视图估计校准相机的轨迹。此示例使用筑波大学 CVLAB 创建的新筑波立体数据集中的图像。(https://cvlab.cs.tsukuba.ac.jp)。该数据集由使用计算机图形生成的合成图像组成,并包括地面实况相机姿势。

如果没有其他信息,单眼相机的轨迹只能恢复到未知的比例因子。移动机器人或自动驾驶汽车上使用的单目视觉里程计系统通常从另一个传感器(例如车轮里程表或GPS)或场景中已知大小的物体获取比例因子。此示例根据基本实况计算比例因子。

该示例分为三个部分:

  1. 估计第二个视图相对于第一个视图的姿势。通过估计基本矩阵并将其分解为相机位置和方向来估计第二个视图的姿势。

  2. 使用全局束调整自举估计相机轨迹。使用极性约束消除异常值。查找从前两个视图和当前视图三角测量的点之间的 3D 到 2D 对应关系。通过求解透视 n 点 (PnP) 问题来计算当前视图的世界摄像机姿势。估计相机姿势不可避免地会导致误差,误差会随着时间的推移而累积。这种效应称为漂移。为了减少漂移,该示例使用束调整优化了到目前为止估计的所有姿势。

  3. 使用窗口束调整估计剩余相机轨迹。对于每个新视图,优化所有姿势所需的时间都会增加。窗口丛平差是一种通过仅优化最后 n 个视图而不是整个轨迹来减少计算时间的方法。通过不为每个视图调用捆绑包调整,进一步减少了计算时间。

二、读取输入图像序列和地面实况

此示例使用筑波大学 CVLAB 创建的新筑波立体数据集中的图像。

三、创建包含序列的第一个视图的视图集

使用对象来存储和管理与每个视图关联的图像点和相机姿势,以及视图对之间的点匹配。

转换为灰度且不失真。在此示例中,不失真不起作用,因为图像是合成的,没有镜头失真。但是,对于真实图像,不失真的是必要的。

四、绘制初始相机姿势

根据新筑波数据集中的地面实况数据创建两个图形相机对象,表示估计和实际相机姿势。

五、估计第二个视图的姿势

从第二个视图中检测和提取特征,并使用帮助程序检测和匹配特征将它们与第一个视图进行匹配。估计第二个视图相对于第一个视图的姿势。

第二个视图相对于第一个视图的位置只能恢复到未知的比例因子从地面实况计算比例因子,模拟外部传感器,该传感器将用于典型的单目视觉测程系统。

六、使用全局束调整自举估计相机轨迹

查找从前两个视图三角测量的世界点与当前视图中的图像点之间的 3D 到 2D 对应关系。使用约束的匹配项,然后对前两个视图中的三维点进行三角测量,并在当前视图中查找相应的二维点。

通过求解透视 n 点 (PnP) 问题,计算当前视图的世界摄像机姿势。对于前 15 个视图,使用全局束调整来优化整个轨迹。对有限数量的视图使用全局束调整来估计相机轨迹的其余部分,并且成本并不高。

七、使用窗口束调整估计剩余相机轨迹

通过使用窗口束调整来估计剩余的相机轨迹,以仅优化最后 15 个视图,以限制计算量。此外,不必为每个视图调用束调整,因为与 3-D 点相同的单位计算姿势。本节调用每个第 7 个视图的捆绑调整。窗口大小和调用捆绑包调整的频率是通过实验选择的。

八、总结

此示例展示了如何从一系列视图估计校准的单眼相机的轨迹。请注意,估计的轨迹与实际情况不完全匹配。尽管对相机姿势进行了非线性优化,但相机姿势估计中的误差会累积,从而导致漂移。在视觉里程计系统中,这个问题通常通过融合来自多个传感器的信息和执行闭环来解决。

九、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用字符串处理方法汇总--Pandas

字符串处理只能在Series上进行,不可以在DataFrame上操作,只能对字符串进行处理,不能对整数、日期进行处理 1. 元素统计 1.1 str.count() 1.1.1 函数功能 统计Series中每个元素中包含pat的次数 1.1.2 函数语法 Series.str.count(pat, fl…

美日韩限制光刻机供应,中国正式亮剑,外媒:轮到美芯被卡脖子了

这几年美国频频对中国芯片采取措施,今年以来美国更是变本加厉,联合荷兰和日本限制对中国出售光刻机等芯片设备,试图将中国的芯片工艺限制在45纳米以上,近日我国商务部联合海关等部门宣布对镓、锗等稀有金属实施出口限制&#xff0…

Python实现某只股票的MACD、KDJ指标的单双金叉点判定

金叉理论介绍 在股票K线图中,短期的收盘价均线向上穿越长期均线即为金叉,但如果长期均线向下或变缓,同时短期均线向上穿越就不能称之为金叉。 对于MACD指标,若差离值线由下向上突破移动平均线,即DIF值前一天小于DEA值…

MySQL库表操作的作业

1.创建数据库 create database Market; mysql> show databases; -------------------- | Database | -------------------- | information_schema | | Market | | db1 | | mysql | | performance_schema | | …

消息队列 - RocketMQ

1. 名词解释和概念 NameServer: 是一个无状态节点,可集群部署,节点之间无任何信息同步用于服务注册和发现,为 MQ 集群提供服务协调与治理记录并维护 Topic 和 Broker 的信息为生产者和消费者提供 Topic 的路由信息 无状态和有状…

On the Properties of Neural Machine Translation: Encoder–DecoderApproaches

摘要 Neural machine translation : 神经机器翻译。 神经机器翻译模型经常包含编码器和解码器:an encoder and a decoder. 编码器: 从一个变长输入序列中提取固定长度的表示。a fixed-length representation. 解码器:从表示中…

抖音SEO矩阵系统源码开发部署(二)技术搭建+二次开发

抖音SEO矩阵系统源码开发 是一项技术密集型工作,需要对大数据处理、人工智能等领域有深入了解。该系统开发过程中需要用到多种编程语言,如Java、Python等。同时,需要使用一些框架和技术,如Hadoop、Spark、PyTorch等,以…

第五章 运输层【计算机网络】

第五章 运输层【计算机网络】 前言推荐第五章 运输层5.1运输层协议概述5.1.1 进程之间的通信5.1.2运输层的两个主要协议5.1.3运输层的端口 5.2用户数据报协议UDP5.2.1UDP概述5.2.2UDP的首部格式 5.3传输控制协议TCP概述5.3.1TCP最主要的特点5.3.2TCP的连接 5.4可靠传输的工作原…

手写操作系统--进入保护模式的开篇

之前我们讲的主引导扇区以及内核加载器等内容。都是在实模式下运行的。在实模式下寻址范围仅有1M,是远远不够我们用的。我们想要更大的内存空间,就得进入保护模式,实模式是一个历史遗留问题,本身是没有这个名字的。是因为有了保护…

【算法集训之线性表篇】Day 01

文章目录 题目知识点补充思路分析代码实现运行结果 题目 01.从顺序表中删除具有最小值元素(假设唯一)并返回被删元素的值。空出位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 知识点补充 顺序表的特点是逻辑…

CRM系统中AI如何进行销售线索评分?有什么好处(上)

每个公司的TOP销售都是精明的猎手。他们善于从大量潜在客户中挑出最可能购买的,把最好的时间、精力和资源给到高意向客户。意向度差一些的排在后面,在资源分配上也会降低。现在,您可以通过AI来进行线索评分,可以说CRM销售线索评分…

SIP 协议的主要流程

目录 SIP 协议的呼叫模型图 基本呼叫建立流程 基本呼叫拆除流程 经过代理的呼叫建立流程 经过代理的呼叫拆除流程 SIP 协议在软交换 SoftX3000(华为推出的一个支持sip协议的交换机设备) 流程图 SIP 协议的呼叫模型图 MGC 负责将 PSTN 前向信令映射…

ETHERNET/IP转MODBUS-TCP协议网关

远创智控YC-EIP-TCP 是自主研发的一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 MODBUS-TCP 设备接入到 ETHERNET/IP 网络中。 本网关连接到 ETHERNET/IP 总线中做为从站使用,连接到 MODBUS-TCP 总线中做为主站(客户端)或从站…

淘上拼/拼上拼/抖上拼分别是什么意思(操作玩法是怎样的及数据采集代码举例)

拼多多店群玩法最常见的就是淘上拼、拼上拼、抖上拼这三种,但是很多的商家都不了解这三种玩法是什么意思,更别提操作了,本期小编就来为你们详细介绍一下。 淘上拼: 传统玩法:通过蓝海词,采集类目爆款商品数…

若依前端,菜单栏切换时刷新问题[页面菜单切换时,页面总是重新刷新,导致页面输入的查询参数重载清空]...

前端页面菜单切换时,页面总是重新刷新,导致页面输入的查询参数重载清空 这样切换时,页面就刷新了,解决方法在这里 1,页面代码,这里指定name name: "Item", 注意 name的首字母必须大写 2&#xff…

密盾科技即将推出同态加密隐私计算开源平台Pinsehub!

密盾科技预计将于8月底正式推出同态加密隐私计算平台Pinsehub-Platform。Pinsehub隐私计算平台将涵盖匿踪查询、隐私求交、联合建模、联合统计、算法容器管理、数据资源管理、数据确权与定价(开发中)、异构平台互联互通(开发中)等…

Spring中@Autowired和@Resource的区别:

文章目录 一、Autowired二、Resource三、Autowired和Resource的区别: 一、Autowired Autowired 这个注解呢,是由 Spring 提供的,它可以用来对构造方法、成员变量以及方法参数上进行标注,能够根据对象类型完成自动注入。 public …

Podman下载安装说明以及通过下载mysql镜像

Podman下载地址 Releases containers/podman GitHub csdn下载地址:https://download.csdn.net/download/u010479989/88010018 下载exe会自动添加到环境变量中,下载zip需要手动设置环境变量 初始化命令 podman machine init 这个时候会提示安装wsl&…

[工业互联-15]:Linux操作与实时Linux操作系统RT Linux( PREEMPT-RT、Xenomai)

目录 第1章 Linux操作系统 1.1 什么是Linux操作系统 1.2 Linux操作系统架构 1.3 常见Linux操作系统发行版本 第2章 实时Linux操作系统 2.1 实时性要求 2.2 实时性实现技术的基本思想 2.2 常见发行版方案 2.3 Xenomai和PREEMPT-RT比较 第3章 PREEMPT-RT 3.1 概述 3…

java调用python脚本,json传参方式。

使用python的json.loads()进行解析json数据,如果没有包含双引号,则会解析出错 解决方案1 使用demjson.decode(),安装方式直接百度,就不做过多的说明了 解决方案2 使用json.loads()方式解析,…