点云数据处理

why?广泛的引用场景:机器人技术、3D图形、自动驾驶、虚拟现实
处理方式:1. 传统方法:侧重于对点的局部几何特征进行编码
what?定义:

1.1 3D点云数据定义:

3D数据的表述形式分为以下4种:
a)点云:由N个D维的点组成
b)Mesh:由三角面片和正方形面片组成
c) 体素:由三维栅格将物体用0和1 表征
d)多角度的RGB图像或者RGB-D图像

3D点云是三维空间种点的数据集,常用来表示3D物体的表面
通常,R、G、B 颜色值和表面法线等附加信息也可以嵌入为点属性,具体取决于用于捕获点的传感器。
与采用规则网格表示的 2D 图像不同,3D 点云是无组织的,没有特定的顺序。 这种无序的性质使得在处理点云和设计方法时需考虑其特殊性

1.2 3D点云数据的获取

通常使用LiDAR传感器获得点云数据
激光雷达(LiDAR)代表光检测和测距,与之类似的传感器有雷达和声纳
具体原理如下:激光雷达发射高密度的激光束,光束沿直行传播打到物体的表面,然后以相同的方向反射回去(忽略少量光线发生衍射现象),反射回去的光线由光电探测器(光敏传感器)检测收集,结合激光束往返传播的距离与方向信息就可以生成物体的3D几何形状。实际在使用过程中,激光发射器置于连续旋转的底座上,从而使得发射的激光束能以不同方向到达物体表面(前、后、左、右)。

1.3 点云数据的特点

![[Pasted image 20221020104545.png]]

1.4 3D点云数据在计算机种的储存

点云数据 以浮点二进制文件格式储存
每个数据通常由四位16进制浮点数表示,分别表示点云的x,y,z,r(强度和反射值)

点云数据处理

对于点云数据的处理,主要涉及点云滤波、点云配准、点云分类、点云语义分割、点云目标识别等

2.1 点云滤波(数据预处理)

详见:点云数据详情 点云滤波,顾名思义,就是滤掉噪声。原始采集的点云数据往往包含大量散列点、孤立点.
点云滤波的主要方法有:双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致滤波、VoxelGrid滤波等,这些算法都被封装在了PCL点云库中。

2.2 特征与特征描述

描述点云数据光有位置不够,还需要计算一些额外参数,比如法线方向、曲率、纹理特征等
常用的特征描述算法:法线和曲率计算及特征值分析、PFH、FPFH、3D Shape Context、Spin Image等。

PFH:点特征直方图描述子,FPFH:跨苏点特征直方图描述子,FPFH是PFH的简化形式。

2.3 特征点的提取

将二维特征点的思想推广到三维,关键点的数量远远少于特征点,与局部特征子结合在一起,组成关键点描述子用来形成原始数据的表示,而且不失代表性和描述性,从而加快了后续的识别,追踪等对数据的处理速度。
常见的三维点云关键点提取算法有一下几种:ISS3D、Harris3D、NARF、SIFT3D

这些算法在PCL库中都有实现,其中NARF算法应用较为常见。

2.4 点云配准

2.5 点云分割与分类

点云的分割与分类处理比二维图像的处理复杂很多,点云分割又分为区域提取、线面提取、语义分割与聚类等。同样是分割问题,点云分割涉及面太广,一般说来,点云分割是目标识别的基础。

分割:区域声场、Ransac线面提取、NDT-RANSAC、K-Means、Normalize Cut、3D Hough Transform(线面提取)、连通分析

分类:基于点的分类,基于分割的分类,监督分类与非监督分类。

2.6 目标识别与检测

这是点云数据处理中一个偏应用层面的问题,简单说来就是Hausdorff距离常被用来进行深度图的目标识别和检测,现在很多三维人脸识别都采用这种技术。

2.7 SLAM图优化

SLAM技术中,在图像前端主要获取点云数据,而在后端优化主要就是依靠图优化工具。而SLAM技术近年来的发展也已经改变了这种技术策略。在过去的经典策略中,为了求解LandMark和Location,将它转化为一个稀疏图的优化,常常使用g2o工具来进行图优化。常用的工具和方法如下。

g2o、LUM、ELCH、Toro、SPA

SLAM方法:ICP、MBICP、IDC、likehood Field、 Cross Correlation、NDT

2.8 变化检测

当无序点云在连续变化中,八叉树算法常常被用于检测变化,这种算法需要和关键点提取技术结合起来,八叉树算法也算是经典中的经典了。

2.9 三维重建

获取到的点云数据都是一个个孤立的点,从一个个孤立的点得到整个曲面就是三维重建的问题。

直接采集到的点云是充满噪声和孤立点的,三维重建算法为了重构出曲面,常常要应对这种噪声,获得看上去很光滑的曲面。

常用的三维重建算法和技术有:

泊松重建、Delauary triangulatoins

表面重建,人体重建,建筑物重建,输入重建

实时重建:重建纸杯或者龙作物4D生长台式,人体姿势识别,表情识别

3. 点云数据集

已有的3D点云数据集主要有ModelNet40,ShapeNet,S3DIS,3D Match,KITTI,其中前3者主要应用于CAD模型,室内建筑物分割,室内场景配准等,KITTI数据集主要应用于自动驾驶、ADAS、外部场景视觉SLAM等。

4. 基于点云数据的目标识别

针对当前视觉SLAM采集的数据,下文重点对比点云数据的目标识别方法,包括传统方法和深度学习方法。

4.1 传统方法

  1. 基于边缘的方法

检测点强度快速变化的边缘。这些边通常是点云中不同区域的边界。因此,点云的区域被分割。

  1. 基于区域的方法

首先搜索邻域。附近的点具有相似模式的区域被组合成孤立区域,然后是发现不同区域之间的差异。

  1. 基于属性的方法

首先计算点云数据的属性,然后基于属性对点云进行聚类。

  1. 基于模型的方法

该方法是纯几何的。相同的点数学表示为几何形状,如球体、圆锥体、平面和圆柱体被分组为一个段。

  1. 基于图的方法

将点云视为图。一个简单的模型是每个顶点对应一个点,边连接到特定的点与邻近点。

一般来说,分割点云有两个传统的分支。这个首先涉及纯数学模型和几何推理技术比如区域生长或模型拟合。第二个是3D图像的提取,使用特征描述符的特征和使用机器的对象类别分类学习技巧。

第一种方法提供了更快的计算速度,但它只适用于简单的场景。因此,第二种方法更为有效通常在实践中使用,通常表现更好。考虑到第二种方法,分割通常被表述为逐点分类问题。每个点首先由特征描述符描述例如FPFH或SHOT,它们依靠手工设计特征和点的局部几何特性。然后,提取特征被连接到特征向量并输入到分类器中,如支持向量机机器(SVM)和随机森林(RF)。

4.2深度学习方法

目前对于点云数据的分类与分割,深度学习方法已经成为主流。比较常用的有PointNet,PointNet++, DGCNN, PointCNN, PointSIFT, Point Transformer, and RandLANet等。其中以前两者应用居多。