KITTI数据集的使用——雷达与相机的数据融合
目录
- 目的
- 如何实现
- kitti数据集简介
- kitti数据集的raw_data
- 利用kitti提供的devkit以及相应数据集的calib文件
- 解读calib文件夹
- 解读devkit
目的
使用雷达点云提供的深度信息
如何实现
将雷达的三维点云投影到相机的二维图像上
kitti数据集简介
kitti的数据采集平台,配置有四个摄像机和一个激光雷达,四个摄像机中有两个灰度摄像机,两个彩色摄像机。
从图中可看出,关于相机坐标系(camera)的方向与雷达坐标系(velodyne)的方向规定:
camera: x = right, y = down, z = forward
velodyne: x = forward, y = left, z = up
那么velodyne所采集到的点云数据中,各点的x轴坐标,即为所需的深度信息。
更多详细的简介网络上都能搜索到,这里只列举了与当前目的相关的必要信息。
kitti数据集的raw_data
raw_data对于每个序列都提供了同步且校准后的数据、标定数据。
同步且校准后的数据:
./imageXX 包含有各个摄像机采集到的图像序列
./velodyne_points 包含有雷达扫描到的数据,点云形式,每个点以 (x,y,z,i) 格式存储,i为反射值
(雷达采集数据时,是绕着竖直轴旋转扫描,只有当雷达旋转到与相机的朝向一致时会触发相机采集图像。不过在这里无需关注这一点,直接使用给出的同步且校准后的数据即可,它已将雷达数据与相机数据对齐,也就是可以认为同一文件名对应的图像数据与雷达点云数据属于同一个场景。)
标定数据:
./cam_to_cam 包含有各个摄像机的标定参数
./velo_to_cam 包含有雷达到摄像机的变换参数
对于raw_data,kitti还提供了样例工具,方便读取各种数据文件并输出,参见官网raw_data下载页的development kit
利用kitti提供的devkit以及相应数据集的calib文件
解读calib文件夹
cam_to_cam,包含各相机的标定参数
- S_xx: 1x2 矫正前xx号相机的图片尺寸
- K_xx: 3x3 矫正前xx号相机的标定参数
- D_xx: 1x5 矫正前xx号相机的畸变系数
- R_xx: 3x3 外参,xx号相机的旋转矩阵
- T_xx: 3x1 外参,xx号相机的平移矩阵
- S_rect_xx: 1x2 矫正后XX号相机的图片尺寸
- R_rect_xx: 3x3 旋转矩阵,用于矫正xx号相机,使得图像平面共面(原话是make image planes co-planar)。
- P_rect_0x: 3x4 投影矩阵,用于从矫正后的0号相机坐标系 投影到 X号相机的图像平面。
这里只用到最后两个矩阵R_rect和P_rect
velo_to_cam,从雷达坐标系到0号相机坐标系的转换
- R: 3x3 旋转矩阵
- T: 3x1 平移矩阵
- delta_f 和delta_c 已被弃用
由此可以得出从雷达坐标系变换到xx号相机的图像坐标系的公式:
设X为雷达坐标系中的齐次坐标 X = [x y z 1]',对应于xx号相机的图像坐标系的齐次坐标Y = [u v 1]',则:
其中
(R|T) : 雷达坐标系 -> 0号相机坐标系
R_rect_00: 0号相机坐标系 -> 矫正后的0号相机坐标系
P_rect_0x: 矫正后的0号相机坐标系 -> x号相机的图像平面
更详细完整的解读参见devkit中的readme.txt
解读devkit
官网提供的样例代码中 run_demoVelodyne.m 实现了将雷达点云投影到相机图像
代码流程
- 从所给路径中读取标定文件,获取具体矩阵数值
- 根据上述公式,计算投影矩阵 P_velo_to_img,即 Y = P_velo_to_img * X
- 从所给路径中读取相机图片,并加载雷达的点云数据。由于只做展示用,为了加快运行速度,对于雷达点云,每隔5个点只保留1个点
- 移除那些距离雷达5米之内(雷达的x方向)的点 (猜测这些点落在相机和雷达之间,故不会出现在图像平面上)
- 作投影计算,得到投影到二维图像上的点
6.在图像上画出投影后的点,按照深度(雷达点的x方向值)确定颜色,彩色则是暖色越近,冷色越远;灰度则是深色越近,浅色越远。
若需要从深度图获取深度值,应按照画投影点时深度值到颜色(灰度)值的转换。
转载于:https://www.cnblogs.com/notesbyY/p/10478645.html
KITTI数据集的使用——雷达与相机的数据融合相关推荐
- 【KITTI】KITTI数据集简介(三) — 图像数据image_2
KITTI数据集种共包含了4相机数据,2个灰度相机和2个彩色相机,其中image_2存储了左侧彩色相机采集的RGB图像数据(RGB).其他图像数据本次暂时不介绍,后续算法研究如果用到再进行补充. 相机 ...
- 【3D目标检测】KITTI数据集介绍
目录 概述 数据集下载 激光雷达数据(`data_ object_velodyne`) 图像数据(`data_ object_image_ 2`) 标注数据(`data_ object_label 2 ...
- KITTI数据集(概念版)
一.参考资料 KITTI 官网 kitti数据集各个榜单介绍 自动驾驶KITTI数据集详解 KITTI数据集简介与使用 kitti数据集各个榜单介绍 KITTI数据集介绍 KITTI数据集简介(一) ...
- 【自动驾驶】视觉与毫米波雷达数据融合技术
文章目录 一.相机介绍 二.毫米波雷达介绍 三.为什么要做传感器融合 四.相机与毫米波雷达的融合方式 五.雷达与相机联合标定 (1)毫米波雷达坐标系至世界坐标系 (2)世界坐标系至图像像素坐标系 六. ...
- vts传感器采取船舶的_在VTS系统中实现雷达信息与AIS信息融合的方法探讨
摘 要:本文探讨了AIS设备在VTS系统中的应用,还分析了VTS系统.AIS与雷达的作用.提出实现雷达信息与AIS信息融合的必要性,并对信息融合的基本原理与方法步骤展开说明,有效解决了不同设备中同一信 ...
- 多相机坐标转换_使用KITTI数据集实现坐标转换
本文的主要内容,是讨论如何将KITTI激光雷达的点云数据,映射到图像中去. KITTI数据集是怎么采集的 下面这幅图是车的俯视图,可以看到,用到了2个彩色相机,2个灰度相机,1个激光雷达.1个GPS/ ...
- kitti数据集_KITTI数据集激光雷达坐标系下的里程计真值
由KITTI数据集Odometry模块的devkit_odometrydevkitreadme.txt所述,KITII数据集提供里程计的真值是在左相机表坐标系下的,并没有提供激光雷达坐标系下的真值.因 ...
- 【MMDetection3D】环境搭建,使用PointPillers训练测试可视化KITTI数据集
文章目录 前言 3D目标检测概述 KITTI数据集简介 MMDetection3D 环境搭建 数据集准备 训练 测试及可视化 绘制损失函数曲线 参考资料 前言 2D卷不动了,来卷3D,之后更多地工作会 ...
- 使用PCL库将KITTI数据集可视化
PCL点云可视化 KITTI数据集浅析 KITTI数据集简介 KITTI基本结构 Calib Velodyne 标签数据解析 点云数据可视化 创建点云对象 创建视窗对象 添加点云到视窗 相机参数的设置 ...
最新文章
- 单片机有啥用?现在用的还多吗?
- HDU2222(AC自动机模版题)
- 平衡二叉树及其应用场景
- day8--socketserver
- linux方向键ascii_上下左右 方向键的ASCII码值是多少?
- 使用java的HttpClient实现抓取网页数据
- php获取压缩文件列表,php获取所有文件并压缩
- 信用贷款额度是怎么确定的?
- 和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?
- C/C++中volatile关键字的作用
- 机器学习正面临着可重现性危机!
- 客户管理软件系统源码
- xposed android id修改,Xposed模块开发:修改设备IMEI
- PDF转CAD经典软件有什么
- android 获取短信中心号码,无法发短信,短信中心号码设置 解决办法!!!
- 【ASP.NET】RSA加密,前端加密,后端解密,有效哦!
- java数组转换成单链表_【转】单向链表(单链表)的Java实现
- 经典同步时序逻辑电路分析汇总(第六道)(同步四进制可逆加减法计数器)
- selenium源码通读·4 |webdriver/common分析
- flashback(二)
热门文章
- LCA问题的RMQ解法解析
- PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency (PointDSC) 论文学习笔记小结
- 人机融合群智计算【会议】
- 爬虫爬评书吧_python scrapy+Mongodb爬取蜻蜓FM,酷我及懒人听书
- JVM内存及GC回收
- Spring 事务管理总结
- Java网络编程之NIO编程(待补充)
- Python GUI界面编程初步 03 - Tkinter基础设计案例
- 输出结果 配置_经典架构新玩法:用单端仪表放大器实现全差分输出
- linux修改默认python版本_Linux 升级 Python 并修改默认版本