简介
PCL开源三维点云处理库整体认识。
PCL实现任务的基本数据处理流程
主干内容划分
- 内容1: 介绍常用的PCL点云的数据类型,以及点云数据的获取与存储;
- 内容2: 介绍对PCL点云数据的两种快速空间搜索与查询的算法K-D tree和Octree;
- 内容3: 介绍基于k-d tree和Octree两种搜索算法实现针对3d数据中异常点的剔除和数据内容压缩的滤波算法;
- 内容4: 介绍3D点云数据中关键点的提取算法;
- 内容5: 介绍特征描述子算法,用于获取点云数据中那些不会随着旋转平移缩放而改变的稳定特征;
- 内容6:介绍基于特征描述子的点云配准任务的实现流程和关键算法,以及利用配准后的统一的3D点云数据进行三维曲面重建,主要方法有基于3D点云数据插值方法和3D曲面逼近方法。
- 内容7、8: 介绍基于聚类和随机采样一致性结合预定几何模型实现点云数据的分割,并基于分割的点云数据集实现线、面、等各种几何相关的测量任务。
将PCL导入到vs工程目录中
可以使用如下的python代码实现快速的将release和debug对应的.lib文件分离。
// An highlighted block
# This is a sample Python script.
import os
def file_name(file_dir):
L_debug = []
L_release = []
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.lib':
last_char = os.path.splitext(file)[0]
lens = len(last_char)
print(last_char[lens-10])
# 注意下面的[lens-10]请自行更改
if last_char[lens-10] == 'd':
L_debug.append(file)
else:
L_release.append(file)
return L_debug, L_release
if __name__ == '__main__':
# 下面的路劲要替换
l1, l2 = file_name("C:\\Program Files\\PCL 1.13.0\\3rdParty\\Boost\\lib")
f1 = open('Boost_debug.txt', 'w+', encoding='utf-8')
f2 = open('Boost_release.txt', 'w+', encoding='utf-8')
for i in l1:
f1.writelines(str(i) + "\n")
f1.close()
for i in l2:
f2.writelines(str(i) + "\n")
f2.close()
print(l1)
print(l2)
结果如下图所示:
PCL相关模块的功能介绍
PCL关键功能模块任务划分:
- libpcl filters: 采样、去除离群点、特征提取、拟合估计等数据实现数据滤波处理;
- libpcl features: 实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率、PFH和FPFH特征、旋转图像、积分图像、NARF描述子、RIFT、相对标准偏差、数据强度的筛选等;
- libpcl I/O: 数据的获取与存储等操作;
- libpcl segmentation: 实现聚类提取,如通过采样一致性方法对一系列参数模型(如平面、柱面、球面、直线等)进行模型拟合点云分割提取,提取多边形棱镜内部点云等;
- libpcl surface: 实现表面重建技术,如网格重建、凸包重建、移动最小二乘法平滑等;
- libpcl register: 实现点云配准方法,如ICP;
- libpcl keypoints: 实现不同的关键点的提取方法,这可以用来作为预处理步骤,决定在哪儿提取特征描述子;
- libpcl range: 不同格式点云数据转换为范围(深度)图;
PCL各个模块实现类的源代码整体探索
所有PCL模块的数据处理流程基本遵循以下几个步骤:
- 创建处理对象。
- 使用setInputCloud通过输入点云数据,处理模块;
- 设置算法相关参数;
- 调用计算得到输出;
案例地址: