锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

3D点云数据分析与处理-传统方法与深度学习

时间:2023-02-10 00:30:00 sac系列连接器g102p方形反射型光电传感器

0.摘要

基于 3D新兴的视觉应用场景蓬勃发展,3D点云越来越受到人们的广泛关注。点云广泛应用于机器人技术和3领域D图形、自动驾驶、虚拟现实(AR/VR/MR)等。为了跟上不断增长的应用需求,研究和开发有效存储和处理点云的相关算法正在显著提高。传统的分析算法处理点云,主要集中在编码对点的局部几何特征。深度学习在图像数据处理领域取得了巨大的成功,迫切需要研究相应的点云神经网络结构。目前的研究热点主要涉及深度神经网络的发展,用于各种点云处理任务。

1. 3D点云数据

1.1 3D点云定义

3D数据的表达形式一般分为以下四种:

a) 点云:由N 当这个D维点组成时D =一般代表3的时间(x,y,z)当然,坐标也可以包括一些特征,如法向量和强度。这是今天的主要数据类型。

b) Mesh:由三角面片和正方形面片组成。

c) 体素:物体用0和1用三维格栅表示。

d) 多角度的RGB图像或者RGB-D图像

3D 点云是三维空间中的点数据集, 点云用来表示对象 3D 表面。 每个点有三个坐标(X,YZ)组成唯一标识其相对于正交轴的位置。通常,R、G、B 附加信息,如颜色值和表面法线,也可以嵌入到点属性中,这取决于用于捕获点的传感器。 通常意义上的点云包含大量的点(成千上万甚至更多)。 用规则网格表示 2D 图像不同,3D 点云无组织,无特定顺序。 这种无序的性质使得在处理点云和设计方法时需要考虑其特殊性。

1.2 获取点云数据

3D 点云的形成与 2D 图像的形成方式明显不同。 2D 图像是一种光学现象,用镜头捕捉来自环境的光线。 2D 倒置图像产生在图像平面上,然后调整形成正立图像。相比之下,通常使用 LiDAR 传感器获取 3D 点云。 激光雷达(LiDAR)代表光检测和测距。 类似的传感器有雷达和声纳。 雷达和声纳使用无线电波和声波,激光雷达采用光波,通常采用近红外波段光,避免肉眼可见光。 激光雷达由发射器、旋转器和光电探测器三个主要部件组成,示意图如下。

具体原理如下:激光雷达发射高密度激光束,光束直接传播到物体表面,然后向相同方向反射(忽略少量光衍射现象),反射光由光电探测器(光敏传感器)检测收集,结合激光束传输距离和方向信息可生成物体3D几何形状。在实际使用过程中,激光发射器放置在连续旋转的底座上,使发射的激光束能够以不同的方向到达物体表面(前、后、左、右)。

1.3 3D点云数据的主要特点

与传统2D与图像数据相比,3D点云的主要特点如下。

2D 图像

3D点云

表现形式

3D世界的2D不含Z值的投影

3D包含Z值的数据

数据结构

依次有序连接

数据点无序

环境敏感性

对环境光照条件敏感

对环境光照条件不敏感

处理方法

直接使用CNN等

不能直接使用CNN

2. 点云数据处理

点云数据的处理主要包括点云滤波、点云配置、点云分类、点云语义分割、点云目标识别等。

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

点云滤波器,顾名思义,就是过滤噪音。原始收集的点云数据通常包含大量的散列点和孤立点,如滤波器前后的点云效比较。

点云滤波的主要方法有:双边滤波、高斯滤波、条件滤波、直接滤波、随机采样一致滤波、VoxelGrid滤波等,这些算法都被封装在了PCL点云库中。

2.2 描述特征和特征

如果要描述一个三维点云,光有点云的位置是不够的,通常需要计算一些额外的参数,如法线方向、曲率、文理特征等。就像图像的特征一样,我们需要用类似的方法来描述三维点云的特征。

常用的特征描述算法:法线和曲率计算及特征值分析PFH、FPFH、3D Shape Context、Spin Image等。

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

2.3 提取点云关键点

在二维图像上,有Harris、SIFT、SURF、KAZE这种关键点提取算法将特征点的思想推广到三维空间。从技术上讲,关键点数量远低于原始点云或图像数据量,结合局部特征描述子,形成关键点描述子形成原始数据表示,不失去代表性和描述性,加快后续识别、跟踪数据处理速度,关键点技术成为2D和3D 信息处理中的关键技术。

有几种常见的三维点云关键点提取算法:ISS3D、Harris3D、NARF、SIFT3D

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

2.4 点云配准

点云匹配的概念也可以类比于二维图像中的匹配。与二维图像匹配相比,获得了x,y,alpha,beta在放射变化参数中,二维点云可以模拟三维点云的旋转和运动,即获得旋转矩阵和平移向量,通常表示为4×3矩阵,其中3×三是旋转矩阵,一*三是平移向量。严格来说是六个参数,因为旋转矩阵也可以通过罗格里德斯转换转换为1*旋转向量为3。

常用的点云配准算法有两种:正太分布变换和名称ICP此外,还有许多其他算法可以列出:

ICP:稳健ICP、point to plane ICP、point to line ICP、MBICP、GICP

NDT 3D、Multil-Layer NDT

FPCS、KFPSC、SAC-IA

Line Segment Matching、ICL

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 变化检测

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

2.9 三维重建

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

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

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

泊松重建、Delauary triangulatoins

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

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

3. 点云数据集

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

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

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

4.1 传统方法

1) 基于边缘的方法

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

2) 基于区域的方法

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

3)基于属性的方法

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

4.基于模型的方法

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

5) 基于图的方法

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

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

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

4.2深度学习方法

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

1)PointNet

PointNet 网络结构如下所示。

由图可以看出,由于点云的旋转非常的简单,只需要对一个N×D的点云矩阵乘以一个D×D的旋转矩阵即可,因此对输入点云学习一个3×3的矩阵,即可将其矫正;同样的将点云映射到K维的冗余空间后,再对K维的点云特征做一次校对,只不过这次校对需要引入一个正则化惩罚项,希望其尽可能接近于一个正交矩阵。

具体来说,对于每一个N×3的点云输入,对应于原始N个点的3D坐标信息,网络先通过一个T-Net将其在空间上对齐(旋转到正面),其中T-Net就像一个迷你型-point-net网络,可学习得到3×3仿射变换矩阵。再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1×1024的向量就是N个点云的全局特征。

如果做的是分类的问题,直接将这个全局特征再进过MLP去输出每一类的概率即可;但如果是分割问题,由于需要输出的是逐点的类别,因此其将全局特征拼接在了点云64维的逐点特征上,网络能够同时利用局部和全局特征的几何和全局语义,最后通过MLP,输出逐点的分类概率。

2)PointNet++

从很多实验结果都可以看出,PointNet对于场景的分割效果十分一般,由于其网络直接暴力地将所有的点最大池化为了一个全局特征,因此局部点与点之间的联系并没有被网络学习到。在分类和物体的Part Segmentation中,这样的问题还可以通过中心化物体的坐标轴部分地解决,但在场景分割中,这就导致效果十分一般了。

进一步地研究人员提出了一个分层特征学习框架PointNet++来解决这个问题,从而改善PointNet的一些局限性。分层学习过程是通过一系列设定的抽象级别。每个集合抽象级别由一个采样组层、分组层和PointNet层。PointNet++网络结构

如下所示。

PointNet++中主要借鉴了CNN的多层感受野的思想。CNN通过分层不断地使用卷积核扫描图像上的像素并做内积,使得越到后面的特征图感受野越大,同时每个像素包含的信息也越多。而PointNet++就是仿照了这样的结构,具体如下:

其先通过在整个点云的局部采样并划一个范围,将里面的点作为局部的特征,用PointNet进行一次特征的提取。因此,通过了多次这样的操作以后,原本的点的个数变得越来越少,而每个点都是有上一层更多的点通过PointNet提取出来的局部特征,也就是每个点包含的信息变多了。文章将这样的一个层成为Set Abstraction。

一个Set Abstraction主要由三部分组成:

  • Sampling:利用FPS(最远点采样)随机采样点
  • Grouping:利用Ball Query划一个R为半径的圈,将每个圈里面的点云作为一簇
  • PointNet: 对Sampling+Grouping以后的点云进行局部的全局特征提取

3)DGCNN

4)PointCNN

5)PointSIFT

6) Point Transformer

7)RandLANet

5. 参考文献

1.3D Point Cloud Analysis_ Traditional, Deep Learning, and Explainable Machine Learning Methods

2.A comprehensive survey on point cloud registration

3.PointNet-Deep Learning on Point Sets for 3D Classification and Segmentation

4.RandLA-Net Efficient Semantic Segmentation of Large-Scale Point Clouds

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章