4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码) 您所在的位置:网站首页 毫米波雷达数据集是什么 4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)

2024-07-07 19:39| 来源: 网络整理| 查看: 265

公众号【调皮连续波】

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)_公众号

【正文】

编辑 |  调皮哥的小助理        审核 | 调皮哥

1、引言

4D成像雷达开源数据集,其实好用的并不多,VOD数据集我个人感觉还可以。这其实也在之前分享过,但是为了更加清楚地展示这个数据集如何使用,本期文章就简单做个分享。

在MATLAB环境下可以得到以下的效果:

2、数据集介绍和格式

见链接:https://github.com/tudelft-iv/view-of-delft-dataset#annotation

以及文章:雷达开源数据集 | 代尔夫特数据集(VOD),4D雷达、激光雷达和相机数据。

3、数据集解析步骤

本数据集的内容有很多,本文仅作为抛砖引玉,剩余诸多内容留待读者自行探索,本文所涉及的脚本为调皮哥自己在工作之余编写,如有疑问,请在【雷达技术交流群】中交流,全职工作比较繁忙,尽量减少私信。

下面开始解析数据:

本次解析数据,主要就是Bin转mat,然后读取mat数据进行播放,没有什么特殊的地方。然后Python主要实现功能是Bin转mat,当然熟练Python的读者也完全可以用它进行其他的开发,而不需要再转为mat,比如目标识别、雷达或者激光点云处理、雷视融合等等。

MATLAB主要实现的功能是读取mat,然后播放,同理MATLAB也能完成Python能够完成的事情。

关于Python和MATLAB,我个人感觉MATLAB更加适合于工程开发和算法验证,但是缺点就是需要许可证,Python的好处就是开源,库比较多。我喜欢MATLAB,Python也可以上手,萝卜白菜,各有所爱。

(1)Python

Python脚本比较方便,同时可以基于原来数据集提供的脚本和库函数下,有的读者可能喜欢Matlab,因此我把数据集也转成了.mat。

Bin的文件名最大数字是"09930",但文件数量只有8682多个,因此我们需要for循环9930次,一次读取所有文件,如果遇到读不到的文件夹,则continue。

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)_MATLAB_02

部分脚本如下:

读者需要修改文件路径,切不可上来就用。

软件版本:PyCharm Community Edition 2022.2.2

同时还需要下载代码:https://github.com/tudelft-iv/view-of-delft-dataset#annotation

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)_MATLAB_03

数据转换脚本:

# 这个脚本的目的是讲VOD数据的Bin格式转为.mat格式 from vod.configuration import KittiLocations from vod.frame import FrameDataLoader from vod.visualization import Visualization2D import os import matplotlib.pyplot as plt from scipy.io import savemat from vod.frame import FrameTransformMatrix plt.rcParams["font.sans-serif"] = "SimHei" plt.rcParams["axes.unicode_minus"] = False kitti_locations = KittiLocations( root_dir="E:/BaiduSyncdisk/调皮连续波(公众号)/雷达数据集/VOD数据集/view_of_delft_PUBLIC", output_dir="E:/BaiduSyncdisk/调皮连续波(公众号)/雷达数据集/VOD数据集/view_of_delft_PUBLIC", ) # 循环读取Bin文件 for frame in range(0, 1, 1): frame_name = str(frame).zfill(5) # 预先寻找 current_path = "E:/BaiduSyncdisk/调皮连续波(公众号)/雷达数据集/VOD数据集/view_of_delft_PUBLIC/radar/training/velodyne/" flag = os.path.exists(current_path + frame_name + '.bin') if not flag: continue frame_data = FrameDataLoader(kitti_locations=kitti_locations, frame_number=frame_name) transforms = FrameTransformMatrix(frame_data) vis2d = Visualization2D(frame_data) radar_data = frame_data.radar_data lidar_data = frame_data.lidar_data savemat('E:/BaiduSyncdisk/调皮连续波(公众号)/雷达数据集/VOD数据集/matlab/radar/' + frame_name + '.mat', {'score_of_tom': radar_data}) savemat('E:/BaiduSyncdisk/调皮连续波(公众号)/雷达数据集/VOD数据集/matlab/lidar/' + frame_name + '.mat', {'score_of_tom': lidar_data})

需要等待20几分钟,然后全部数据就转好了,这个时候不要着急。如果无法确保自己的程序是否运行正确,可以再开始的时候选择2帧数据进行验证,正确了再执行所有。

完成之后是这个样子的:

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)_数据集_04

好了,如果不出意外的话,现在要该MATLAB上场了。

(2)MATLAB

版本:MATLAB 2022b,可千万要注意,有的老版本不支持新函数。数据读取与绘图脚本如下所示:

clc; close all; clear all; %% addpath('E:\BaiduSyncdisk\调皮连续波(公众号)\雷达数据集\VOD数据集\view_of_delft_PUBLIC\lidar\training\image_2\'); addpath('E:\BaiduSyncdisk\调皮连续波(公众号)\雷达数据集\VOD数据集\view_of_delft_PUBLIC\lidar\training\calib\'); for index =1650:9930 tic file_name = num2str(index,'%05d'); %字符扩展 %判断文件是否存在 flag = exist([file_name,'.mat'],'file'); if flag ==0 continue; end %读取传感器数据 radar_data = importdata(['E:\BaiduSyncdisk\调皮连续波(公众号)\雷达数据集\VOD数据集\matlab\radar\',file_name,'.mat']); camera = imread([file_name,'.jpg']); lidar_data = importdata(['E:\BaiduSyncdisk\调皮连续波(公众号)\雷达数据集\VOD数据集\matlab\lidar\',file_name,'.mat']); %校准 %绘图显示 figure(1); subplot(1,3,1); set(gca,'Units','normalized','Position',[0.02,0.1,0.3,0.8]); imshow(camera,[],'parent',gca); title(['实时相机 帧数',file_name]); subplot(1,3,2); % set(gca,'Units','normalized','Position',[0.1,0.2,0.3,0.8]); plot3(-lidar_data(:,2),lidar_data(:,1)-2.5,lidar_data(:,3)+1.18,'b.'); hold on plot3(-radar_data(:,2),radar_data(:,1),radar_data(:,3),'r.'); xlim([-20,20]) ylim([-40,40]) grid on view(2); title('激光+毫米波雷达点云数据'); hold off subplot(1,3,3); % set(gca,'Units','normalized','Position',[0.02,0.1,0.3,0.8]) plot3(-radar_data(:,2),radar_data(:,1),radar_data(:,3),'b.'); xlim([-20,20]) ylim([0,60]) grid on view(2); title('4D成像雷达点云数据'); hold off %%记得把横纵坐标加上,我忘记了,不想加了。 end

效果显示:

4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)_数据集_05

当然,这还需要数据集的支持,数据集的下载可以见官方的链接。

https://github.com/tudelft-iv/view-of-delft-dataset#annotation

5、剩余事项

好了,由于篇幅和时间有限,暂时就展示这些内容。剩余其实还有很多内容,需要读者自行丰富,比如聚类、跟踪、点云匹配、雷视融合、点云目标识别等。

上述代码和数据集是完全配合使用的,需要数据集、整套代码、实现辅导可以点这个链接联系调皮哥:雷达er入群指南,皮哥空闲之时可以交流。

【本期结束】

目前我的工作经验尚浅,还有很多内容需要学习,如果还有没有说到或者不全面的地方,还请指正,感谢大家。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有