将KITTI数据集中的点云集由.bin文件转换为ubuntu PCL可以识别的PCD文件。

将KITTI数据集中.bin文件通过Matlab生成.pcd文件,解决由Matlab生成的.pcd文件无法在pcl正常显示的问题。

初学点云处理是用PCL入门的,以至于现在对任何点云的处理都想在PCL下搞,后来想着接触一些点云量大的贴近生活,就从KITTI下载,但是这里面点云数量大的惊人,在CloudComapre根本运行不起来,还是决定将此在PCL下运行。仅以此记录点云学习过程。

一、KITTI数据集下载

KITTI数据集作为自动驾驶领域的经典数据集之一,比较适合新手入门。网址如下:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d  现在直接从KITTI官网好像不能下,有个小技巧就是下载一个xun雷,通过xun雷进入网址课正常下载。前提还需要注册一下。其他人下载的都是那个29G的object,但我感觉现在用不着,就选择了如下图中的文件。

是以.bin存储的

二、.bin 2 .pcd

我试了其他的各种软件,还是感觉matlab最靠谱。

function bin2Pcd()
 clear;
 files = dir("E:\Livox\data_road\KITTI\training\bin2pcd"); % 获取当前文件夹中的所有文件
 len = length(files); % 文件数量
 name=[];
 for ii=1:len % 依次遍历所有的bin文件,将其转换为pcd格式
     if (strcmp(files(ii).name, '.') == 1) ... % 跳过.以及..文件夹
     || (strcmp(files(ii).name, '..') == 1)
        continue;
     end
     file1D=fopen("E:\Livox\data_road\KITTI\training\bin2pcd\"+files(ii).name,"rb"); %获取当前文件
     [a,count]=fread(file1D,'float32') % a 文件内容。矩阵a中存储了全部的点(481072行 * 1列。每个数据占一行,每4个数据为一组);count 文件数量
     x = a(1:4:end); %获取矩阵a中所有的x点。第1行开始,步数为4,直到最后一行
     y = a(2:4:end); % 获取矩阵a中所有的y点。第2行开始,步数为4,直到最后一行
     z = a(3:4:end); % 获取矩阵a中所有的z点。第3行开始,步数为4,直到最后一行
     intensity= b(4:4:end); % 强度(反射值)。第4行开始,步数为4,直到最后一行
     data = pointCloud([x y z],'intensity',intensity); %根据xyz坐标和强度值,转换为一个点云
     pcshow(data); %显示点云
     %hh = [files(ii).name(1:end-4),'.ply'] 文件名
     %pcwrite(data,[files(ii).name(1:end-4),'.ply'],'PLYFormat','ascii'); %将点云对象存储到 当前文件名.ply文件
     %img=pcread([files(ii).name(1:end-4),'.ply']); % 读取ply或pcd格式的文件
     %pcshow(img); %显示点云 
     pcwrite(data,[files(ii).name(1:end-4),'22.pcd']); %将点云对象存储到 当前文件名.pcd文件
 end
end

这种方式是可以生成.pcd文件的,但是确无法在pcd_viewer正常显示,几十万个点只显示几个。后来发现是因为找不到xyz导致的。

查资料了解到是因为Matlab生成的.pcd文件是双精度的,而PCL默认接受的是单精度的,只需要在上方的代码中修改一个地方。

     b = single(a);
     x = b(1:4:end); %获取矩阵a中所有的x点。第1行开始,步数为4,直到最后一行
     y = b(2:4:end); % 获取矩阵a中所有的y点。第2行开始,步数为4,直到最后一行
     z = b(3:4:end); % 获取矩阵a中所有的z点。第3行开始,步数为4,直到最后一行
     intensity= b(4:4:end); % 强度(反射值)。第4行开始,步数为4,直到最后一行

三,pcd_viewer可视化KITTI数据

pcl_viewer um_00001.pcd

完美显示。

  • 26
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值