当前位置: 首页 > news >正文

PCL中的点云分割算法

介绍

点云分割算法是点云处理中非常重要的一部分内容,扫描出来的点云往往是整幅场景,没有办法对其直接处理,这个时候就需要一些点云分割算法。

PCL是一个强大的库,已经帮我们封装好了许多分割算法,像平面模型、圆柱模型、立方体等一些规则模型的分割,和基于聚类方法的非规则模型的分割。

下面来具体介绍下PCL中主要的点云分割算法。

规则物体的模型分割

这种分割算法主要针对规则物体,比如球、圆柱、平面、立方体,因为这些模型可以很方便的建立起数学模型,后面通过RANSAC算法进行拟合,得出最终的分割模型,若一个场景中有多个规则模型,可以根据拟合的模型进行逐一分割,对相同规则的模型,则是从大到小开始分割。

基于聚类算法的分割

聚类算法在数据分析中应用非常广泛,同样,也适用于三维空间。基于k-means聚类算法,可以分割指定类别的点云。除了k-means,还有自适应类别分割算法。

区域蔓延分割

区域生长分割算法广泛应用于图像分割中,二维图像常常采取区域生长分割算法实现图像分割,由于其分割的高效性,现已被应用于3D分割中,PCL中的类pcl::RegionGrowing用来实现点云的区域生长分割。区域生长分割是基于点云法线的分割算法,算法的主要思路如下:

(1)根据点的曲率值对点云进行排序,曲率最小的点叫做初始种子点,区域生长算法从曲率最小的种子点开始生长,初始种子点所在区域为最平滑区域,从初始种子点所在的区域开始生长可减小分割片段的总数,从而提高算法的效率。

(2)设置一空的聚类区域C和空的种子点序列Q,选好初始种子点,将其加入种子点序列,并搜索该种子点的领域点,计算每一个领域点法线与种子点法线之间的夹角,小于设定的平滑阀值时,将领域点加入到C中,同时判断该领域点的曲率值是否小于曲率阀值,将小于曲率阔值的领域点加入种子点序列Q中,在Q中重新选择新的种子点重复上述步骤,直到Q中序列为空,算法结束。

基于欧几里德距离的分割算法

具体的实现方法大致是:

  1. 找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p11,p12,p13…放在类Q里。
  2. 在 Q\p10 里找到一点p11,重复1。
  3. 在 Q\p10,p11 中找到一点,重复1,找到p12,p13,p14…全部放进Q里。
  4. 当 Q 再也不能有新点加入了,则完成搜索了。

http://www.taodudu.cc/news/show-1782125.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • PCL中把点云拟合成曲面(附源代码)
  • 环形链表 II
  • C++调用caffe分类模型-Opencv3.4.3
  • C++调用SSD caffe模型进行物体检测-Opencv3.4.3
  • C++调用tensorflow训练好的SSD物体检测模型-opencv3.4.3
  • C++调用mask rcnn进行实时检测--opencv4.0
  • tensorflow线下训练SSD深度学习物体检测模型,C++线上调用模型进行识别定位(干货满满)
  • python训练Faster RCNNC++调用训练好的模型进行物体检测-基于opencv3.4.3(超详细)
  • mask rcnn数据转换为tfrecord数据
  • opencv3.4.2调用训练好的Openpose模型
  • python训练mask rcnn模型C++调用训练好的模型--基于opencv4.0(干货满满)
  • leetcode之移除链表的元素
  • leetcode之奇偶链表
  • leetcode之回文链表
  • ubuntu16.04下安装配置caffe2和detectron(亲测有效,非常简单)
  • leetcode之字符串中的第一个唯一字符
  • 哈希表中处理冲突的方法
  • SENet算法解析
  • SNIP物体检测算法理解
  • yolov3聚类自己数据的anchor box
  • Ubuntu下安装qt57creator-plugin-ros,在QT中进行ROS开发(亲测有效)
  • ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
  • C++调用编译好的darknet来进行物体监测
  • hard-negative mining详细介绍
  • yolov3中如何进行聚类得到anchor box的
  • ubuntu16.04下编译安装Autoware
  • catkin_make和cmake
  • 深度学习三种分割定义
  • 基于激光雷达点云数据的目标检测
  • 递归和循环两种方式求解连续数的相加