PCL中的点云分割算法
介绍
点云分割算法是点云处理中非常重要的一部分内容,扫描出来的点云往往是整幅场景,没有办法对其直接处理,这个时候就需要一些点云分割算法。
PCL是一个强大的库,已经帮我们封装好了许多分割算法,像平面模型、圆柱模型、立方体等一些规则模型的分割,和基于聚类方法的非规则模型的分割。
下面来具体介绍下PCL中主要的点云分割算法。
规则物体的模型分割
这种分割算法主要针对规则物体,比如球、圆柱、平面、立方体,因为这些模型可以很方便的建立起数学模型,后面通过RANSAC算法进行拟合,得出最终的分割模型,若一个场景中有多个规则模型,可以根据拟合的模型进行逐一分割,对相同规则的模型,则是从大到小开始分割。
基于聚类算法的分割
聚类算法在数据分析中应用非常广泛,同样,也适用于三维空间。基于k-means聚类算法,可以分割指定类别的点云。除了k-means,还有自适应类别分割算法。
区域蔓延分割
区域生长分割算法广泛应用于图像分割中,二维图像常常采取区域生长分割算法实现图像分割,由于其分割的高效性,现已被应用于3D分割中,PCL中的类pcl::RegionGrowing用来实现点云的区域生长分割。区域生长分割是基于点云法线的分割算法,算法的主要思路如下:
(1)根据点的曲率值对点云进行排序,曲率最小的点叫做初始种子点,区域生长算法从曲率最小的种子点开始生长,初始种子点所在区域为最平滑区域,从初始种子点所在的区域开始生长可减小分割片段的总数,从而提高算法的效率。
(2)设置一空的聚类区域C和空的种子点序列Q,选好初始种子点,将其加入种子点序列,并搜索该种子点的领域点,计算每一个领域点法线与种子点法线之间的夹角,小于设定的平滑阀值时,将领域点加入到C中,同时判断该领域点的曲率值是否小于曲率阀值,将小于曲率阔值的领域点加入种子点序列Q中,在Q中重新选择新的种子点重复上述步骤,直到Q中序列为空,算法结束。
基于欧几里德距离的分割算法
具体的实现方法大致是:
- 找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p11,p12,p13…放在类Q里。
- 在 Q\p10 里找到一点p11,重复1。
- 在 Q\p10,p11 中找到一点,重复1,找到p12,p13,p14…全部放进Q里。
- 当 Q 再也不能有新点加入了,则完成搜索了。
PCL中的点云分割算法相关推荐
- PCL中3D点云特征描述与提取(三)
PCL中3D点云特征描述与提取(三) 1 如何从一个深度图像中提取NARF特征 2 RoPs特征 2.1 理论基础 2.1.1 生物视觉认知学启示 2.1.2 局部参考坐标框架构建 2.1.3 RoP ...
- 基于八叉树的区域增长点云分割算法
基于八叉树的区域增长点云分割算法 1. 提出问题 激光雷达探测到城市环境的物体表面构成三维几何点,相应的点云分割技术常用于建筑物重建.由于建筑物的复杂性,数据分割计算量很大,传统的点云分割方法需人工干 ...
- PCL之点云分割算法概述
PCL中提供了点云分割的基础数据结构和部分通用算法,目前实现的算法主要是基于聚类分割思想和基于随机采样一致性的分割算法,以下对这两种方法的原理进行介绍: 1) 基于聚类分割算法 在聚类方法中每个点都与 ...
- 【PCL】—基于形态学的点云分割算法详解
参考:https://www.cnblogs.com/ironstark/p/5017428.html 1. 航空测量与点云的形态学 航空测量是对地形地貌进行测量的一种高效手段.生成地形三维形貌一直是 ...
- 【PCL】—超体聚类点云分割算法详解
参考:https://www.cnblogs.com/ironstark/p/5013968.html 1. 超体聚类--一种来自图像的分割方法 超体(super voxel)是一种集合,集合的元素是 ...
- 一文详解点云分割算法
作者丨书生意封侯@知乎 来源丨https://zhuanlan.zhihu.com/p/470782623 编辑丨3D视觉工坊 从某种意义上说,地面点剔除(分割)也属于点云分割的一种,但两者技术路线有 ...
- 一文详解LeGO-LOAM中的点云分割
作者丨王方浩@知乎 来源丨https://zhuanlan.zhihu.com/p/382460472 编辑丨3D视觉工坊 LeGO-LOAM是一种激光雷达SLAM算法,对应的论文为<LeGO- ...
- 【点云处理技术之PCL】点云分割算法1——平面模型分割、圆柱模型分割和欧式聚类提取(含欧式聚类原理)
文章目录 1. 平面分割 2. 圆柱分割 3. 欧式聚类分割 1. 平面分割 下列中,先随机创建了z=1.0的随机点,然后改变其中3个点的z值.最后,使用SACMODEL_PLANE平面模型对它进行拟 ...
- 传统的点云分割方法及PCL中的分割模块
参考:https://www.cnblogs.com/li-yao7758258/p/10908980.html 三维点云分割是将同属性的点云物体分割出来,以便于单独对该点云物体处理,但是由于点云数据 ...
- 传统方法的点云分割以及PCL中分割模块
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘要 三维点云分割是将同属性的点云物体分割出来,以便于单独对该点云 ...
最新文章
- 企业 - php nginx memcache
- SAP R3 FI 上线 顾问设置教程(一)
- 如何在C#中用单个空格替换多个空格?
- Python监控目录和文件变化
- 给插店一个成功案例给自己一次机会
- 数组排序(选择排序和冒泡排序)
- Win7 下打开wifi共享的方法
- BundlePhobia
- 根据数组建立平衡二叉搜索树
- java9 反应编程_Java9第四篇-Reactive Stream API响应式编程
- activiti 如何获取下一步节点
- Guojiz网址导航系统PHP网站源码
- 收集SQLite中的时间日期函数[ZT]
- android 音频控件,android AudioManager音频控件
- c语言教师工资管理系统源程序设计,C语言教师工资管理系统
- 信创办公--基于WPS的Word最佳实践系列(利用项目符号及编号条理化文本)
- 考研学java还是c语言,想学习Java,应该选择就业还是考研?
- 自定义圆形、半圆形ProgressBar
- linux下实现线程暂停
- python pandas 实战 百度音乐歌单 数据分析
热门文章
- POJ P1185 炮兵阵地 【状压dp】
- 如何使用maven打包
- 洛谷P1880 石子合并(区间DP)(环形DP)
- NFinal ajax
- 【已解决】Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound
- 全网最全Linux常用命令
- 数据结构与算法之优先队列
- js计算两个整数之间的百分比
- 记一次逆向拿到github token 然后dump掉别人所有库的
- 年月日时分秒格式_日期时间格式中提取日期,居然用INT