第5章 点云的分割与拟合 5.1点云数据的分割

点云的分割与拟合是点云处理的核心步骤,涉及区域生长法、平面性、表面光滑度和法向量等关键概念。区域生长法通过选择种子点并按相似性原则扩展,实现点云的分割。分割阈值的选择对分割质量至关重要,过分割通常比欠分割更利于后续处理。此外,基于反射率图像的生长法能有效提高邻域搜索效率。点云数据结构如二维影像、狄洛尼三角网、八叉树和k-d树等有助于高效搜索。
摘要由CSDN通过智能技术生成

C5 Segmentation and fitting of point Clouds/第5章 点云的分割与拟合

5.1 Segmentation of point cloud data—5.1 点云数据的分割

5.1.1课堂记录

前二章(点云的可视化)、第三章(点云的拼接)、第四章(点云的滤波与分类)都是对点云数据的预处理,现在第五章(点云的分割与拟合)才是真正意义上的从点云中获取需要的信息的过程。点云数据的分割与拟合是提取点云信息的第一步。

原始点云数据到构筑建筑物的三维模型的流程?

最原始的点云(散乱的点的三维坐标)→点云分割(将散乱的点聚集在一个区域,具有相似或相同属性)→特征拟合(根据区域内的点拟合出附合这些数据的点的模型的参数)、三维建模(原理方法复杂且目前不存在被广泛认同的方法)→纹理映射(将每个面真实的纹理与三维模型映射起来)

原始点云数据到构筑建筑物的三维模型的流程

Segmentation of point cloud data 点云分割相关知识?
点云分割:根据特定的相似性原则(平面性、表面光滑度、局部邻域的法向量)聚集点的过程。
  1. 平面性:点到平面的距离在一定的范围内(点到平面的公式)

  2. 表面光滑度:二次曲面(比较常用的拟合曲面的模型),点到模型的距离在一定的范围内

  3. 局部邻域的法向量:

    • 通用方程:根据平面的通用方程计算法向量

    • 外积法:平面上任意两个不相互平行且不为0的向量的外积(叉乘)来确定法向量

点云分割的方法:区域生长法
  • 区域生长法(又称表面生长法):基本思路是考虑激光点与其空间邻域点之间的关系,将具有相似属性的激光点集合起来形成一个区域。
  • 实现:找一个种子点作为生长的起点,然后合并其他具有相同或相似属性的点。从未分割(生长)的点之中再选取一个新的种子点,重复上述过程,直到每个点都属于一个同质区域,相邻区域具有不同的同质性。
区域生长法的重点
  • 选取的一个或一组种子点能够正确表达待分割区域
    • 种子点选择的关键点:
      1. 随机选择一个点及其邻近点,形成候选种子点集
      2. 从选取的候选种子的点集中探测平面/曲面
      3. 计算与特征模型一致的候选点比例
      4. 如果该比例大于给定阈值,则确定的种子表面是合理的;否则,重复步骤1-4
  • 确定种子点在生长过程中依照正确的生长准则
    • 生长准则的关键点(也就是点云分割的相似性原则):平面性、表面光滑度、局部邻域的法向量
  • 建立停止生长过程的条件
    • 生长结束条件的关键点:没有满足生长条件的点
区域生长算法

①区域生长算法:是根据预先定义的生长准则将像素或子区域组合为更大区域的过程。基本方法是从一组种子点开始,将与种子相似的临近像素(在特定范围内的灰度或颜色)添加到种子栈中,不断迭代,生成一大片区域。

②区域生长算法步骤:

  1. 建立空栈,从点云数据中随机选择没有分配给曲面的点A

  2. 搜索点A邻域,构造候选种子点集,并进行有效性判断

  3. 将种子面放入栈,将放入的每个点对应的属性值修改为非零值

  4. 判断栈是否为空。如果栈中有元素(说明生长没有结束),继续下面的步骤。否则(栈空,所有点都被分割),结束生长过程

  5. 如果邻域点满足生长条件,将它们与种子点合并,更新生长模型,然后放入栈。这个循环一直持续到邻域点全部遍历完毕

  6. 该点的邻域点成长完成后,再从堆栈中取出另一个点作为种子点,返回到步骤4

  7. 当堆栈为空时,返回到步骤1;重复步骤1- 6,直到每个点都被分配到一个面,生长过程结束

③区域生长算法的核心结构:

栈,其能有效的帮助记忆生长到哪一步了,下一次生长从哪里开始。

④区域生长算法存在的问题:

  1. 种子点选择的随机性——导致结果不稳定

  2. 种子点或表面的验证——导致计算的时间等成本偏大

栈:先进后出,后进先出
  • 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

  • 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。

生长准则/相似性原则的阈值

分割阈值的选择是区域生长的难点,也是决定区域生长质量的关键。如果阈值过大,许多非目标点会被纳入增长区域(同纳伪),导致欠分割(对分割结果的影响是将整个区域分割后的区域块较正常情况下少,过粗分割)。如果阈值太小了,原本属于目标的点会被排除(同弃真),导致过分割(对分割结果的影响是将整个区域分割后的区域块较正常情况下多,过细分割)。

4种便于邻域搜索的点云数据结构
  • Two-dimensional range image(二维影像)

  • Delaunay triangulation(狄洛尼三角网)

  • Octree(八叉树)

  • k-d tree(k-d树)

基于反射率图像的生长法?
  • 基于反射率图像的生长法的基本思路是对原始点云生成的反射率图像进行分割,可以将分割好的区域作为种子面进行生长(解决原始数据种子面选择的问题)。它可以实现分割与拟合(计算模型参数的过程,难点在于如何保证用来拟合的点都是在要拟合的平面上的数据)。
  • 优点:邻域搜索效率很高、可以用成熟的影像分割方法进行处理
分割与拟合结合的过程?

5.1.2课堂作业

不用栈,用循环能否实现表面生长算法的实现?

不能,如果用循环代替,循环会有很多的嵌套,也就增加了运行的时间成本,现实中的循环并不能无限的嵌套。

若不能合理控制阈值的话,分割不可避免的会出现欠分割还是过分割这两种情况,选择欠分割还是过分割对后续处理来说更容易?
  • 分类解决的是知道哪个是建筑物的点,但不知道是哪一个建筑物的点,而分割解决的就是将属于同一个建筑物的点聚集在一起。
  • 弃真导致的过分割的结果是面多了,后续处理的方案为再将这些面作为整体来判断是否属于同一个建筑物;纳伪导致的欠分割的结果是面少了,后续处理的方案为再重新控制分割的阈值将所有点再次向着最佳阈值靠近。
  • 显然,过分割的后续处理方案从时间成本、算法复杂度等角度都优于过欠分割,故第一次就应该将分割阈值设置的严格些,也就是选择过分割对后续处理来说更容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单子沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值