经典点云分割方法:
随机采样一致方法(RANSAC)
欧式聚类分割方法
条件欧式聚类分割
基于区域生长的分割
基于颜色的区域生长分割
最小图割的分割
基于法线微分的分割
基于超体素的分割
随机采样一致方法
应用:计算机视觉和数学领域,例如:直线拟合、平面拟合、计算图像或点云间的变换矩阵、计算基础矩阵
算法流程:
Sample_consensus模块:
PCL中Sample_consensus库实现了随机采样一致性及其泛化估计算法,例如:平面、柱面
SACMDEL_PLANE——确定平面模型,平面的四个系数
SAXMODEL_LINE——用于确定线模型,直线的六个系数由直线上的一个点和直线的方向给出
SACMODEL_CIRCLE2D——用于确定平面中的2D圆,圆的三个系数由其中心和半径给出
SACMODEL_CIRCLE3D——用于确定平面中的3D圆,圆的七个系数由其中心、半径和法线给出
SACMODEL_SPHERE——确定球体模型,球体的四个系数由其3D中心和半径给出
SACMODEL_CYLINDER——确定气缸模型,圆柱体的七个系数由轴线上的点、轴方向和半径给出
SACMODEL_CONE——确定椎模型,椎体的七个系数由其顶点、轴方向和张角给出
SACMODEL_TORUS——尚未实施,圆环模型
SACMODEL_PARALLEL_LINE——在最大指定角度偏差内确定与给定轴平行的线的模型,系数类似于SACMODEL_LINE
SACMDEL_PERPENDICULAR_PLANE——在最大指定角度偏差内确定垂直于用户指定轴的平面的模型,系数类似于SACMODEL_PLANE
3D图像描述
第一种分法:
多边形网格:3D建模
基于体素的描述:数字数据于三维空间分割上的最小单位,体素用于三维成像,类比2维像素
点云:三维坐标X,Y,Z、颜色、分类值、强度值、时间等
隐式表面:用来做射线相交测试使用,表示该曲面上所有点满足的关系
基于视图的描述:也被乘坐虚拟的标,是一组数据的逻辑表示,本身不包含任何数据,只包含映射到基表的一个查询语句
第二种分法:
深度图像:距离影像,将从图像采集器到场景中各点的距离作为像素值的图像,深度图像经过坐标转化可以计算为点云数据
点云
网各:
体积网格:
RGB-D
3D格式,其图像每个像素都有四个属性:红(R)、绿(G)、蓝(B)和深度(D)
点云
点云,一些点的集合,优势:包含深度数据
三维点云直接提供了三维空间的数据,图像则需要通过透视集合来反推三维数据
何为点云?
点云是某个坐标下的点的数据集,点包含了丰富的信息:X、Y、Z、颜色、分类值、强度值、时间等
优点:保留了三维空间中原始的几何信息,不进行离散化
有序点云:由深度图还原的点云,有序点云按照方阵一行一行的,从左上到右下排列,
无序点云:点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响
点云面临的挑战:数据集规模小、高维性、3维点云的非建构化特性
点云的获取
三维传感器:双目相机、三维扫描仪、RGB-D相机(主流:Kinect系列、Intel的realsense系列、structure sensor等)
点云的内容
激光测量原理:三维坐标(X、Y、Z)、激光反射强度、目标的表面材质、粗糙度、入射角方向、仪器的发射能量、激光波长
摄影测量原理:三维坐标(X、Y、Z)、颜色(RGB)
结合激光测量和摄影测量:三维坐标(X、Y、Z)、激光反射强度(Intensity)、颜色(RGB)
点云的属性
空降分辨率+点位精度+表面法向量
点云目前的主要存储格式包括:pts、LAS、PCD、.xyz 和. pcap 等
pts:最简便的点云格式,按XYZ顺序存储点云数据,整型或浮点型
LAS:激光雷达数据,允许不同的硬件和软件提供商输出可互操作的统一格式。
C | F | T | I | R | N | A | R | G | B | X | Y | Z |
class 所属类 |
flight 航线号 |
time GPS时间 |
intensity 回波强度 |
return 第几次回波 |
number of return 回波次数 |
scan angle 扫描角 |
PCD:PCL库官方指定格式,为点云量身定制的格式
优点:支持n维点类型扩展机制,能够更好的发挥PCL库的点云处理性能。
文本格式:文本、二进制
.xyz:文本格式,数据格式:X+Y+Z+点的法向量,数字间以空格分隔
.pcap:通用的数据流格式,
Velodyne公司的激光雷达默认采集数据文件格式。
二进制文件
整体一个全局头部(GlobalHeader),分成若干个包(Packet),每个包包含头部(Header)和数据(Data)
obj:文本文件
以#开头的注释行作为文件头
数据部分每一行的开头关键字代表该行数据所表示的几何和模型元素,以空格做数据分隔符
相应基础算法库对不同格式的支持
PCL库 支持跨平台存储 |
window linux macOS ios android |
C++编程库 |
Boost、 Eigen Flann VTK CUDA OpenNI Qhull |
实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等操作 |
便于移动端开发 pythonpcl 安装: (6条消息) 【python3.6】python安装PCL(适用命令行或pycham中)_米码收割机的博客-CSDN博客_pcl python |
VCG库 专门为处理三角网格而设计的 |
网格 | 提供许多先进的处理网格的功能,点云出来功能 | |||
CGAL 计算集合算法库 |
C++ | 点云、网格 |
提供方便、高效、可靠的几何算法 实现了很多处理点云以及处理网格的算法 |
||
Open3D 支持3D数据处理软件快速开发的开源库 |
C++ Python |
点云、网格、RGB-D |
可以在不同的平台上设置,可以从源代码进行最小的编译, 代码干净、样式一致,并通过清洗的代码审查极值进行维护 在点云、网格、RGB-D数据上都有支持 |
三维点云有多种表示方法
基于二维投影的方法
CNN 最好的应用领域在于图像处理,将三维点云数据投影到二维图像平面,即可使得 CNN 应用于点云数据成为可能。
基于三维体素的方法。
对三维点云进行二维投影降低了算法处理的难度,但是三维到二维的投影必然带来几何结构信息的损失,直接进行三维特征的提取在一些场景下是非常有必要的。一种最自然的想法便是 CNN 的延拓,将二维卷积神经网络拓展一个维度,使其可以处理三维排列的数据;同时,对点云进行体素化 (Voxelization),将其转换为空间上规则排布的栅格,使得三维卷积神经网络(Three Dimension Convolutional Neural Network, 3DCNN) 可以直接应用在这种表示上。
基于原始点的方法。
无论是二维投影还是三位体素,均需要对原始点云进行一定的转换,而转换必然带来数据信息的损失。
基于图的方法。
现实生活中存在大量的非结构化数据,如交通网络、社交网络等,这些数据的节点间存在联系,可以表示为图。研究图数据的学习是近年来学界的热点。三维点云数据可以看作图数据的一种,图网络的很多思想可以被借鉴于点云数据的特征学习中。图卷积 (Graph Convolution Network, GCN) 可分为基于谱的图卷积(Spectralbased GCN) 和基于空间的图卷积 (Spatial-based GCN)。
相比于图像数据,点云不直接包含空间结构,因此点云的深度模型必须解决三个主要问题
如何从稀疏的点云找到高信息密度的表示,
如何构建一个网络满足必要的限制如size-variance和permutation-invariance,
如何以较低的时间和计算资源消耗处理大量数据
DataSets
Metric
点云数据集
Semantic3D | 经典的室外场景点云分割数据集 | 通过激光雷达得到数据 |
S3DIS | 斯坦福大学开发的带有像素级语义标注的语义数据集 | 3D相继或者iPad采集 |
SemanticKITTI | 连续多帧点云数据集,KITTI数据集后面又经过处理得到的 | 汽车采集 |
SensatUrban | 室外大场景点云数据集 | 无人机分区域采集组合 |
Modelnet | 最开始接触点云领域用到的数据集 | |
ShapeNet | 经典最早的数据集 |
点云深度学习模型
PointNet/PointNet++:很好用
RandLA-Net:
PointCNN
PointConv
基于点云的分类
基于点云的分割
点云分割是点云处理的精髓,也是三维图像相对二维图像最大优势的体现
点云分割目的——提取点云中的不同物体,实现分而治之,突出重点,单独处理
RanSaC算法:
原本用于数据处理的一种经典算法,
作用:在大量噪声情况下,提取物体中特定的成分,从一堆数据中挑出自己最心仪的数据
适用范围:从杂乱点云中检测某些具有特殊外形的物体
基于邻近信息的点云分割:
kdTree
步骤:1、建立kdTree(选择最Sparse的维度,找到该维度上中间点,垂直该维度做第一次划分,此时k为超平面被一分为二,在两个子平面中再找最sparse的维度,以此类推)
2、在kdTree中查找
OcTree
容易,太极生两仪,两仪生四象,四象生八卦,针对疏散的、且分布很广泛的点云,
缺点:很难决定最小立方体应该是多少,太大则立方体里可能有很多点云,太小则可能立方体之间连不起来,
欧几里得算法
找到空间中某点p10,用kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p12,p13,p14….放在类Q里 |
在 Q里找到一点p12,重复1 |
在 Q里找到一点p13,重复1,找到p22,p23,p24….全部放进Q里. |
当 Q 再也不能有新点加入了,则完成搜索了 |
基于点云的目标检测
点云数据的增强和完整化
由激光雷达收集的点云,特别是那些来自室外场景的点云,遭受不同种类的质量问题,如噪音,异常值,和遗漏点。所以我们的目标是补全缺失的点,移除掉异常的点。
Discriminative Methods
传统的方法包括局部表面拟合、邻域平均和猜测底层噪声模型
PointCleanNet提出了一种基于数据驱动的方法去消除错误点减少噪声
PCPNet首先对异常值进行分类并丢弃它们,然后估计一个将噪声投影到原始表面的修正投影
Total Denoising,在不需要额外数据的情况下实现了非监督降噪对点云数据
临界点层(CPL)在保留重要点的同时学会减少点的数量。这一层是确定性的,不确定顺序的,并且通过避免邻接搜索也很有效。
通过将采样后的点近似为原始点的混合来逼近点采样的可微松弛
Generative Methods
通过生成假样本,帮助定位网络的潜在缺陷。
point perturbation and point generation:扰动是通过对已有的点进行可忽略的移动来实现的,生成是通过添加一些独立分散的点或少量具有预定义形状的点簇来实现的。
除了对抗性生成,生成模型也用于点云上采样。向上采样点云通常有两种动机。一是减少数据的稀疏性和不规则性,二是恢复遮挡造成的缺失点
原文地址:http://www.cnblogs.com/Ms-wang/p/16795040.html