从.las文件读取点云

问题描述

我正在使用.las激光雷达文件的项目中。

搜索了一下,发现PDAL可用于将.las转换为.pcd文件,因此我可以使用PCL库。

我使用PDAL将文件从.las转换为.pcd。

当我尝试使用以下代码读取pcd文件时:

*******
*******
*******
*******
*******
*******
*******

结果如下,我很惊讶转换后的文件中的所有坐标都是(0,0)。这可能是什么问题?

enter image description here

解决方法

我建议您仔细查看PCD writer documentation,以获取有关此特定转换的许多有用的指针。

这里的问题是,尽管双精度浮点数是有效的PCD,但PCL的默认点类型不支持它们。您可以手动编辑已经转换的PCD文件,将x,y和z尺寸的大小从8更改为4。或者您可以重新运行pdal translate,以确保在选择时设置数据类型和精度您要使用order选项转换的字段。一个例子看起来像

pdal translate input.las output.pcd --writers.pcd.order="X=Float:2,Y=Float:2,Z=Float:2"

此外,您可能不需要诸如“ ScanAngleRank”之类的额外字段。如果这样做,则需要提供PCL点类型支持,以便能够分别处理它们。要删除多余的字段,您可以添加

--writers.pcd.keep_unspecified=false

以前建议的命令。

要记住的最后一件事是,处理UTM中的大坐标(看起来很像)并以单精度存储它们会导致精度降低。您应该考虑在转换为PCD之前对数据进行偏移(可能使用PDAL的transformation filter)。