Graphices Point Cloud 点云数据处理方法-刚性篇

[TOC]

点云数据处理方法概述

ICP点云配准就是我们非常熟悉的点云处理算法之一。实际上点云数据在形状检测和分类、立体视觉、运动恢复结构、多视图重建中都有广泛的使用。点云的存储、压缩、渲染等问题也是研究的热点。随着点云采集设备的普及、双目立体视觉技术、VR和AR的发展,点云数据处理技术正成为最有前景的技术之一。PCL是三维点云数据处理领域必备的工具和基本技能,这篇文章也将粗略介绍。

三维点云数据处理技术(刚性变换篇)

1. 点云滤波(数据预处理)

点云滤波,顾名思义,就是滤掉噪声。原始采集的点云数据往往包含大量散列点、孤立点,比如下图为滤波前后的点云效果对比。

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

image-20200817104906916 image-20200817104915747

2. 点云关键点(提取算法)

我们都知道在二维图像上,有Harris、SIFT、SURF、KAZE这样的关键点提取算法,这种特征点的思想可以推广到三维空间。从技术上来说,关键点的数量相比于原始点云或图像的数据量减小很多,与局部特征描述子结合在一起,组成关键点描述子常用来形成原始数据的表示,而且不失代表性和描述性,从而加快了后续的识别,追踪等对数据的处理了速度,故而,关键点技术成为在2D和3D 信息处理中非常关键的技术。

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

这些算法在PCL库中都有实现,其中NARF算法是博主见过用的比较多的。

3. 特征和特征描述

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

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

PFH:点特征直方图描述子,FPFH:跨苏点特征直方图描述子,FPFH是PFH的简化形式。这里不提供具体描述了,具体细节去谷歌吧。

image-20200817104947276

####

4. 点云配准

点云配准的概念也可以类比于二维图像中的配准,只不过二维图像配准获取得到的是x,y,alpha,beta等放射变化参数,二三维点云配准可以模拟三维点云的移动和对其,也就是会获得一个旋转矩阵和一个平移向量,通常表达为一个4×3的矩阵,其中3×3是旋转矩阵,13是平移向量。严格说来是6个参数,因为旋转矩阵也可以通过罗格里德斯变换转变成13的旋转向量。

常用的点云配准算法有两种:正太分布变换和著名的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

image-20200817105700692

5. 点云分割与分类

点云的分割与分类也算是一个大Topic了,这里因为多了一维就和二维图像比多了许多问题,点云分割又分为区域提取、线面提取、语义分割与聚类等。同样是分割问题,点云分割涉及面太广,确实是三言两语说不清楚的。只有从字面意思去理解了,遇到具体问题再具体归类。一般说来,点云分割是目标识别的基础。

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

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

6. SLAM图优化

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

g2o、LUM、ELCH、Toro、SPA

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

7. 目标识别检索

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

8. 变化检测

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

9. 三维重建

我们获取到的点云数据都是一个个孤立的点,如何从一个个孤立的点得到整个曲面呢,这就是三维重建的topic。

在玩kinectFusion时候,如果我们不懂,会发现曲面渐渐变平缓,这就是重建算法不断迭代的效果。我们采集到的点云是充满噪声和孤立点的,三维重建算法为了重构出曲面,常常要应对这种噪声,获得看上去很舒服的曲面。

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

泊松重建、Delauary triangulatoins

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

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

image-20200817105738655

10. 点云数据管理

点云压缩,点云索引(KDtree、Octree),点云LOD(金字塔),海量点云的渲染

PCL库简介

点云数据处理中,不仅涉及前段数据的输入,中间数据和处理,还涉及到后端点云的渲染显示,如果这些函数都要我们亲自来实现,那么开发效率必然受到极大影响。在点云数据处理领域,有一个不可或缺的助手:PCL (Point Cloud Library)。PCL在点云数据处理中的地位犹如OpenCV在图像处理领域的地位,如果你接触三维点云数据处理,那么PCL将大大简化你的开发。

Ref:

https://cloud.tencent.com/developer/article/1462320