深度相机如何标定?(代码开源)

news2024/11/16 7:40:20

文章:Robust Intrinsic and Extrinsic Calibration of RGB-D Cameras

作者:Filippo Basso, Emanuele Menegatti, and Alberto Pretto.

编译:点云PCL

代码:

https://github.com/iaslab-unipd/rgbd_calibration

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

常见的消费级RGB-D相机具有粗略的内参和外参校准数据的,通常无法满足许多机器人应用所需的精度要求。我们的校准方法基于一种新颖的双分量测量误差模型,该模型统一了基于不同技术RGB-D相机的误差源,如结构光3D相机和飞行时间相机,提出的的标定模型使用两种不同的参数实现对图像的矫正,这两种图通过控制函数的线性组合提供校准读数,非线性优化算法在单个优化步骤中细化相机深度传感器刚性位移以及上述参数,确保结果高度可靠。代码开源:

https://github.com/iaslab-unipd/rgbd_calibration。

这个库的依赖项有Eigen,PCL,OpenCV,Ceres Solver。

主要贡献

本文的主要贡献如下:

  • 一个通用的、可实现的测量误差模型,该模型以统一的方式很好地描述了不同深度传感器类型的误差。

  • 一种空间和参数不畸变图像,以紧凑有效的方式模拟结构光深度传感器的畸变模型。

  • 一种新的优化框架,在估计摄像机深度传感器刚性位移以及描述深度测量系统误差的参数模型。

  • 提出方法的开源实现,集成在ROS(机器人操作系统)框架内。

主要内容

该方法提出了一种基于对极几何和光束平面约束的联合优化框架,用于同时估计RGB-D相机的内参和外参。该方法在标定过程中使用了多个视角的图像对和对应的深度图,并通过最小化重投影误差来优化相机的内外参。同时,为了增强鲁棒性,该方法还引入了离群值剔除和稀疏性约束,以处理不准确的匹配和噪声。

bb0e4655c7742c5f48ff1bae75dcb55d.png

图1 标定算法流程

实验结果表明,该方法在各种实际场景和数据集上都能够获得准确而稳健的内参和外参标定结果。与传统方法相比,该方法在标定精度和鲁棒性方面都有显著的提升。此外,该方法还能够处理部分遮挡和异常情况,具有较强的鲁棒性和适应性。

ae7c7a00cd16d6f2985064fa7cb6989d.jpeg

图2 四个传感器的平面误差,对于SL传感器,所提出的方法能够显著减小测量点与最佳拟合数据的平面之间的距离。对于Kinect 2传感器,差异受到随距离增加而出现的随机噪声的限制。

不同距离的一面墙的点云矫正后的结果

e876f8397b615ead35f08c3acd29b879.png

校准后的RGB图与深度图配准与使用默认校准参数生成RGB图与深度图配准结果的对比:

c6c0a898b9ee395beac9653455b360be.png

对三个经过测试的SL深度传感器和Kinect 2 ToF相机的全局误差进行了实验,说明了原始点云的误差(Original),去畸变步骤后的误差(Undistorted),以及在去畸变和全局误差校正步骤后的误差(Final)。对于三个SL传感器,为了进一步评估所提出方法的有效性,在(a)中使用设备校准了深度传感器,而在(b)中我们使用了高分辨率相机。

a5ce81df96b9b628dcd381eab4771c36.jpeg

总结

本文提出了一种通用RGB-D传感器标定的新方法,开源的校准程序仅要求用户在最小结构的环境中收集数据,并在输出中提供传感器的内参和外参数据,通过两个不同的分量,一个畸变误差和一个全局系统误差来概括深度传感器误差,畸变误差使用每像素参数无畸变图建模。在算法的第一阶段进行估计,在算法的第二阶段,在鲁棒优化框架内,估计深度系统误差以及摄像机深度传感器对准,文章用几个传感器进行了详尽的实验,结果表明,该方法提供了高度精确的结果,优于其他最先进的方法。

更多详细内容后台发送“知识星球”加入知识星球查看更多。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

TOF相机原理介绍

TOF飞行时间深度相机介绍

结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案

开源又优化的F-LOAM方案:基于优化的SC-F-LOAM

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

基于鱼眼相机的SLAM方法介绍

3D视觉与点云学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为开源的伙伴们点赞吧!

9e06764ae6629c8aef5be45b036d07fe.gif

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

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

相关文章

Servlet API 获取请求数据

目录 一. 构造HTTP请求的方式1.1 使用 Postman 来构造请求1.2 使用ajax 来构造请求 二 . HttpServletRequest API使用api实现前后端交互1 . 通过 GET 请求 query string 进行传参2 . POST请求 form 表单传参 (body)3 . Post 请求的 json 格式的数据传参&…

多激光雷达手眼标定

手眼标定方法已经有很多博客进行解析,但是都是针对机器人的手(夹爪)眼睛(相机)进行标定。例如: 标定学习笔记(四)-- 手眼标定详解 手眼标定_全面细致的推导过程 本文主要描述多激光…

【c语言】文件的光标操作

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

Java --- 云尚办公角色管理模块实现

目录 一、项目介绍 1.1、项目简介 1.2、技术框架 1.3、项目构建 1.4、配置依赖 二、mybatis-plus测试使用 三、角色管理 3.1、完善统一返回信息 3.2、整合knife4j 3.3、分页查询功能 3.4、添加、修改、删除功能 3.5、完善时间格式 3.6、异常统一处理 四、前端知识 4.1…

LeetCode662.设计循环队列||4种方法实现

目录 题目 思路1(链表) 代码 思路2(数组) 代码 题目 题目要求的队列需要实现的功能有 ①Creat---设置队列长度 ②Front---获取队列头 ③Rear---获取队列尾 ④en----插入元素 ⑤de---删除元素 ⑥empty---判空 ⑦full---判满 思路1(链表) &#x1f50d;普通队列长度没有限制&…

MySQL高级——第16章_多版本并发控制

第16章_多版本并发控制 1. 什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;&#xff0c;多版本并发控制。顾名思义&#xff0c;MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操…

ARM学习笔记_1 介绍,Keil环境搭建

从零开始学ARM 学习自b站一口linux老师的课程。 文章目录 从零开始学ARM介绍为什么要学汇编&#xff1f;ARM是什么&#xff1f;SOC计算机历史冯诺依曼结构介绍哈佛架构介绍混合架构介绍CPU运行原理 环境搭建 介绍 学习ARM需要学计算机原理&#xff0c;汇编&#xff0c;C语言&…

强大,Midjourney Imagine API接口,AI画画的福音!

前几天跟大家分享过一篇 ”让chatGPT教你AI绘画|如何将chatGPT与Midjourney结合使用&#xff1f;“&#xff0c;但是由于许多小伙伴们使用Midjourney还有许多困难&#xff0c;又要上网&#xff0c;还要注册Discord&#xff0c;MJ的使用成本很高&#xff0c;让大家望而却步&…

【计算机视觉 | 目标检测】目标检测中的评价指标 mAP 理解及计算(含示例)

文章目录 一、目标检测的评价指标1.1 Precision1.2 Recall1.3 Average Precision&#xff08;AP&#xff09;1.4 mean Average Precision&#xff08;mAP&#xff09;1.5 Intersection over Union&#xff08;IoU&#xff09;1.6 F1-score 二、基础知识2.1 Precision2.2 Recall…

5.20下周黄金行情走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(5月19日)&#xff0c;现货黄金价格下跌又反弹&#xff0c;现货黄金持续走高美联储主席鲍威尔&#xff1a;那些积极的供应冲击不太可能重复出现&#xff0c;美联…

初阶数据结构之单链表的实现(四)

文章目录 链表的概念及结构一、链表的逻辑结构是什么样的&#xff1f;二、链表的初始化2.1链表初始化的示意2.2链表初始化代码实现 三、链表的各类接口函数定义四、链表的各类接口函数的代码实现4.1链表的打印代码实现4.1.1打印代码的实现 4.2链表的尾插代码实现4.2.1尾插代码实…

Mongodb 6.0 变化的配置参数与连接的方式变化

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

【故障排查】【伪处理】Jenkins在iframe窗口无法添加secret text凭证

问题描述 环境的ingress是&#xff0c;有个 svc 暴露 30080 -> 80 大致流程&#xff1a; svc&#xff08;ingress-nginx&#xff09; 30080端口 -> pod (nginx-ingress-controller ) 80端口 -> ingress -> svc -> pod &#xff08;Jenkins 8080端口&#xff0…

基于粒子群优化算法的路径问题优化研究及其在Python中的实现

基于粒子群优化算法的路径问题优化研究及其在Python中的实现 文章目录 基于粒子群优化算法的路径问题优化研究及其在Python中的实现一、简介二、引言1、粒子群优化算法简介2、PSO算法与鸟群的类比 三、PSO算法数学原理1、粒子的位置和速度2、适应度函数3、粒子的个体最优和全局…

基于html+css的图展示80

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

从零开始搭建属于自己的hexo博客

前提要素&#xff1a;一个提供博客运行的服务器或者XX云。 先展示一下搭建好的样子&#xff0c;给大家一点动力&#xff1a; 整个搭建过程大概需要30分钟不到&#xff0c;请各位控制自己的时间~ 好了&#xff0c;废话不多说我们开始&#xff01; 1、首先登录我们准备好的服…

redis高级篇二(分片集群)

一)进行测试Sentinel池: ​ Controller public class RestController {RequestMapping("/Java100")ResponseBodypublic String start(){//1.配置信息HashSet<String> setnew HashSet<>();// 连接信息 ip:port// set.add("127.0.0.1:27001");se…

[抓包] 微信小程序(PC版)如何抓包

本文抓包环境 Win10&#xff0c;微信(PC版本) v3.9.2.20&#xff0c;Burp Suite v1.7.32&#xff0c;Proxifier v3.42 不使用安卓模拟器 一、下载安装好Burp Suite&#xff0c;Proxifier 链接: https://pan.baidu.com/s/177BIEgCmZG9MfqQ4D0PTsg 提取码: 3hex 二、开始抓包 …

【ASP.NET Core笔记】 使用razor pages构建网站

使用ASP.NET Core Razor Pages 构建网站 sqlite 北风数据库 1. Northwind.Common.DataContext.Sqlite 是Sqlite的数据库上下文&#xff0c;有三个类&#xff1a;ConsoleLogger.csNorthwindContext.csNorthwindContextExtensions.cs 1.1 NorthwindContext 继承自 Microsoft.Enti…

计算机图形学-GAMES101-10

一、纹理 原模型网格->逐面Shading->逐像素Phong Shading->纹理贴图->换个纹理再贴图->环境光照。 &#xff08;1&#xff09;环境贴图 纹理就是一张图&#xff0c;纹理是GPU里的一块内存&#xff0c;可以进行点查询、范围查询、滤波。  环境光贴图、环境光映…