KITTI激光雷达点云解析与图像反投影

news/2024/10/23 22:29:32/

介绍

KITTI作为广为人知的自动驾驶数据集,很多创业公司喜欢拿来做算法排名。
官网下载比较慢,这里参考文末博客给出百度云下载(27G)

链接:https://pan.baidu.com/s/1-4WchJlcZ2guwcfbHqrdFw
提取码:grys

解析

我的目的是解析三维激光点云并投影至二维图像坐标,得到类似RGBD相机的效果。
需要用到的文件包括:二进制Velodyne点云、双目RGB相机左眼cam2图像、激光到相机矩阵等标定文件

各传感器坐标在KIT的文章Vision meets Robotics: The KITTI Dataset中给出

参考semantic-kitti-api的开源代码,使用numpy读取点云bin文件reshape为x,y,z,r(回波强度)格式
点云index从外圈到内圈顺时针存储

# read raw data from binary
scan = np.fromfile(binary, dtype=np.float32).reshape((-1,4))
points = scan[:, 0:3] # lidar xyz (front, left, up)
remissions = scan[:, 3]

标定文件calib/*.txt解读:

P0: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 0.000000000000e+00 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.875744000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 4.485728000000e+01 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.163791000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.745884000000e-03
P3: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.395242000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.199936000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.729905000000e-03
R0_rect: 9.999239000000e-01 9.837760000000e-03 -7.445048000000e-03 -9.869795000000e-03 9.999421000000e-01 -4.278459000000e-03 7.402527000000e-03 4.351614000000e-03 9.999631000000e-01
Tr_velo_to_cam: 7.533745000000e-03 -9.999714000000e-01 -6.166020000000e-04 -4.069766000000e-03 1.480249000000e-02 7.280733000000e-04 -9.998902000000e-01 -7.631618000000e-02 9.998621000000e-01 7.523790000000e-03 1.480755000000e-02 -2.717806000000e-01
Tr_imu_to_velo: 9.999976000000e-01 7.553071000000e-04 -2.035826000000e-03 -8.086759000000e-01 -7.854027000000e-04 9.998898000000e-01 -1.482298000000e-02 3.195559000000e-01 2.024406000000e-03 1.482454000000e-02 9.998881000000e-01 -7.997231000000e-01

P0-P3为3x4相机投影矩阵,0=gray_L 1=gray_R 2=rgb_L 3=rgb_R
R0_rect为3x3相机旋转矩阵
Tr_velo_to_cam为3x4激光到相机RT矩阵
点云对图像投影使用如下公式

Z[u v 1]T = P2 * R0_rect * Tr_velo_to_cam * [x y z 1]T

写为齐次形式,R0在右下角补1变为4x4,Tr最后一列补1变为4x4,大写Z为相机深度

代码

使用python实现,过滤了激光雷达背后深度为负的点云,保留图像宽高内点,深度以colormap表示
源码与测试数据已开源至github仓库azureology/kitti-velo2cam: project lidar point cloud to camera image

效果

参考

  • KITTI数据集下载(百度云)_u013086672的博客-CSDN博客
  • Vision meets Robotics: The KITTI Dataset
  • PRBonn/semantic-kitti-api: SemanticKITTI API for visualizing dataset, processing data, and evaluating results
  • numpy.logical_or — NumPy v1.19 Manual
  • matplotlib - python 3 scatter plot gives "ValueError: Masked arrays must be 1-D" even though i am not using any masked array - Stack Overflow

http://www.ppmy.cn/news/245838.html

相关文章

Linux /dev/sda1磁盘满了,清理办法。

查看内存使用情况 df -lh Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 789M 9.4M 780M 2% /run /dev/sda1 28G 27G 6.1M 100% / tmpfs 3.9G 248M 3.7G 7% /dev/shm tmpfs …

VS2022 Visual Studio 2022专业版全功能离线版下载

下载器、下载脚本链接 (52条消息) VS2022离线安装包完整功能下载.rar-IT管理文档类资源-CSDN文库https://download.csdn.net/download/juns6/75246415压缩包中包含一个目录,两个文件: 一个目录:Visual Studio 2022 Professional 安装包下载…

openstack的ubuntu20.04桌面版镜像制作

openstack的ubuntu20.04桌面版镜像制作 1、前期准备2、在VMware中安装Ubuntu20.043、在windows中合并ubuntu的vdmk文件4、ubuntu20.04.vmdk格式转换5、镜像上传到Openstack6、创建实例结果 1、前期准备 镜像文件软件环境 VMware 2、在VMware中安装Ubuntu20.04 安装教程网络上…

Linux磁盘爆满!明明有空间却提示磁盘空间不足!session等小文件太多删不掉!

错误: 1. Linux使用tab补全时提示 bash: cannot create temp file for here-document: No space left on device 2. 网站前端提示Session读写失败:open(..../session_..., O_RDWR) failed: No space left on device (28) 原因: (在本案例里…

几个服务器下很占存储的 隐藏缓存文件夹

18G ./.pylint.d 18G ./.gnome2_private 27G ./dataset 99G ./vpr 18G ./.cache 42G ./anaconda3 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是…

大文件rosbag播放太慢问题解决

录制得到的原始bag包为slam_2019-12-14-23-24-43.bag, 我使用rosbag filter工具将其中某些消息过滤出来了,使用的指令为 rosbag filter slam_2019-12-14-23-24-43.bag slam_2019-12-14-23-24-43_filter.bag "topic /lslidar_point_cloud or topi…

df查看磁盘空间占用满了,却找不到大文件

某台搭建mysql数据库的服务器,邮件一直报警磁盘空间占用大。于是df -hT查看。 Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 197G 161G 27G 86% / tmpfs tmpfs 16G 0 16G 0% /dev/shm…

【通俗易懂】为什么视频存储用YUV而不是RGB

RGB和YUV区别 RGB常常用于图像的存储,并且十分简单。 但是在视频领域中,RGB就不那么常见了。我们知道,视频其实是由一张张连续的图片序列组成的,我们假设有一个1080p(1920 * 1080)分辨率、帧率为30帧的视频…