1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > KITTI自动驾驶数据集可视化教程

KITTI自动驾驶数据集可视化教程

时间:2022-08-03 19:12:51

相关推荐

KITTI自动驾驶数据集可视化教程

本文介绍关于自动驾驶数据集KITTI的基本操作,包括CameraLiDAR可视化教程,源码已上传:/download/cg129054036/20907604

1. 数据准备

KITTI数据 (calib, image_2, label_2, velodyne) 添加到dataset/KITTI/object/training文件夹下。

目录文件结构如下:

├── dataset│ ├── KITTI│ │ ├── object│ │ │ ├──KITTI│ │ │├──ImageSets│ │ │ ├──training│ │ │├──calib & velodyne & label_2 & image_2 ├── kitti_object.py├── kitti_test.py├── kitti_util.py├── viz_util.py

2. Requirements

为了显示物体2D bbox3D bboxUbuntu系统需要安装以下工具:

mayavipillowvtkopencvPILmatplotlibnumpy

3. 可视化操作

下面依次展示KITTI数据集可视化结果,可视化操作代码存放在kitti_test.py文件中,这里通过设置data_idx=10来展示编号为000010的数据,共有9种可视化操作,依次为:

图片显示图片上绘制2D bbox图片上绘制3D bboxLidar在图片上投影LidarFOV图Lidar三维可视化Lidar绘制3D bboxLidar鸟瞰图Lidar鸟瞰图绘制2D bbox

代码中dataset需要修改为数据集实际路径

def visualization():import mayavi.mlab as mlabdataset = kitti_object(os.path.join(ROOT_DIR, '../dataset/KITTI/object')) # determine data_idxdata_idx = 10# Load data from datasetobjects = dataset.get_label_objects(data_idx) print("There are %d objects.", len(objects))img = dataset.get_image(data_idx) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img_height, img_width, img_channel = img.shape pc_velo = dataset.get_lidar(data_idx)[:,0:3] calib = dataset.get_calibration(data_idx)

(1) 图片显示

Image.fromarray(img).show()

(2) 图片上绘制2D bbox

这里KITTI数据集给出了目标在图片上的坐标位置(Xmin, Ymin, Xmax, Ymax),直接绘图即可。

show_image_with_boxes(img, objects, calib, False)

(3) 图片上绘制3D bbox

绘制物体3D bbox时,需要进行坐标系转换,KITTI数据集中给出的是物体在相机坐标系的位置(x,y,z),根据物体 bbox 尺寸(h,w,l)首先计算3D bbox8个顶点坐标,然后借助标定文件将其转换为图片坐标系坐标(u, v)

show_image_with_boxes(img, objects, calib, True)

(4) Lidar在图片上投影

Lidar坐标下各point坐标转换为图片坐标系下坐标,然后根据图片尺寸选取投影点。

show_lidar_on_image(pc_velo, img, calib, img_width, img_height)

(5) LidarFOV图

imgfov_pc_velo, pts_2d, fov_inds = get_lidar_in_image_fov(pc_velo, calib, 0, 0, img_width, img_height, True)draw_lidar(imgfov_pc_velo, show=True)

(6) Lidar三维可视化

draw_lidar(pc_velo, show=True)

(7) Lidar绘制3D bbox

绘制Lidar3D bbox时,需要进行坐标系转换,KITTI数据集中给出的是物体在相机坐标系的位置(x,y,z),这里借助标定文件将其转换为Lidar坐标系下位置,同时借助物体bbox 尺寸(h,w,l)计算3D框8个顶点坐标。

show_lidar_with_boxes(pc_velo, objects, calib, True, img_width, img_height)

(8) Lidar鸟瞰图

鸟瞰图绘制时将点云数据进行了预处理,只选取x坐标位于[0,70.4],y坐标位于[-40,40]的有效点。

show_lidar_topview(pc_velo, objects, calib)

(9) Lidar鸟瞰图绘制2D bbox

绘制时为了区分物体距激光雷达距离,将30米内目标使用绿色标志30米-50米内目标使用红色标志50米以外目标使用蓝色标志(场景0000010无此距离目标。)

img1 = cv2.imread('000010_BEV.png')img = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)show_lidar_topview_with_boxes(img1, objects, calib)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。