打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
4D成像毫米波雷达点云数据集VOD(含Python和MATLAB数据解析仿真代码)
本文首发于公众号【调皮连续波】,其他平台为自动同步,内容若不全或乱码,请前往公众号阅读。保持关注调皮哥,和1.4W雷达er一起学习雷达技术!
【正文】
编辑 |  调皮哥的小助理        审核 | 调皮哥
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。
部分脚本如下:
读者需要修改文件路径,切不可上来就用。
软件版本:PyCharm Community Edition 2022.2.2
同时还需要下载代码:https://github.com/tudelft-iv/view-of-delft-dataset#annotation
数据转换脚本:
# 这个脚本的目的是讲VOD数据的Bin格式转为.mat格式from vod.configuration import KittiLocationsfrom vod.frame import FrameDataLoaderfrom vod.visualization import Visualization2Dimport osimport matplotlib.pyplot as pltfrom scipy.io import savematfrom 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帧数据进行验证,正确了再执行所有。
完成之后是这个样子的:
好了,如果不出意外的话,现在要该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 ==0continue; 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效果显示:
当然,这还需要数据集的支持,数据集的下载可以见官方的链接。
https://github.com/tudelft-iv/view-of-delft-dataset#annotation
5、剩余事项
好了,由于篇幅和时间有限,暂时就展示这些内容。剩余其实还有很多内容,需要读者自行丰富,比如聚类、跟踪、点云匹配、雷视融合、点云目标识别等。
上述代码和数据集是完全配合使用的,需要数据集、整套代码、实现辅导可以点这个链接联系调皮哥:雷达er入群指南,皮哥空闲之时可以交流。
【本期结束】
目前我的工作经验尚浅,还有很多内容需要学习,如果还有没有说到或者不全面的地方,还请指正,感谢大家。
喜欢本文,可以转发朋友圈~,关注【调皮连续波】和备用号【我们的雷达】。
【点击以下链接,可直达各个业务模块】
雷达技术群加入指南 付费咨询
文章投稿指南专业资料代找
商业推广合作雷达项目交流
雷达书籍清单公众号分享资料清单
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
matlab读入mat数据时,将struct型,再变成double型,顺利读入
Matlab中处理雷达数据立方体
matlab.mat文件的建立和save的使用
MATLAB中动态“修改”变量名——用于系列数据文件批量处理
聊聊用Lidar感知出来的环境
关于matlab安装后无法与.m、.mat、.fig文件之类关联解决方案
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服