pcd点云文件成功转成npy文件

pcd点云文件成功转成npy文件


前言

使用OpenPCDet平台进行3D激光点云的障碍物检测模型的训练,但是平台本身支持的格式是.bin文件,我们的点云数据是.pcd文件,尝试了直接读取pcd文件未果,所以需要进行格式转换,转成npy格式进行训练。

一、安装pypcd

详细步骤请见上一篇博客:
安装pypcd教程

二、读取pcd文件并修改

python
from pypcd import pypcd
cloud=pypcd.PointCloud.from_path('文件存放路径/文件名.pcd')
import pprint
pprint.pprint(cloud.get_metadata())
import numpy as np
new = cloud.pc_data.copy() //把数据复制给new数组

会打印出点云文件的信息:
在这里插入图片描述

1.list(tuple)转numpy array

导入数据后,因为要与kitti数据集做对标进行测试,所以数据格式需要保持统一,OpenPCDet的测试demo里对点云的要求如图所示,一共有四个参数,应该是(N, 4),包括[x, y, z, intensity],其中intensity范围是【0-1】,都一样可以置为0。
跟上图对比一下可以发现,我们要做的有:
1.把第5、6列删掉,预训练模型中没有这两个参数。
2.因为pcd文件中的intensity的值不在要求的0-1范围内,把第四列置为0。

在这里插入图片描述
元组和数组的区别
因为list(tuple)数据格式的数据无法进行更改,所以需要转换成numpy array的格式,网上有方法如下:

Converting a List of Tuples to numpy array results in single dimension

测试之后发现不行,又找到下面这个方法:
python: how to convert list of tuples to numpy array

代码如下(接上文代码):

acc=np.array([list(new) for new in new]) //把元组转成数组元素,并把结果传到acc数组

把第5、6列删掉,第四列置为0:

acc=np.delete(acc,[4,5],1)
acc[:,3]=0

2.保存文件

需要先根据Pypcd教程文档转存为pcd文件,然后再读取此文件,存为npy文件。
这么做的原因目前不太清楚,只是不先存为pcd文件后面使用OpenPCDet测试就会报错。

acc[:,[0,1]]=acc[:,[1,0]]
new_cloud = pypcd.make_xyz_label_point_cloud(acc)
new_cloud.save_pcd('路径/文件名.pcd', compression='binary_compressed')
cloud2=pypcd.PointCloud.from_path('路径/文件名.pcd')
new2 = cloud2.pc_data.copy()
acc2=np.array([list(new2) for new2 in new2])
np.save('/home/xie/OpenPCDet/tools/data/kitti/training/test/test.npy',acc2)

acc[:,[0,1]]=acc[:,[1,0]] 这一行是后期使用OpenPCDet测试的时候发现有bug,应该是自己数据集的坐标系定义与kitti的不同,所以尝试着把xy坐标对调了一下,结果分别如下图所示:
在这里插入图片描述在这里插入图片描述

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: PCD点云文件处理模型是一种用于处理点云数据的计算机模型。点云是由离散的三维点组成的集合,它可以用来表示三维物体的形状和位置。 PCD点云文件处理模型通常包括以下几个步骤:导入点云数据、预处理、分割、特征提取、分类或识别、导出处理结果。 首先,将PCD点云文件导入到处理模型中,可以使用各种点云库或软件实现此步骤。导入后,对点云数据进行预处理,例如去噪、滤波和重采样。这些预处理步骤旨在减少数据噪声和降低数据密度,以提高后续处理的效果。 接下来,进行分割操作,将整个点云分割为不同的子集。这通常通过识别点云中的平面或曲面来实现,可以使用各种分割算法,如基于几何特征或统计学方法的算法。 然后,进行特征提取,目的是从点云中提取有意义和区分度高的特征。常见的特征包括形状描述子、表面法线、曲率等。这些特征可以用于后续的分类、识别或其他应用。 最后,根据具体应用需求,可以进行分类、识别或其他处理任务。分类任务是将点云划分为不同的类别,例如将点云中的物体分类为汽车、行人、建筑物等。识别任务是识别点云中的特定目标,例如在点云中检测和识别交通标志、行人等。 处理完成后,根据应用需求,可以将处理结果导出到PCD或其他格式的文件中,以供后续使用或展示。 综上所述,PCD点云文件处理模型提供了处理点云数据的一整套流程和方法,它可以应用于各种领域,如计算机视觉、机器人技术、地理信息系统等。 ### 回答2: PCD点云文件处理模型是指将点云数据进行分析、处理、编辑和可视化的方法和工具。点云数据是由3D激光扫描仪或其他传感器获取到的大量点的集合,代表了物体或场景的表面形状。 PCD点云文件处理模型包括以下几个主要步骤: 1. 数据加载:从PCD文件中读取点云数据,并将其加载到内存中以便后续处理。常用的点云处理库,如PCL(Point Cloud Library),提供了API用于加载PCD文件。 2. 数据滤波:对点云数据进行滤波处理,去除噪点和异常点,提高后续处理的准确性。常用的滤波方法包括半径滤波、统计滤波和直通滤波等。 3. 特征提取:通过计算点云数据的几何、颜色和法线等特征,提取出物体或场景的有用信息。常用的特征提取方法包括表面法线计算、曲率计算和轮廓提取等。 4. 数据配准:将多个点云数据进行配准,以便生成更完整的场景模型。常用的配准方法包括ICP(Iterative Closest Point)和非刚体配准等。 5. 数据重建:基于点云数据,进行三维重建和模型生成。常用的重建方法有体素网格化、三角网格化和基于特征的重建等。 6. 数据可视化:将处理后的点云数据以三维图形的形式进行可视化展示,方便用户观察和分析。常用的可视化工具有PCL可视化模块和PointCloudViewer等。 PCD点云文件处理模型的应用非常广泛,包括三维建模、机器人导航、物体识别和虚拟现实等领域。通过有效处理和分析点云数据,可以帮助我们更好地理解和利用三维信息,提高相关应用的效果和性能。 ### 回答3: PCD(Point Cloud Data)是一种用于存储三维点云数据的文件格式,常用于进行三维点云的处理和分析。PCD点云文件处理模型是指对PCD文件进行操作和处理的一系列算法和方法。 PCD点云文件处理模型主要包括以下几个步骤: 1. 加载点云:首先,需要将PCD文件加载到内存中,以便进行后续的处理。可以使用特定的库或软件来读取和解析PCD文件。 2. 数据预处理:对加载的点云数据进行预处理,以去除无效点、噪声和异常点等。常用的预处理方法包括滤波、去噪和降采样等。 3. 特征提取:对预处理后的点云数据提取相关特征,以便进行后续的分析和识别。特征可以包括几何、表面和局部特征等,如法线、曲率、几何描述子等。 4. 分割和聚类:对点云进行分割和聚类,将点云分成不同的区域或对象。可以使用分割算法来提取出感兴趣的目标区域,如平面、边缘或物体等。 5. 三维重建和建模:根据点云数据进行三维重建和建模,将点云换为三维模型,以便后续的可视化、分析和应用。可以使用点云配准和融合算法,将多个点云数据拼接成一个完整的三维模型。 6. 其他应用:PCD点云文件处理模型还可以用于其他一些应用,如目标检测和识别、路径规划和导航、虚拟现实和增强现实等。 综上所述,PCD点云文件处理模型是一种用于对PCD点云文件进行操作和处理的方法和算法集合。通过加载、预处理、特征提取、分割和聚类、三维重建和建模等步骤,可以对点云数据进行分析、识别和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值