3D几何处理 | 点云补洞算法+代码分享
导读 : 今天介绍的是2017年发表在the virtual computer上的点云补洞算法,针对点云的补全和补洞算法是比较少见的,大多数算法都只是针对网格的补洞。而针对点云的补洞在三维重建中能够很有效的应用,特别是如泊松重建中因遮挡导致的点云稀疏或缺失的区域,但点云补洞能够很有效的解决该区域的重建问题。点云补洞本质上是个病态问题,所有的补洞方式只能根据洞周围点的特征来补全,但在几何结构相对简单区域,点云补洞能有很好的表现。
算法论文地址:yanqingan.github.io/docs/tvc16_shape.pdf
代码获取 : 获取代码请微信扫文章末尾二维码关注公众号 什锦加,回复 CloudHole 获取
摘要
这篇文章提出了一种全新的点云补洞方法,能够在平滑和尖锐的地方都有较好的补洞表现,该方法模仿物理上的扩散模型,将一次洞的边缘收缩分解为法向传播和顶点位置传播,并根据其相应的约束来保持其平滑或尖锐的特性。通过迭代上述过程直到没有新的边缘生成,即完成点云补全。
1.简介
点云模型在过去20多年中有很广泛的应用。直到现在,尽管扫描仪等获取设备的性能有很大的提升,但是或多或少在其扫描的模型上存在有不同的空洞区域。此外,因为物体表面磨损和损坏,也会形成空洞区域。针对点云补洞这个病态问题,现有的大部分工作基于网格步面片的方式。而直接在点云上补洞的相对较少,而且大多只能生成平滑的补洞结果。本文模仿物理中能量扩散的方式进行点云补全,能够有效的生成平滑和尖锐的补洞结果,如下图1所示:
2.算法
本文将洞边缘收缩主要分为两步:
-
法向传播:用于控制填充点的方向和恢复的表面的形状。
-
位置传播:在一次边缘收束中生成新的边界点。
这两个步骤在补洞算法中交替执行,且能够相互优化。这种交替传播方式能够将法相约束插入到法向传播步骤中,以恢复空洞的尖锐特征。
2.1 算法总览
给定带法向的点云作为输入,本文算法首先对输入点云进行预处理去噪,然后提取空洞的边界点,并通过迭代传播的方式缩小空洞区域,直到没有新点生成。
2.2 预处理
为了得到有效的洞的边界,本文采用了二阶段的处理去噪,同时对点云位置和其法向进行双边滤波 [1]操作,从而获得去噪的后的带法向的点云。
2.3 洞边界确定
本文采用分而治之的策略进行边界提取,首先在边界上手动顺序选择少量特征点$f_i’ 其 中 其中 其中 (i = 1,…,m) , 将 这 些 点 输 入 边 界 点 集 合 中 ,将这些点输入边界点集合中 ,将这些点输入边界点集合中B’$中。 因此任意两相邻点间可以看作时局部线性的。
对于相邻点 f i ′ f i + 1 ′ f_i' f_{i+1}' fi′fi+1′构成的线段,计算其中点 M M M, 并选择距离最近的边界上的点 b m ′ b_m' bm′,如果该点是新的点,则将该店插入到点集中