目录

摘要

1.点云分割算法的属性

2.点云分割的挑战

3.点云分割算法介绍

01 基于边缘的方法

02 基于区域分割方法

03 基于属性的方法

04 基于模型的方法

05 基于图优化的方法

4.总结

5.PCL点云中的分割模块

参考


摘要

三维点云分割是将同属性的点云物体分割出来,以便于单独对该点云物体处理,但是由于点云数据是一种高冗余度,且不均匀的数据结构,所以点云分割具有一定挑战性。

在图像分割中常常用到前景与背景的分割处理,而在点云处理中,对于给定点云数据,分割的目标是将具有相似特征的点聚类成均匀区域,根据分割结果应用于各个方面的场景分析,一般的方法是根据输入点云的网格构建图形,使用边界线的法线、平滑度或者凹凸性等信息进行聚类分割,包括(论文[1]):

  • 凹凸性分割
  • 分水岭分析
  • 层次聚类
  • 区域增长
  • 频谱聚类

这些方法也广泛应用于数字图像处理的2D图像分割中,2D图像的分割是一个很经典的问题,并且已经有着十几年的研究历史,其中一些传统方法的思想同样适应于3D点云的分割。

1.点云分割算法的属性

(1)鲁棒性,比如树木是具有与汽车相区别的特征的,当点云数据的特征数量增加时,分割算法应该具有一定的鲁棒性,能够学习如何自动的区分它们。

(2)其次分割应该能够根据其相邻的信息推断出稀疏点云中这些点的属性或者判定出属于哪个标签。

(3)分割算法应该能适用于不同的扫描器,即便是相同的场景在不同的扫描仪生成出的点云也是具有不同的属性的,并且产生点云的质量以及稀疏性的也是不一样的。

2.点云分割的挑战

点云数据虽然可以确定3D对象的形状,大小和一些其他属性,但是3D点云通常由于传感器的限制,数据是嘈杂稀疏且无序的,比如激光雷达线性和角速率的变化,点的采集密度也是不均匀的,此外点云数据的表面形状可以是任意的,是没有数据统计分布呈现出来的,所以这就给点云的分割带来一系列的问题。

3.点云分割算法介绍

接下里将介绍五种传统的分割算法:基于边缘的方法、基于区域的方法、基于属性的方法、基于模型的方法和基于图优化的方法。

01 基于边缘的方法

边缘是描述点云物体形状的基本特征,这种方法检测点云一些区域的边界来获取分割区域,这些方法的原理是定位出边缘点的强度变化,比如可以通过计算梯度,检测表面上单位法向量方向的变化来拟合线段(论文[2]),或者基于扫描线的分组进行快速分割(论文[3])。基于边缘的方法虽然分割速度比较快但是准确度不能保证,因为边缘对于噪声和不均匀的或稀疏的点云非常敏感。

02 基于区域分割方法

基于区域的方法使用邻域信息来将具有相似属性的附近点归类,以获得到分割区域,并区分出不同区域之间的差异性。 基于区域的方法比基于边缘的方法更准确。 但是他们在分割过度或不足以及在如何准确确定区域边界方面存在问题。 研究者们将基于区域的方法分为两类:种子区域(自下而上)方法和非种子区域(自上而下)方法。

种子区域方法: 基于种子的区域分割通过选择多个种子点来开始做分割,从这些种子点为起始点,通过添加种子的邻域点的方式逐渐形成点云区域,算法主要包含了两个步骤(论文[4]):

(1)基于每个点的曲率识别种子点,

(2)根据预定标准,该标准可以是点的相似度和点云的表面的相似度来生长种子点。

这种方法对噪声点也非常敏感,并且耗时。但后续有很多基于这种方法的改进,比如对于激光雷达数据的区域增长的方法,提出了基于种子点的法向量和与生长平面的距离来生长种子点。种子区域方法高度依赖于选定的种子点。不准确选择种子点会影响分割过程,并可能导致分割不足或过度。选择种子点以及控制生长过程是耗时的。分割结果可能对所选的兼容性阈值敏感。另一个困难是决定是否在给定区域中添加点,因为这种方法对点云的噪声也很敏感。

非种子区域方法: 这种方法时基于自上而下的方法。首先,所有点都分为一个区域。然后细分过程开始将其划分为更小的区域。使用这种方法(论文[5])指导聚类平面区域的过程,以重建建筑物的完整几何形状。该工作引入了基于局部区域的置信率为平面的分割方法。这种方法的局限性在于它也会可能过度分割,并且在分割其他对象(例如树)时它不能很好地执行。非种子区域方法的主要困难是决定细分的位置和方式。这些方法的另一个限制是它们需要大量的先验知识(例如,对象模型,区域数量等),然后这些未知的先验知识在复杂场景中通常是未知的。

03 基于属性的方法

该方法是基于点云数据的属性的一种鲁棒性较好的分割方法,这种方法一般包括了两个单独的步骤:

第一步,基于属性的计算。

第二步,将根据计算点的属性进行聚类,这种聚类方法一般能适应空间关系和点云的各种属性,最终将不同的属性的点云分割出来,但是这种方法局限性在于他们高度依赖派生属性的质量所以要求第一步能够精确的计算点云数据的属性,这样才会在第二步中根据属性的类别分割出最佳的效果。

论文[6]则是这种方法实现的,提出了一种基于特征空间聚类分析方法,在该方法中,使用一种自适应斜率的邻域系统导出法向量,使用点云数据的属性,例如距离,点密度,点在水平或者垂直方向的分布,来定义测量点之间的领域,然后将每个方向上的法向量的斜率和点邻域的数据之差作为聚类的属性,这种方法可以消除异常值和噪声的影响,基于属性的方法是将点云分割相同属性区域的高效方法,并且分割的结果灵活而准确。 然而,这些方法依赖于点之间邻域的定义和点云数据的点密度。 当处理大量输入点的多维属性时,这种方法的另一个限制是比较耗时。

04 基于模型的方法

该方法时基于几何的形状比如球形,圆锥,平面和圆柱形来对点云进行分组,那么根据这些几个形状,具有相同的数学表示的点将会被分割为同一组点,论文[7]中引入了一种众所周知的算法RANSAC(RANdom SAmple Consensus),RANSAC是强大的模型,用于检测直线,圆等数学特征,这种应用极为广泛且可以认为是模型拟合的最先进技术,在3D点云的分割中需要改进的方法都是继承了这种方法。基于模型的方法具有纯粹的数学原理,快速且强大,具有异值性,这种方法的主要局限性在于处理不同点云是的不准确性。这种方法在点云库中已经实现了基于线,平面,圆等各种模型。

05 基于图优化的方法

图优化的方法在机器人的应用中十分流行,众所周知的方法是FH算法[7],该方法简单且高效,并且像Kruskal算法一样用于在图中查找最小生成树。许多基于图的方法的工作被投入到概率推理模型中,例如条件随机场(CRF),使用CRF标记具有不同几何表面基元的点的方法。基于图优化的方法在复杂的城市环境中成功地分割点云,具有接近实时的性能。为了与其他方法进行比较,基于图形的方法可以对点云数据中的复杂场景进但是,这些方法通常无法实时运行。其中一些可能需要离线训练等步骤。

4.总结

以上将分割方法分为五类。但是,一般来说,有两种基本方法。

第一种方法使用纯数学模型和几何推理技术,如区域增长或模型拟合,将线性和非线性模型拟合到点云数据。这种方法允许快速运行时间能实现良好的结果。这种方法的局限性在于在拟合物体时难以选择模型的大小,对噪声敏感并且在复杂场景中不能很好地工作。

第二种方法使用特征描述子的方法从点云数据中提取3D特征,并使用机器学习技术来学习不同类别的对象类型,然后使用结果模型对所获取的数据进行分类。在复杂场景中,机器学习技术将优于纯粹基于几何推理的技术。原因是由于噪声,密度不均匀,点云数据中的遮挡,很难找到并将复杂的几何图元拟合到物体上。虽然机器学习技术可以提供更好的结果,但它们通常很慢并且依赖于特征提取过程的结果。

以上的这些算法在PCL的都已经实现且都有现成的demo可以查看效果。

5.PCL点云中的分割模块

该模块是在以上基本模块的基础上进行的研究,比如如何将点云数据构造成kdtree或者Octree结构使用FLANN(最近邻搜索)的方式寻找点与周围见之间的关系。

在PCL常用的聚类分割的类有以下几种:

class pcl::ConditionalEuclideanClustering< PointT >

该类实现了用于设定的条件的欧式聚类的分类算法。

class pcl::CPCSegmentation< PointT >

对超体素图进行分割的分割算法。 它使用局部凹度引起的平面切割进行递归分割。使用局部约束的有向RANSAC进行分割。

CPC分割与LCCP分割是继承的关系 ,具体论文[9]。

class pcl::EuclideanClusterExtraction< PointT >

欧几里得聚类提取是欧几里得意义上的聚类获取分割的点云类。

class pcl::LabeledEuclideanClusterExtraction< PointT >

labeledeuclidenclusterextraction表示一个分段类,用于欧几里得意义上的带有标签信息的聚类提取,

class pcl::ExtractPolygonalPrismData< PointT >

ExtractPolygonalPrismData使用一组表示平面模型的点索引,并与给定的高度一起生成三维多边形棱柱。然后使用多边形棱柱分割位于其内部的所有点。

class pcl::GrabCut< PointT >

实现了GrabCut分割。

class pcl::segmentation::detail::RandomWalker< Graph, EdgeWeightMap, VertexColorMap >

实现随机行走的优化的分割方法,论文[10]。

class pcl::LCCPSegmentation< PointT >

一种简单的分割算法,将一个超体素图分割成由凹边界分隔的局部凸连接超体素组,论文[11]。

class pcl::SACSegmentationFromNormals< PointT, PointNT >

结合点云的数据表面的法向量使用RANSAC方法的分割。

class pcl::SupervoxelClustering< PointT >

实现基于体素结构、法线和RGB值的超体素算法。论文[12]。

参考

【1】A. Shamir, Segmentation and shape extraction of 3D boundary meshes (state of the art report), in Eurographics, 2006

【2】 B. Bhanu, S. Lee,C. Ho, and T. Henderson, Range data processing:Representation of surfaces by edges. In proc.int. Pattern recognition conf, 1896

【3】X.Y. Jiang, H. Bunke, and U. Meier, Fast range image segmentation using high level segmentation primitives, In 3rd IEEE Workshop on Applications of Compute Vision, USA, 1996

【4】P.J. Besl, R.C. Jain, Segmentation through variable order surface fitting, IEEE Transaction on Pattern Analysis and Machine Intelligence 10, 1988.

【5】J. Chen, B.Chen, Architectural modeling from sparsely scanned range data. Int. J. Comput. Vision 78, 2008.

【6】S. Filin, N. Pfeifer, Segmentation of airborne data using a slope adaptive filter, ISPRS J. Photogramm. Remote Sens., vol. 60, pp. 71- 80, 2006.

【7】M. Fischler, R. Bolles, Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography Communications of the ACM

【8】P.F. Felzenszwalb, D.P. Huttenlocher, Efficient Graph-Based Image Segmentation, International Journal of Computer Vision, 59(2), 2004.

【9】M. Schoeler, J. Papon, F. Woergoetter Constrained Planar Cuts - Object Partitioning for Point Clouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2015

【10】Random Walks for Image Segmentation

【11】S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter Object Partitioning using Local Convexity In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2014

【12】Voxel Cloud Connectivity Segmentation - Supervoxels from PointClouds In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2013

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

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

【PCL】 PCL点云分割总结相关推荐

  1. PCL教程-点云分割之圆柱体分割

    原文链接:Cylinder model segmentation - Point Cloud Library 0.0 documentation 目录 处理流程 圆柱分割 程序代码 实验结果 打印结果 ...

  2. PCL之点云分割算法概述

    PCL中提供了点云分割的基础数据结构和部分通用算法,目前实现的算法主要是基于聚类分割思想和基于随机采样一致性的分割算法,以下对这两种方法的原理进行介绍: 1) 基于聚类分割算法 在聚类方法中每个点都与 ...

  3. 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割

    基于PCL的点云区域增长分割 一.什么是区域增长分割 二.区域增长分割原理剖析 三.区域增长分割示例代码 一.什么是区域增长分割   在本文中,我们将学习如何使用pcl:: regiongrow类中实 ...

  4. 【PCL自学:Segmentation1】基于PCL的点云分割:平面模型分割

    基于PCL的点云平面模型分割 1.什么是点云分割 2.如何使用PCL库对将点云中平面模型分割出来 1.什么是点云分割   顾名思义,点云分割就是将一团点云按照不同需求进行分割处理,一般是用在识别或测量 ...

  5. 【点云处理技术之PCL】点云分割算法1——平面模型分割、圆柱模型分割和欧式聚类提取(含欧式聚类原理)

    文章目录 1. 平面分割 2. 圆柱分割 3. 欧式聚类分割 1. 平面分割 下列中,先随机创建了z=1.0的随机点,然后改变其中3个点的z值.最后,使用SACMODEL_PLANE平面模型对它进行拟 ...

  6. [自动驾驶-目标检测] C++ PCL 连通域点云聚类

    文章目录 引言 标签连通域聚类原理 Octree + LCC 代码实现 Octree + LCC 测试结果 Octree + LCC 的优缺点 改进思路 参考文献 引言 在实际实现3D目标检测时,在不 ...

  7. PCL点云分割(1)

    点云分割是根据空间,几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提,例如逆向工作,CAD领域对零件的不同扫描表面进行分割,然后才能更好的进行空洞 ...

  8. PCL—低层次视觉—点云分割(基于凹凸性)

    1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割算法是实现复杂功能的基础.但是大家搞了几十年也还没搞定--不是我说的,是接下来要介绍的这篇论文说的.图像分割 ...

  9. 传统方法的点云分割以及PCL中分割模块

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘要 三维点云分割是将同属性的点云物体分割出来,以便于单独对该点云 ...

  10. 29 基于PCL的点云平面分割拟合算法技术路线(针对有噪声的点云数据)

    0 引言 最近项目中用到了基于PCL开发的基于平面的点云和CAD模型的配准算法,点云平面提取采用的算法如下. 1 基于PCL的点云平面分割拟合算法 2 参数及其意义介绍 (1)点云下采样 1. 参数: ...

最新文章

  1. 常考题 | IoU 计算
  2. 在哪里能收到python实例代码-python实现网站微信登录的示例代码
  3. JQuery对checkbox的操作
  4. PHP做好友关系系统,php社交好友网站
  5. 百万数据php7取出循环_PHP7带来了哪些重要的变化
  6. JavaWeb学习笔记——Tomcat配置
  7. jquery 插件 分析
  8. js打印线程id_理解Python多线程:通过易懂的小例子展开第一篇
  9. 【python】Windows系统中python解释器下载及安装过程
  10. 基于面积对比法的图形匹配
  11. x390拆机图解_ThinkPad X390拆机(大图)
  12. simplest tensor core gemm sample
  13. 神州数码基础知识配置总结
  14. 如何跳过计算机配置直接开机,怎么跳过Windows update配置直接开机?
  15. Impala String函数大全
  16. Linux执行命令常见的英语语句
  17. Lua 报错 PANIC: unprotected error in call to Lua API (no calling environment) 解决办法
  18. 图床项目之后台框架设计
  19. STM32:使用ST官方的原理图和PCB封装
  20. Jetsonnano的环境配置--ros环境

热门文章

  1. toString函数
  2. 华为p50首发鸿蒙,华为P50发布时间暂定,首发预装鸿蒙2.0
  3. 优雅的使用ZSet实现搜索排行榜
  4. MySQL更新数据update
  5. android 耳返解决方案,vivo又出招手机音频领域:联合全民K歌发布首个安卓实时耳返方案...
  6. TNS-12535: TNS: 操作超时
  7. 《大话数据结构》笔记——第8章 查找(一)
  8. 如何下载centos dvd版本
  9. 关于VS2019自动补全函数后面的括号
  10. Java程序员黄金年龄25-28岁,我们30+的人该去哪儿?附华为案例