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

文章: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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Matlab是一种常用的编程语言和环境,用于科学计算和工程应用。双目相机标定是一种用于精确测量和视觉定位的技术。而OpenCV是一个开源计算机视觉库,提供了许多用于图像处理和计算机视觉的函数和工具。 要进行Matlab双目相机标定,我们可以通过访问OpenCV官网下载OpenCV库和相关教程来获得所需的功能和指导。方法如下: 1. 打开浏览器,输入 “OpenCV官网”并进入OpenCV官网。 2. 在官网主页上,找到下载链接或导航菜单中的“Downloads”(或“下载”)部分。 3. 点击下载链接,进入下载页面。 4. 在下载页面上,找到与您的操作系统和Matlab版本兼容的最新版本的OpenCV库。 5. 单击下载按钮,开始下载OpenCV库。 6. 下载完成后,将OpenCV库文件保存到您选择的目录中。 7. 解压缩下载的文件,将相关文件和文件夹复制到您的Matlab工作目录中。 8. 打开Matlab,创建并打开一个新的脚本文件。 9. 在脚本文件中,编写适当的Matlab代码来使用OpenCV库进行双目相机标定。 10. 运行脚本文件,在Matlab命令窗口或图形用户界面中查看和分析结果。 通过在Matlab中使用OpenCV库,您可以利用双目相机标定来获得相机的内部和外部参数,例如相机矩阵、畸变系数和旋转矩阵。这些参数可以用于立体视觉应用中,如深度估计、立体匹配和三维重建。 在进行双目相机标定之前,建议您先阅读相关的OpenCV教程和Matlab文档,以了解更多关于双目相机标定和OpenCV库的细节和使用方法。这样能够更好地理解和应用这些技术,以获得准确且可靠的结果。 ### 回答2: 对于Matlab双目相机标定,可以通过从OpenCV官网下载相关的库和软件包来实现。OpenCV是一种开源计算机视觉库,提供了丰富的功能和工具,包括双目相机标定。 首先,打开OpenCV官网(https://opencv.org/)并导航到下载页面。在下载页面上,你可以找到适合你操作系统的最新版本的OpenCV库和软件包。 选择合适的版本后,点击下载按钮,下载文件并保存到本地。 下载完成后,解压缩文件,找到对应的库文件和示例代码来进行Matlab双目相机标定。这个过程可能因为各操作系统的不同而有所差异。 在解压缩的文件中,找到包含示例代码和相关函数的文件夹。在这个文件夹中,你可以找到一个名为“stereo_calibrate”的示例代码或函数,用于双目相机标定。 在Matlab中打开这个示例代码或函数。根据你的需求,可以根据具体要求调整代码或函数的输入参数,如相机矩阵、畸变系数和图像坐标等。 然后,你可以使用这个示例代码或函数来读取双目相机的图像,提取图像特征,计算图像的匹配点对,并进行相机参数的标定。 最后,你可以使用标定后的相机参数来进行三维重建、深度估计或其他相关任务。 总之,通过从OpenCV官网下载相关的库和软件包,可以为Matlab提供双目相机标定的功能,方便实现双目视觉相关应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云PCL公众号博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值