【Python】图像+点云 结合显示
目录
效果
步骤
(1)从“LiDAR的世界”到“相机的世界” (外参变换)
(2)从“相机的3D世界”到“相机的2D幕布” (投影变换)
(3)清理和绘制 (过滤与可视化)
代码
效果
步骤
1. 访问KITTI官网(地址:The KITTI Vision Benchmark Suite)
2. 点击“raw data”
3. 这里下载的数据集是“2011_09_26_drive_0018”。点击 [synced+rectified data]来下载数据序列文件,点击 [calibration] 链接下载相机和LiDAR的标定文件
4. 下载解压后创建如下项目层级
5. 添加代码并运行。代码的主要思路如下:
(1)从“LiDAR的世界”到“相机的世界” (外参变换)
由于LiDAR和相机是两个独立的设备,它们被安装在不同的位置,朝向也可能不同。为了能将LiDAR的点投影到相机图像上,我们必须先把这个点从LiDAR的“世界”(坐标系)转换到相机的“世界”(坐标系)。而转换需要两个关键信息,分别是“旋转矩阵”和“平移向量”它们统称为“外参”,是通过LiDAR-相机标定得到的:
旋转矩阵 R:描述了LiDAR坐标系相对于相机坐标系旋转了多少。
平移向量 t:描述了LiDAR坐标系的原点相对于相机坐标系原点移动了多远。
变换公式:
P_camera = R * P_lidar + t
公式中, P_lidar表示点在LiDAR坐标系下的原始坐标;P_camera表示同一个点在相机坐标系下的新坐标,记为 (X, Y, Z)。
完成这一步后,这个3D点就已经相对于相机了。Z值现在代表了这个点到相机镜头的“深度”或“距离”。