经典文献阅读之--CamMap(基于SLAM地图对不共视相机进行外参标定)

news2024/11/15 18:20:05

0. 简介

由于多相机之间通常存在有限或无重叠的视场,因此在估计外参相机参数时面临着一定的挑战,为了解决这个问题,本文提出了CamMap:一种新颖的6自由度外参标定流程。根据三个操作规则,使一个多相机系统单独捕捉一些类似的图像序列,以使用SLAM系统创建基于稀疏特征的地图。我们构建了一个两阶段的优化问题来对齐这些地图,并基于双向投影得到它们之间的变换,这些变换即为外参参数。该方案支持各种相机类型,在任何纹理丰富的环境中都可以使用。它可以同时标定任意数量的相机,无需标定板、同步、相同分辨率和频率。我们对具有有限和无重叠视场的相机进行了实验评估,结果显示我们的方法具有较高的准确性和效率。Kalibr和CamMap之间的绝对姿态误差(APE)小于0.025。代码已经在Github上开源了。我们这里文字主要是基于《CamMap:基于SLAM地图对不共视相机进行外参标定》的,当中插入代码以供学习。

1. 主要贡献

准确估计相机外参对于关联多个相机的信息至关重要。然而,如图1(a)所示,重叠视场通常很小或不存在,这给外参标定带来了重大挑战。为了让标定板能够被同时捕捉到,标定板必须远离相机放置。由于角点提取像素误差的增加,标定精度会降低,对于没有重叠视场的情况,需要一个充满已知相对位置模式的标定房间,这既昂贵又不方便。

图1. 非重叠相机的组合示例。(a) 配备两个RealSense D455和两个L515的TurtleBot。我们移除了连接线以清晰显示。(b) RealSense D455的组成,右侧图像传感器和左侧图像传感器可以组合成立体摄像头,并且左侧图像传感器的坐标系被用作参考,中间的RGB模块可以单独用作单目摄像头。© RealSense L515的结构,它可以用作RGB-D或单目摄像头。

针对解决上述问题并充分利用ORB-SLAM3,本文提出了CamMap:一种6自由度外参标定流程,它可以对非重叠相机进行高精度的外参标定,并可应用于多种类型的相机,如单目、立体和RGB-D相机。该标定方法CamMap通过对ORB-SLAM3创建的地图进行对齐来实现,换句话说,自然场景可以用作标定模式。在分别使用两个相机构建两个相似地图并找到所有匹配的地图点后,外参参数正好是地图之间的变换关系。标定过程仅耗费几十秒时间。所提出的方法的应用要求在表I中可以找到。

本文的主要贡献如下:

  1. 提出了一种相机外参标定流程,将ORB-SLAM3系统集成到不重叠视场的各种相机类型中,在任何纹理丰富的自然环境中都可以使用,无需标定板,并且可以同时标定任意数量的相机。并将所提出的方法开源。

  2. 为不同位置的多相机提出了三个操作规则,这旨在消除相机不同步时的理论误差,并减少SLAM漂移引起的误差。

  3. 我们在两阶段优化问题中引入了基于双向投影的代价函数来计算外参参数,然后提供了一种用于确定标定是否成功的SLAM漂移评估方法。

2. 主要内容

2.1 概述

这里详细描述了所提出的方法,如图2所示,一个装有两个刚性连接相机A和B的支架,在支架上进行一系列规定的运动后,相机捕捉图像流,这些图像流将由ORB-SLAM3处理,用于创建地图,包括关键帧 A i A_i Ai B j B_j Bj(其中 i = 1 , . . . , m i = 1,...,m i=1...m j = 1 , . . . , n j = 1,...,n j=1...n)和地图点 P P P,值得注意的是地图坐标系与相机的第一个关键帧坐标系重合,这意味着地图之间的变换$ T B A M a p T^{Map}_{BA} TBAMap实际上是 A 1 A_1 A1 B 1 B_1 B1之间的变换 T A 1 B 1 T^{B_1}_{A_1} TA1B1,也即是外参参数。然后执行类似关键帧检测以在两个地图中找到匹配的关键帧。最后使用两阶段优化通过对所有匹配地图点对( P k A 1 , P k B 1 P_k^{A_1},P_k^{B_1} PkA1PkB1)进行对齐来估计外参参数(其中 k ∈ N , N = { 1 , . . . , l } k ∈ N,N = \{1,...,l\} kNN={1...l})。CamMap的流程包括以下步骤:

  1. 通过相机捕捉一些图像序列,当多相机支架进行一组固定运动时,例如在小圆圈上旋转,这应该根据相机的相对位置进行规划,在标定开始和结束时,支架应保持静止。

  2. 使用ORB-SLAM3系统处理图像序列,以创建基于ORB特征的地图

  3. 使用词袋(BoW)模块对两个地图之间的所有关键帧进行相似性检测,找到相似关键帧并匹配地图点

  4. 相似关键帧捕捉的尺度和局部地图进行对齐,以估计外参参数,这个过程是“帧到帧”的对齐,是第一个优化阶段。同时,使用卡方检验来删除错误匹配的地图点对。

  5. 对于第二阶段的优化,使用所有正确匹配的地图点对来优化外参参数,这是“地图对地图”的对齐。卡方检验用于获得内点的数量。最后根据内点数量 T B 1 A 1 T^{A_1}_{B_1} TB1A1 T B m A n T^{A_n}_{B_m} TBmAn之间的差异判断标定是否成功。

在这里插入图片描述

…详情请参照古月居

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

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

相关文章

垃圾回收APP:开启智能环保新篇章

随着科技的发展和人们生活水平的提高,智能手机已经成为我们生活中不可或缺的工具。而垃圾回收作为环保领域的重要组成部分,也正逐渐受到人们的关注和重视。为此,我们推出了一款创新的垃圾回收APP,旨在为环保事业注入科技力量&…

每日五道java面试题之mysql数据库篇(一)

目录: 第一题. 为什么要使用数据库?第二题. 数据库三大范式是什么?第三题. mysql有关权限的表都有哪几个?第四题. MySQL的binlog有有几种录入格式?分别有什么区别?第五题. MySQL存储引擎MyISAM与InnoDB区别 第一题. 为什么要使用数据库? …

SpringBoot实现短链跳转

目录 1.背景介绍 2.短链跳转的意义 3.SpringBoot中的代码实现 1.建议短链-长链的数据库表:t_url_map: 2.映射实体 3.Dao层实现 4.Service层实现 5.Controller层实现 3.结果测试 4.问题 1.背景介绍 短链跳转是一种通过将长链接转换为短链接的方式&…

Chrome浏览器新功能:节省内存,更方便查询内存占用情况

一、前言 Chrome浏览器一直被用户抱怨占用过多的内存,但是Google推出了Memory Saver功能来解决这个问题。该功能可以冻结不活跃的页面以节省内存。 现在,Google正在进一步开发这个功能,Chrome的Hover Cards功能将很快可以显示当前标签页使用了…

YOLOV8介绍

原文链接: 1、 详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出 2、Yolov8的详解与实战 3、YOLOV8模型训练部署(实战)()有具体部署和训练实现代码YOLOV8模型训练部署(实战)&…

bert 相似度任务训练,简单版本

目录 任务 代码 train.py predit.py 数据 任务 使用 bert-base-chinese 训练相似度任务,参考:微调BERT模型实现相似性判断 - 知乎 参考他上面代码,他使用的是 BertForNextSentencePrediction 模型,BertForNextSentencePred…

第三百七十六回

文章目录 1 .概念介绍2. 实现方法3. 示例代码 我们在上一章回中介绍了在页面之间共传递数据相关的内容,本章回中将介绍如何拦截路由.闲话休提,让我们一起Talk Flutter吧。 1 .概念介绍 本章回中介绍的路由拦截是指在路由运行过程中,对路由做…

01tire算法

01tire算法 #include<bits/stdc.h> using namespace std; #define maxn 210000 int a[maxn], ch[maxn][2], val[maxn], n, ans, tot; void insert(int x) {int now 0;for (int j 31; j > 0; j -- ){int pos ((x >> i) & 1);if (!ch[now][pos])ch[now][po…

elasticsearch7.17 terms聚合性能提升90%+

背景 ES7 相比于 ES6 有多个层面的优化&#xff0c;对于开源的ES而言&#xff0c;升级是必经之路。 ES的使用场景非常多&#xff0c;在升级过程中可能会遇到非预期的结果&#xff1b; 比如之前文章提到的典型案例&#xff1a;ES7.17版本terms查询性能问题 ES7.17版本terms查…

服务端向客户端推送数据的实现方案

在日常的开发中&#xff0c;我们经常能碰见服务端需要主动推送给客户端数据的业务场景&#xff0c;比如数据大屏的实时数据&#xff0c;比如消息中心的未读消息&#xff0c;比如聊天功能等等。 本文主要介绍SSE的使用场景和如何使用SSE。 服务端向客户端推送数据的实现方案有哪…

maven项目导入mysql依赖

最近在B站跟着狂神学习Mybatis&#xff0c;学到P2就卡住了&#xff0c;搭建的maven项目一直无法导入依赖&#xff0c;在网上查找了很多相关的解决方法&#xff0c;project structure不知道点进去多少回&#xff0c;始终无法解决&#xff0c;后来把responsity文件夹删除重置了一…

【代码随想录python笔记整理】第十六课 · 出现频率最高的字母

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、哈希表初步 在之前的学习中,我们使用数组、字符串、链表等等,假如需要找到某个节点,则都要从头开始,逐一比较,直到找到为止。为了能够直接通过要查找的记录找到其存储位置,我们选…

RV1126芯片概述

RV1126芯片概述 前言1 主要特性2 详细参数 前言 1 主要特性 四核 ARM Cortex-A7 and RISC-V MCU250ms快速开机2.0Tops NPU14M ISP with 3帧 HDR支持3个摄像头同时输入4K H.264/H.265 视频编码和解码 2 详细参数

【王道数据结构】【chapter8排序】【P371t5】

编写一个算法&#xff0c;在基于单链表表示的待排序关键字序列上进行简单选择排序 #include <iostream> #include <time.h> #include <stdlib.h> typedef struct node{int data;struct node *next; }node,*pnode;pnode buynode(int x) {pnode tmp(pnode) mal…

2024腾讯云服务器8888元代金券领取、主机价格表新鲜出炉!

腾讯云优惠活动2024新春采购节活动上线&#xff0c;云服务器价格已经出来了&#xff0c;云服务器61元一年起&#xff0c;配置和价格基本上和上个月没什么变化&#xff0c;但是新增了8888元代金券和会员续费优惠&#xff0c;腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

遥感影像处理(ENVI+ChatGPT+python+ GEE)处理高光谱及多光谱遥感数据

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

【vue3】命令式组件封装,message封装示例;(函数式组件?)

仅做代码示例&#xff1b;当然改进的地方还是不少的&#xff0c;仅作为该类组件封装方式的初步启发&#xff1b; 理想大成肯定是想要像 饿了么 这些组件库一样。 有的人叫这函数式组件&#xff0c;有的人叫这命令式组件&#xff0c;我个人还是偏向于命令式组件的称呼。因为以vu…

【JVM】JVM相关机制

1. JVM内存区域划分 1.1 内存区域划分简介 内存区域划分&#xff1a;实际上JVM也是一个进程&#xff0c;进程运行时需要向操作系统申请一些系统资源&#xff08;内存就是典型的资源&#xff09;&#xff0c;这些内存空间就支撑着后续Java程序的运行&#xff0c;而这些内存又会…

php 支持mssqlserver

系统不支持:sqlsrv 需要一下几个环节 1.准备检测php版本 查看 VC 版本 查看操作系统位数&#xff1a;X86(32位) 和X64 2.下载php的sqlserver库 extensionphp_sqlsrv_74_nts_x64.dll extensionphp_pdo_sqlsrv_74_nts_x64.dll extensionphp_sqlsrv_74_nts_x64 extensionphp_…

用HTML5的<canvas>元素实现刮刮乐游戏

用HTML5的<canvas>元素实现刮刮乐 用HTML5的<canvas>元素实现刮刮乐&#xff0c;要求&#xff1a;将上面的“图层”的图像可用鼠标刮去&#xff0c;露出下面的“图层”的图像。 示例从简单到复杂。 简单示例 准备两张图像&#xff0c;我这里上面的图像top_imag…