如何详细解析三维点云处理算法及其应用?

2026-04-12 03:231阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3007个文字,预计阅读时间需要13分钟。

如何详细解析三维点云处理算法及其应用?

一、三维点云基础信息

1.点云描述:点云是某个坐标系统下点的数据集。

如何详细解析三维点云处理算法及其应用?

2.点云信息:包含三维坐标(X, Y, Z)、颜色、分类值、强度值、时间等丰富信息。

一、三维点云基础信息

1.点云描述

点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。点云在组成特点上分为两种,一种是有序点云,一种是无序点云。

有序点云:一般由深度图还原的点云,有序点云按照图方阵一行一行的,从左上角到右下角排列,当然其中有一些无效点。有序点云按顺序排列,可以很容易的找到它的相邻点信息。有序点云在某些处理的时候还是很便利的,但是很多情况下是无法获取有序点云的;

无序点云:无序点云就是其中的点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响。是比较普遍的点云形式,有序点云也可看做无序点云来处理

2.点云获取

点云不是通过普通的相机拍摄得到的,一般是通过三维成像传感器获得,比如双目相机、三维扫描仪、RGB-D 相机;

3.点云内容

根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity),强度信息与目标的表面材质、粗糙度、入射角方向以及仪器的发射能量、激光波长有关;

根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB);

结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)

4.点云属性

空间分辨率、点位精度、表面法向量等。

点云可以表达物体的空间轮廓和具体位置,我们能看到街道、房屋的形状,物体距离摄像机的距离也是可知的;

其次,点云本身和视角无关,可以任意旋转,从不同角度和方向观察一个点云,而且不同的点云只要在同一个坐标系下就可以直接融合

5.点云格式

点云目前的主要存储格式包括:pts、LAS、PCD、.xyz

1)pts格式

pts点云文件格式是最简便的点云格式,直接按XYZ 顺序存储点云数据, 可以是整型或者浮点型


2)LAS格式

LAS是激光雷达数据(LiDAR),LAS 格式点云截图,其中 C:class(所属类),F:flight(航线号),T:time(GPS 时间),I:intensity(回波强度),R:return(第几次回波),N:number of return(回波次数),A:scan angle(扫描角),RGB:red green blue(RGB 颜色值)

3)PCD格式

PCD 存储格式是PCL 库官方指定格式,PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符

4)xyz格式

xyz 一种文本格式,前面 3 个数字表示点坐标,后面 3 个数字是点的法向量,数字间以空格分隔

6.点云数据

1)数据类型

lpcl::PointCloudpcl::PointXYZ

PointXYZ 成员:float x,y,z;表示了xyz3D信息,可以通过points[i].data[0]或points[i].x访问点X的坐标值

lpcl::PointCloudpcl::PointXYZI

PointXYZI成员:float x, y, z, intensity; 表示XYZ信息加上强度信息的类型。

lpcl::PointCloudpcl::PointXYZRGB

PointXYZRGB 成员:float x,y,z,rgb; 表示XYZ信息加上RGB信息,RGB存储为一个float。

lpcl::PointCloudpcl::PointXYZRGBA

PointXYZRGBA 成员:float x , y, z; uint32_t rgba; 表示XYZ信息加上RGBA信息,RGBA用32bit的int型存储的。

l成员:float x,y;简单的二维x-y点结构

lNormal结构体:表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值,用第四个元素来占位,兼容SSE和高效计算

2)数据坐标系

相机坐标系 右手三维坐标系——红色是X轴,绿色是Y轴,蓝色是Z

3)数据表示

l点表示形式

点表示形式直接对点云进行处理,即采用最原始的点作为输入,数据表示形式如下图所示,使用最原始的点云数据,保留最丰富细致的信息,在所有方法中输入信息损失最小,但是,点表示方法需要处理的数据量较大,运行速度较慢;

l体素表示形式

体素是体积元素的简称,是数字数据在三维空间分割上的最小单位,类似于二维空间的最小单位像素,数据表示形式如下图所示,体素表示形式将点云转化为规则的体素形式,对点云进行处理。点云体素化首先需要设置参数,包括体素大小及每个体素可容纳的点云数量;

基于体素的方法不仅性能较优,计算速度也较可观,尤其是稀疏卷积的发展,促进体素方法的应用。但是,基于体素的方法受设置参数的影响,不可避免地丢失一部分点云信息;


l图表示形式

图表示形式,如下图所示。核心在于构建图神经网络,再通过图卷积进行特征提取。图神经网络的计算费时,对于应用是一个严重限制,但是图表示方法能较好地适应点云的不规则性,并且可得到更多局部信息;


二、三维点云基础算法

1.滤波算法

点云滤波作为常见的点云处理算法,一般是点云处理的第一步,对后续处理有很重要作用。滤波有很多方面也有很多种功能,比如去除噪声点、离群点、点云平滑以及空洞、数据压缩等

一般以下情况需要进行点云滤波处理:点云数据密度不规则需要平滑、因为遮挡等问题造成离群点需要去除、大量数据需要下采样、噪声数据需要去除;

PCL滤波算法的实现是通过滤波器类来完成的,需要实现滤波功能时则新建一个滤波器对象并设置参数,从而保证可以针对不同的滤波任务,使用不同参数的滤波器对点云进行处理;

1)直通滤波

使用三维方向上的某个阈值直接过滤掉该方向上不符合阈值的点云滤波,常用于点云数据的阈值滤除;

2)体素滤波

点云按照空间三维划分体素(空间网格),并使用数学方法将每个体素内的点云替换成一个点,从而减少点云数量,常用于点云数据的下采样;

3)统计滤波

基于计算点到邻点的距离在输入数据集中的分布,使用统计分析技术从点云数据集中去除噪声,常常用于点云数据的离群点滤除;

4)半径滤波

给定指定半径,和半径内最少点数进行滤波,常常用于点云数据的离群点滤除;

5)滤波效果

不同的滤波器在滤波过程中,总是先创建一个对象,再设置对象参数,最后调用滤波函数对点云进行处理(点云为智能指针指向的一块区域);

效果图依次是点云原始数据、直通滤波、体素滤波、统计滤波、半径滤波


2.边缘检测算法

边缘提取采用PCL库里BoundaryEstimation的方法基于法线估计来实现的边界检测与提取:首先从原始点云上计算出法线,再由法线结合数据估计出边界;


效果图依次是点云原始数据、边缘数据

BoundaryEstimation方法需计算点云法线,只适用于简单的点云;

3.聚类算法

pcl的RegionGrowing区域生长算法输出数据结构是由聚类组成的数组,其中每个聚类都是被认为是同一光滑表面的一部分的点的集合,合并在平滑约束条件下足够接近的点,该算法的工作原理(光滑度的计算)是基于两点法线之间的角度比较;


4.关键点检测算法

NARF关键点是稳定性、区别性的点集,从深度图像提取出来的特征,减少特征提取时的搜索空间,对NARF关键点提取过程有以下要求:提取的过程必须将边缘及物体表面变化信息考虑在内;关键点的位置必须稳定,可以被重复探测,即使换了不同的视角;关键点所在的位置必须有稳定的支持区域,可以计算描述子并进行唯一的法向量估计,可以加快后续识别、定位的处理速度;

三、三维点云深度学习算法

1.PointNet算法

PointNet可以直接对点云进行处理的,对输入点云中的每一个点,学习其对应的空间编码,之后再利用所有点的特征得到一个全局的点云特征;

代码详解

分类结果

2.PointNet++算法

PointNet++网络在PointNet基础上添加了分层次的结构,进而提取不同尺度下的特征

代码详解

模型分为三步:采样、分组、提取特征 采样:最远点采样(FPS) 分组:寻找最远点集球形领域中的点 提取特征:多次卷积后取max,最后多个维度特征进行拼接

分类结果

3.PointNN算法

PointNN网络由非参数编码器(最远点采样(FPS)、k近邻(k-NN)、三角函数(Trigonometric Functions)和池化(Pooling))和点云特征匹配库组成,不需要任何参数或训练;

代码详解

非参数编码器


点云特征库

分类结果

4.PointPN算法

在PointNN结构上插入线性层来构建参数化网络Point-PN,仅用少量可学习参数表现出高性能-效率的权衡;

模型分为两步:参数编码器提取特征、线性层结构;

代码详解

分类结果

本文共计3007个文字,预计阅读时间需要13分钟。

如何详细解析三维点云处理算法及其应用?

一、三维点云基础信息

1.点云描述:点云是某个坐标系统下点的数据集。

如何详细解析三维点云处理算法及其应用?

2.点云信息:包含三维坐标(X, Y, Z)、颜色、分类值、强度值、时间等丰富信息。

一、三维点云基础信息

1.点云描述

点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。点云在组成特点上分为两种,一种是有序点云,一种是无序点云。

有序点云:一般由深度图还原的点云,有序点云按照图方阵一行一行的,从左上角到右下角排列,当然其中有一些无效点。有序点云按顺序排列,可以很容易的找到它的相邻点信息。有序点云在某些处理的时候还是很便利的,但是很多情况下是无法获取有序点云的;

无序点云:无序点云就是其中的点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响。是比较普遍的点云形式,有序点云也可看做无序点云来处理

2.点云获取

点云不是通过普通的相机拍摄得到的,一般是通过三维成像传感器获得,比如双目相机、三维扫描仪、RGB-D 相机;

3.点云内容

根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity),强度信息与目标的表面材质、粗糙度、入射角方向以及仪器的发射能量、激光波长有关;

根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB);

结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)

4.点云属性

空间分辨率、点位精度、表面法向量等。

点云可以表达物体的空间轮廓和具体位置,我们能看到街道、房屋的形状,物体距离摄像机的距离也是可知的;

其次,点云本身和视角无关,可以任意旋转,从不同角度和方向观察一个点云,而且不同的点云只要在同一个坐标系下就可以直接融合

5.点云格式

点云目前的主要存储格式包括:pts、LAS、PCD、.xyz

1)pts格式

pts点云文件格式是最简便的点云格式,直接按XYZ 顺序存储点云数据, 可以是整型或者浮点型


2)LAS格式

LAS是激光雷达数据(LiDAR),LAS 格式点云截图,其中 C:class(所属类),F:flight(航线号),T:time(GPS 时间),I:intensity(回波强度),R:return(第几次回波),N:number of return(回波次数),A:scan angle(扫描角),RGB:red green blue(RGB 颜色值)

3)PCD格式

PCD 存储格式是PCL 库官方指定格式,PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符

4)xyz格式

xyz 一种文本格式,前面 3 个数字表示点坐标,后面 3 个数字是点的法向量,数字间以空格分隔

6.点云数据

1)数据类型

lpcl::PointCloudpcl::PointXYZ

PointXYZ 成员:float x,y,z;表示了xyz3D信息,可以通过points[i].data[0]或points[i].x访问点X的坐标值

lpcl::PointCloudpcl::PointXYZI

PointXYZI成员:float x, y, z, intensity; 表示XYZ信息加上强度信息的类型。

lpcl::PointCloudpcl::PointXYZRGB

PointXYZRGB 成员:float x,y,z,rgb; 表示XYZ信息加上RGB信息,RGB存储为一个float。

lpcl::PointCloudpcl::PointXYZRGBA

PointXYZRGBA 成员:float x , y, z; uint32_t rgba; 表示XYZ信息加上RGBA信息,RGBA用32bit的int型存储的。

l成员:float x,y;简单的二维x-y点结构

lNormal结构体:表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值,用第四个元素来占位,兼容SSE和高效计算

2)数据坐标系

相机坐标系 右手三维坐标系——红色是X轴,绿色是Y轴,蓝色是Z

3)数据表示

l点表示形式

点表示形式直接对点云进行处理,即采用最原始的点作为输入,数据表示形式如下图所示,使用最原始的点云数据,保留最丰富细致的信息,在所有方法中输入信息损失最小,但是,点表示方法需要处理的数据量较大,运行速度较慢;

l体素表示形式

体素是体积元素的简称,是数字数据在三维空间分割上的最小单位,类似于二维空间的最小单位像素,数据表示形式如下图所示,体素表示形式将点云转化为规则的体素形式,对点云进行处理。点云体素化首先需要设置参数,包括体素大小及每个体素可容纳的点云数量;

基于体素的方法不仅性能较优,计算速度也较可观,尤其是稀疏卷积的发展,促进体素方法的应用。但是,基于体素的方法受设置参数的影响,不可避免地丢失一部分点云信息;


l图表示形式

图表示形式,如下图所示。核心在于构建图神经网络,再通过图卷积进行特征提取。图神经网络的计算费时,对于应用是一个严重限制,但是图表示方法能较好地适应点云的不规则性,并且可得到更多局部信息;


二、三维点云基础算法

1.滤波算法

点云滤波作为常见的点云处理算法,一般是点云处理的第一步,对后续处理有很重要作用。滤波有很多方面也有很多种功能,比如去除噪声点、离群点、点云平滑以及空洞、数据压缩等

一般以下情况需要进行点云滤波处理:点云数据密度不规则需要平滑、因为遮挡等问题造成离群点需要去除、大量数据需要下采样、噪声数据需要去除;

PCL滤波算法的实现是通过滤波器类来完成的,需要实现滤波功能时则新建一个滤波器对象并设置参数,从而保证可以针对不同的滤波任务,使用不同参数的滤波器对点云进行处理;

1)直通滤波

使用三维方向上的某个阈值直接过滤掉该方向上不符合阈值的点云滤波,常用于点云数据的阈值滤除;

2)体素滤波

点云按照空间三维划分体素(空间网格),并使用数学方法将每个体素内的点云替换成一个点,从而减少点云数量,常用于点云数据的下采样;

3)统计滤波

基于计算点到邻点的距离在输入数据集中的分布,使用统计分析技术从点云数据集中去除噪声,常常用于点云数据的离群点滤除;

4)半径滤波

给定指定半径,和半径内最少点数进行滤波,常常用于点云数据的离群点滤除;

5)滤波效果

不同的滤波器在滤波过程中,总是先创建一个对象,再设置对象参数,最后调用滤波函数对点云进行处理(点云为智能指针指向的一块区域);

效果图依次是点云原始数据、直通滤波、体素滤波、统计滤波、半径滤波


2.边缘检测算法

边缘提取采用PCL库里BoundaryEstimation的方法基于法线估计来实现的边界检测与提取:首先从原始点云上计算出法线,再由法线结合数据估计出边界;


效果图依次是点云原始数据、边缘数据

BoundaryEstimation方法需计算点云法线,只适用于简单的点云;

3.聚类算法

pcl的RegionGrowing区域生长算法输出数据结构是由聚类组成的数组,其中每个聚类都是被认为是同一光滑表面的一部分的点的集合,合并在平滑约束条件下足够接近的点,该算法的工作原理(光滑度的计算)是基于两点法线之间的角度比较;


4.关键点检测算法

NARF关键点是稳定性、区别性的点集,从深度图像提取出来的特征,减少特征提取时的搜索空间,对NARF关键点提取过程有以下要求:提取的过程必须将边缘及物体表面变化信息考虑在内;关键点的位置必须稳定,可以被重复探测,即使换了不同的视角;关键点所在的位置必须有稳定的支持区域,可以计算描述子并进行唯一的法向量估计,可以加快后续识别、定位的处理速度;

三、三维点云深度学习算法

1.PointNet算法

PointNet可以直接对点云进行处理的,对输入点云中的每一个点,学习其对应的空间编码,之后再利用所有点的特征得到一个全局的点云特征;

代码详解

分类结果

2.PointNet++算法

PointNet++网络在PointNet基础上添加了分层次的结构,进而提取不同尺度下的特征

代码详解

模型分为三步:采样、分组、提取特征 采样:最远点采样(FPS) 分组:寻找最远点集球形领域中的点 提取特征:多次卷积后取max,最后多个维度特征进行拼接

分类结果

3.PointNN算法

PointNN网络由非参数编码器(最远点采样(FPS)、k近邻(k-NN)、三角函数(Trigonometric Functions)和池化(Pooling))和点云特征匹配库组成,不需要任何参数或训练;

代码详解

非参数编码器


点云特征库

分类结果

4.PointPN算法

在PointNN结构上插入线性层来构建参数化网络Point-PN,仅用少量可学习参数表现出高性能-效率的权衡;

模型分为两步:参数编码器提取特征、线性层结构;

代码详解

分类结果