1、云添加噪声
https://github.com/tom-uchida/Add_Noise_to_Point_Cloud
不仅可以添加坐标的高斯噪声,还可以添加颜色的噪声。
2. 八叉树结构
https://github.com/jbehley/octree
八叉树是理解点云空间结构的基本功,这是一种比常规八叉树还要快的一种结构。
3. 轻量级json解析库--cJson
https://github.com/DaveGamble/cJSON
有人基于这个做了改进,也挺好用的
https://github.com/Bwar/CJsonObject
4. 轻量级数学运算库
https://www.alglib.net/
免费版提供完整的数学功能,不过只能开单线程,付费版提供了运算加速优化。不想用Eigen的可以尝试下。
5. 3D模型转换
https://github.com/assimp/assimp
几乎你能想到的所有的3D模型格式都能读和写。VTK也是借助此库对3D数据读写。风评bug多,但中规中矩操作的话应该不成问题。
6. Parralel Bundle Adjustment
https://github.com/cbalint13/pba
可能你对Bundle Adjustment很陌生,但也许你曾听过它另一个名字:光束法平差,这是一个基于CUDA的并行版本
7.meshlab
https://github.com/cnr-isti-vclab/meshlab
或许你想做一些mesh生成的算法之类的,那这个开源库能够满足你很多功能,可以吸收借鉴很多代码。
8.PyTorch3D
提供了3D数据深度学习的框架,由facebook开发并开源
https://github.com/facebookresearch/pytorch3d
9. OpenCV
https://github.com/opencv/opencv
这个不再赘述,计算机视觉领域的巨无霸
10. 一个轻量级的三维重建库,集成了很多常见的算法
https://github.com/mkazhdan/PoissonRecon
11、 PCL (Point cloud library)
特点
• 支持多平台(Win,Linux, Mac)
• 功能齐全,可扩展性好
• 广泛用于机器人,很多开源算法和系统(ROS)
12、PDAL
.
13、Open3D
特点
• 支持多平台
• python集成成熟,可和 Pytorch,Tensorflow 集成
14、libLAS
已经没有维护了。
15、LASlib(LASTool)库
PDAL是点云数据处理的库。这是一个C/C++开源库,用于点云数据的转换和处理。尽管该库中许多工具的重点和发展都起源于激光雷达点云数据的处理,但它也不限于激光雷达数据。
一个简单的PDAL点云处理流程,由读文件、滤波模块和写点云模块组成
组成此操作以将数据重新投影并加载到PostgreSQL的PDAL JSON流程如下所示:
{
"pipeline":[
{
"type":"readers.las",
"filename":"input.las"
},
{
"type":"filters.reprojection",
"out_srs":"EPSG:3857"
},
{
"type":"writers.pgpointcloud",
"connection":"host='localhost' dbname='lidar' user='hobu'",
"table":"output",
"srid":"3857"
}
]}
PDAL可以为点云的滤波、剪裁、平铺、转换为处理流程以及必要时重用等操作组成中间模块。它允许您将这些流程定义为JSON文件,并提供一个pipeline来执行它们。
它与其他工具有何不同?
LAStools
Martin Isenburg(https://www.cs.unc.edu/~isenburg/)的LAStools是可用于激光雷达处理的最常见的开源处理工具套件之一。PDAL在许多重要方面的理念不同:
1,PDAL的所有模块都是在OSI许可下作为开源软件发布的。
2,PDAL允许开发人员在处理流程作为专有扩展模块。这些可能是自定义格式读取器、专门的算法或整个方案。
3,PDAL可以对任何格式的点云数据进行操作,而不仅仅是ASPRS LAS。LAStools可以读取和写入除LAS以外的其他格式,但会将所有数据与其对LAS数据的内部处理相关联,从而将其限制为LAS格式提供的维度类型。
4,PDAL由用户使用其声明性JSON语法进行协调。LAStools是通过将许多小型的、专门化的命令行实用程序与复杂的参数连接在一起。
5,PDAL是一个开源项目,它的所有开发活动都可以在线获得https://github.com/PDAL/PDAL
与PCL的区别
PCL点云数据的一个补充而不是替代的开源软件处理的套件。PCL库的开发专注于算法开发、机器人和计算机视觉以及实时激光扫描仪处理。PDAL可以读写PCL的PCD格式。
与Potree的区别
Potree是一个WebGL HTML5点云渲染器,使用ASPRS LAS和LASzip压缩LAS。你可以在https://github.com/potree/potree/进行访问
其他开源点云库
其他开源点云软件倾向于桌面GUI,而不是以库为中心。它们包括一些处理操作,有时甚至嵌入PDAL之类的工具。这些其他工具包括:
libLAS
CloudCompare
Fusion
OrfeoToolbox
libLAS项目是一个早于PDAL的开源项目,它提供了PDAL提供的一些处理功能。它目前处于维护模式,因为它依赖于LAS,相关的LAStools功能作为开源库发布,以及Python LAS软件的完成。
PDAL是从何而来?
PDAL借鉴了另一个非常流行的开源项目GDAL。GDAL是地理空间数据抽象库,它在整个地理空间软件行业中用于为各种光栅和矢量格式提供处理支持。PDAL为点云数据类型提供了相同的功能。PDAL是在为美国陆军工程兵团CRREL网格项目开发数据库存储和访问功能的基础上发展起来的。正在蔓延到libLAS中的功能被引入了一个新的库中,它的设计初衷是模仿地理空间软件领域中成功的提取、转换和加载库。随着其他软件开发人员使用PDAL为他们的软件提供点云数据转换和处理能力,PDAL已经吸引了更多的贡献者。
点云数据与栅格或矢量地理数据有何不同?
点云数据确实非常像许多地理空间从业者所熟悉的典型矢量点数据类型,但它们的庞大的数量会带来一些重大挑战。除了它们的X、Y和Z位置之外,每个点通常都有其他事物的完整属性信息,如强度、时间、RGB等。点云数据的典型矢量可能会达到一百万个左右的特征。所以这样的点云很快就会进入数十亿甚至万亿的规模,因此必须使用专门的处理和管理技术来有效地处理如此多的数据。用于提取和利用点云数据的算法也明显不同于典型的矢量GIS工作流程,数据组织对于有效利用可用计算非常重要。这些特性需要一个面向这些方法的库,PDAL实现了这一点。
PDAL擅长哪些任务?
PDAL在点云数据转换工作流程中非常有用。它允许用户通过为内容提供抽象API将算法应用于数据,从而让用户不用担心许多数据格式问题。PDAL的格式问题确实带来了一些间接成本。但是在大多数情况下,这并不重要,对于具有特定数据的特定处理工作流,专用工具肯定会优于它。PDAL还提供了一个简单的命令行,它通过Numpy扩展了简单的通用Python处理。这些特性使它对软件开发人员、数据管理人员和科学研究人员具有吸引力。
PDAL的弱点是什么?
PDAL没有提供友好的GUI界面,需要对点云的滤波、读写器有一定的了解。
PDAL首先是一个软件库。一个成功的软件库必须满足软件开发人员的需求,他们使用它为自己的软件提供软件功能。除了用作软件库之外,PDAL还提供了一些命令行应用程序,用户可以利用这些应用程序方便地用PDAL点云转换、过滤和处理数据。最后,PDAL以嵌入式操作和Python扩展的形式提供Python支持。
核心C++软件库
PDAL提供了一个C++ API开发软件,可以在自己的软件中提供点云处理能力。PDAL是跨平台C++,可以在Linux、OS X和Windows上编译运行。