基于MATLAB的激光雷达与相机联合标定原理及实现方法——以标定板为例

1.为什么要进行激光雷达和相机的联合标定?

激光雷达和相机的联合标定是为了将两种传感器的数据统一到同一坐标系中,从而实现更准确的环境感知。激光雷达提供精准的三维距离信息,而相机捕捉丰富的纹理和颜色,通过联合标定可以结合两者优势,弥补单一传感器的不足。标定过程确定激光雷达与相机之间的相对位置和姿态,支持多传感器融合任务,如目标检测、三维重建和语义分割,提高系统的感知精度和鲁棒性,是自动驾驶和机器人导航中不可或缺的一环。

2.激光雷达和相机联合标定的原理是什么?

所以一般相机和激光雷达的联合标定就是要求其旋转矩阵和平移矩阵。大概就是这个过程,如果有不太清楚的,同时又想进一步研究的可以参考这个博客:激光雷达和相机联合标定_相机激光雷达联合标定-CSDN博客

3.该如何实现呢?首先打开MATLAB,点击APP-图像处理和计算机视觉-Lidar Camera Calibrator

4.关于标定板的制作 ,可以参考以下网址:Camera Calibration Pattern Generator -- calib.iohttps://calib.io/pages/camera-calibration-pattern-generator

这里面可以设置标定板的格式以及大小:

  1. 关于数据的选择,这里以bag包为例首先将bag包转换成png图片和pcd点云文件,怎么转换可以参考另一篇博客:(二)利用Tools_RosBag2KITTI软件包将ubuntu当中自己录制的.bag文件转成.bin文件和.png文件(附修改后的代码)

6.接着点击 import data选择准换好的png和bin文件,这俩可以放在一个文件夹。

7.之后选择文件夹的路径以及标定板的大小:

8, 之后开始自动加载相应的文件内容:

9, 之后会提示找不到标定板数据,不要慌,这是正常的,裁剪设置之后就可以了。

10, 一方面可以降低DimensionTolerance'的值(即点云检测边框精度)来提高标定板检测成功率。

11.也可以点击Edit ROI编辑点云图像,只保留标定板,编辑好了一定要保存。

12.操作可能有点不习惯,右上角第一个是旋转,第二个是移动,当两者都不亮时才是默认的拉伸,保存后退出,如下图所示:

13.接下来呢,选择Select Checkerboard进行标定板的选择,每一张图片都需要按照上以下步骤重复所有的操作

14.之后 点击手动选择标定板的区域保存,所有点云都需要这样操作:

  1. 我标注的比较随意,大家好好标,因为标注的不行的系统识别不到,会拒绝,比如:

16.正确标注后,会在中间出现相应的图片和右侧的点云图:

  1. 之后点击上面的calibrate会进行标定,如下为几个相应的重投影结果,以及三个误差分布图:

18.标定的结果怎么看呢, 点击export导出到工作空间:

19,打开该变量,其包含的4个参数如下:

20.参数含义为:

  • Dimensionality维度,表示该刚体变换是针对几维空间的,说明是一个三维空间中的变换。

  • T变换矩阵(4x4 double),是刚体变换的齐次矩阵形式,包含旋转和平移信息。t3x1​: 平移向量,表示物体在三维空间的平移,R3x3​: 旋转矩阵,表示物体在三维空间的旋转。

  • Rotation 旋转矩阵(3x3),表示刚体的旋转部分,是一个正交矩阵,满足旋转矩阵将一个三维点绕原点旋转到新的位置。

  • Translation 平移向量(1x3),表示刚体在三维空间中的平移量。例如,这里的值为表示沿 x,y,z 轴的平移。

21.我们需要的也就是旋转矩阵和平移矩阵:

22.至此,终于标定完了,附上一张自己标定一晚上的结果,眼都花了。

相关推荐
2501_940315268 小时前
leetcode182动态口令(将字符的前几个元素放在字符串后面)
算法
一起养小猫8 小时前
Flutter for OpenHarmony 实战:打造天气预报应用
开发语言·网络·jvm·数据库·flutter·harmonyos
安全二次方security²8 小时前
CUDA C++编程指南(7.25)——C++语言扩展之DPX
c++·人工智能·nvidia·cuda·dpx·cuda c++编程指南
xyq20248 小时前
Java 抽象类
开发语言
老鼠只爱大米8 小时前
LeetCode经典算法面试题 #98:验证二叉搜索树(递归法、迭代法等五种实现方案详解)
算法·leetcode·二叉树·递归·二叉搜索树·迭代
爱装代码的小瓶子8 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++
童话名剑12 小时前
训练词嵌入(吴恩达深度学习笔记)
人工智能·深度学习·word2vec·词嵌入·负采样·嵌入矩阵·glove算法
桂花很香,旭很美12 小时前
智能体技术架构:从分类、选型到落地
人工智能·架构
HelloWorld__来都来了13 小时前
2026.1.30 本周学术科研热点TOP5
人工智能·科研
疯狂的喵13 小时前
C++编译期多态实现
开发语言·c++·算法