使用文本格式存储的点云数据文件结构比较简单,每个点是一行记录,点的信息存储格式为 x y z或者 x y z r g b。
读取文本格式的点云数据时,可以按照一般的文本读取方法,这里记录一下如何使用open3d读取txt格式的点云数据
一个PCD文件是文件头部分和数据部分组成
1.2.1、open3d读写(python)
读取pcd点云文件
https://blog.csdn.net/weixin_37835423/article/details/105363615
方案一:
直接根据点云保存的类型切换系统的pcl环境,如果点云rgb字段保存为float类型,则直接将pcl版本切换成pcl-1.9之前的版本,否则将pcl版本切换成pcl-1.9版本
方案二(推荐):
系统的pcl版本一旦确定就很少去改动它,因为有很多先前的项目都是基于这个版本开发的,一旦改动版本,可能会出现"牵一发而动全身"问题,因此推荐直接对pcd文件进行更改,以适应系统的pcl版本.
将rgb字段uint类型转换为float类型:
运行修改程序后的结果
与temp_1_9.pcd文件内容一致,转换成功.
LAS是一种存储点云的公开数据格式,主要用来存储雷达点云数据,LAZ是对LAS格式的无损压缩。
最新的LAS规格版本是LAS 1.4。laspy库可以支持1.2~1.4版本的LAS文件。
https://laspy.readthedocs.io/en/latest/index.html
一个LAS文件有三部分组成:文件头区(Header)、可变长记录区(VLRs)、点集记录区(Point Records)
文件头包含数据版本,点的格式(每个点存储的不同维度)等信息;可变长记录包括一些元信息,如坐标系信息,额外的维度等信息;点集记录区是las文件的核心,记录点的x、y、z坐标信息和r、g、b、classification、intensity等其他属性信息。
点的格式共有11个版本,其中第0版为基础,其他后续版本在第0版的基础上增加了其他字段,具体字段可以参考官方网站解释
https://laspy.readthedocs.io/en/latest/intro.html
3.2.1、使用laspy 读写(Python)
使用laspy写las文件
3.2.2、使用laslib读写(C++)
使用C++操作las文件可以使用laslib库。
写入las文件
PLY(Polygon File Format)是一种常见的点云存储格式,由斯坦福大学开发,其最早主要用于存储三维扫描仪器的点云数据。
PLY文件是由文件头和数据区两部分组成。
文件头(header)
其中文件头记录的是点云文件中的注释、元素类别和属性,以ply开头,以end header结尾。
文件头的第二行是文件的存储方式和版本,以format开头,依次是编码方式、版本。编码方式有三种分别是ascii、binary_little_endian 、binary_big_endian。目前PLY只有1.0版本。
format之后跟注释信息,以comment开头,制作者可以添加一些作者信息,点云基本信息。
注释信息comment之后是element元素信息+该种元素的property属性信息,element元素信息包括种类、个数,property属性信息包括属性字段的存储类型和属性名。PLY文件中的元素一般包括顶点(vertex)、面(face)、边(edge)等。元素信息和属性信息应该组合出现,格式如下
我们定义一个包含6个顶点和8个面元素的ply文件,文件头如下,
数据区域
在文件头后直接开始存储数据,存储形式分为ASCII和二进制。以ASCII为例,先按行记录每个点,全部点记录完成后再按行记录每个面。
一个完整的ply文件
4.2.1、使用plyfile读写(Python)
使用plyfile读取ply文件
打印结果
使用plyfile写入ply文件
保存ply点云文件
保存ply点云文件