点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

时间:2024-03-15 12:58:17

点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

导读 : 今天为大家带来针对点云的空洞填补,针对点云的补全和补洞算法是比较少见的,大多数算法都只是针对网格的补洞。而针对点云的补洞在三维重建中能够很有效的应用,特别是如泊松重建中因遮挡导致的点云稀疏或缺失的区域,但点云补洞能够很有效的解决该区域的重建问题。本质上讲,点云补洞是个病态问题,所有的补洞方式只能根据洞周围点的特征来补全,但在几何结构将对简单区域,点云补洞能有很好的表现。这篇文章是2017年发表在the virtual computer上的点云补洞算法,总体来说有比较好的补洞效果。

算法论文地址:yanqingan.github.io/docs/tvc16_shape.pdf

摘要

这篇文章提出了一种全新的点云补洞方法,能够在平滑和尖锐的地方都有较好的补洞表现,该方法模仿物理上的扩散模型,将一次洞的边缘收缩分解为法向传播和顶点位置传播,并根据其相应的约束来保持其平滑或尖锐的特性。通过迭代上述过程直到没有新的边缘生成,即完成点云补全。

1.简介

点云模型在过去20多年中有很广泛的应用。直到现在,尽管扫描仪等获取设备的性能有很大的提升,但是或多或少在其扫描的模型上存在有不同的空洞区域。此外,因为物体表面磨损和损坏,也会形成空洞区域。针对点云补洞这个病态问题,现有的大部分工作基于网格步面片的方式。而直接在点云上补洞的相对较少,而且大多只能生成平滑的补洞结果。本文模仿物理中能量扩散的方式进行点云补全,能够有效的生成平滑和尖锐的补洞结果,如下图1所示:
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

2.算法

​ 本文将洞边缘收缩主要分为两步:

  • 法向传播:用于控制填充点的方向和恢复的表面的形状。

  • 位置传播:在一次边缘收束中生成新的边界点。

    这两个步骤在补洞算法中交替执行,且能够相互优化。这种交替传播方式能够将法相约束插入到法向传播步骤中,以恢复空洞的尖锐特征。

2.1 算法总览

​ 给定带法向的点云作为输入,本文算法首先对输入点云进行预处理去噪,然后提取空洞的边界点,并通过迭代传播的方式缩小空洞区域,直到没有新点生成。
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

2.2 预处理

​ 为了得到有效的洞的边界,本文采用了二阶段的处理去噪,同时对点云位置和其法向进行双边滤波 [1]操作,从而获得去噪的后的带法向的点云。

2.3 洞边界确定

​ 本文采用分而治之的策略进行边界提取,首先在边界上手动顺序选择少量特征点$f_i’ 其中 (i = 1,…,m),将这些点输入边界点集合中B’$中。 因此任意两相邻点间可以看作时局部线性的。

​ 对于相邻点fifi+1f_i' f_{i+1}'构成的线段,计算其中点MM, 并选择距离最近的边界上的点bmb_m',如果该点是新的点,则将该店插入到点集中fif_i'fi+1f_{i+1}'之间。通过迭代直到所有相邻点间距离小于阈值,则获得最终的边界点集,以此作为空洞边界。

2.4 法向传播

为了计算收缩后的空洞边界,本文在采样的边界点集上构建法向传播。新填充的点bib_i的法向计算方式为:
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
Nr(bi)N_r(b_i)表示bib_i附近半径为r以内的邻近点。g1g1g2g2分别是标准差为σd\sigma_dσn\sigma_n的高斯权重。nin_i'为距离bibi最近的上一轮边界上的点的法向。

2.5 顶点位置采样

以传播的法向作为指导,一轮边界收束的采样点需满足两个目标:

  • 新生成的边界与周围区域的表面相匹配
  • 新填充的点应该保持合理的分布,保持连续实际的收缩,使得空洞区域变小

为此,文章定义E1E1用来度量填充点和周围表面的差异。同时引入弹力来填充点的位置,一个好的候选点应该在受力平衡点附近且受到最小的合力E2E2。结合两者,建立了以此边界收缩的目标函数:

点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

3. 生成新的孔洞边界

​ 虽然上述算法给除了顶点采样的目标函数,但是直接求解是非常困难的,因为空间中有无数的位置能满足该函数最小化。因此文章提出了间接的采样方法。

​ 首先,通过上一轮生成的边界点,生成新的边界点的控制曲线。在控制曲线约束下,本轮采样变为沿着控制曲线的1-D采样。 采样到的新的顶点是目标函数(3)的近似解。

​ 然后,对每个采样点根据其邻域和(1)中计算的法向进行位置优化,直到收敛。

3.1 计算洞边缘控制曲线

定义弹力:文章利用高斯函数来对弹力进行仿真并控制邻近点间距离的权重。ObiO_{bi}'表示新的候选点bibi沿着上一轮边界点bib_i'沿着该点传播方向的平衡点,在ObiO_{bi}'位置受到的邻域其他点的弹力如下式(4):
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
其中OqO_q是邻近点qq沿着qObi\vec{qO_{bi}''} 的平衡点,如图Fig.3所示。
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
事实上,一旦给定邻域点qq,则从点qq受到的弹力仅与ObiO_{bi}'OqO_q的符号距离有关,其正向为斥力,负向为引力,因而可简化为式 (5),而平衡点的计算公式为式 (6)

点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
边界控制曲线: 边界控制曲线有上一轮生成的边界点计算得到的平衡位置得到。对于边界点bib_i' 其收缩方向为该点法向与边界方向的叉乘。从而根据式(5)(6)可计算出所有新的平衡点以及该点收到的弹力,并删除受到邻域斥力的平衡点,剩下的作为新一轮的边界曲线采样点。

3.2 位置优化

为保证生成的采样点与局部表面形状匹配,本文提出了位置优化方法,如式(7)
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
所有的边界点受到邻域点的沿着其法向的引力作用,到新的平衡点,其中g1g_1g2g_2是和式(1)类似的高斯权重,则优化后的顶点位置为:
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
注意到位置优化后的点的法向与表面不匹配,而重新计算后的法向也会导致优化位置的偏离。因此,理论上可进行交替优化的方式,使之达到收敛。而在实际上收敛速度会比较快,因而采用两轮交替优化即可。

3.4 保持特征一致

在尖锐的洞区域,采用上述方法容易因其区域交叠的问题,如Fig.7所示,可通过设置相应的阈值,在出现位置偏移反向的时候,将其进行剔除,即可剔除该区域多余的顶点。

点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)

算法结果

​ 文章在不同的模型上进行了测试,如图Fig.1 所示,不同半径的邻域取值对补洞表面的收敛速度不同。FIg.8 则展示了不同的同算法相对本文算法的补洞结果。本文算法在尖锐和平滑区域都有很好的表现。点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
特别是在泊松重建之前,本文算法通过提前对点云进行空洞填充,再进行播送重建后能够很好的降低模型空洞粘连的问题,提高模型质量。

代码获取

获取本文源码请微信下列二维码关注本人公众号,并回复 cloudhole 自行获取。
点云补洞算法+代码(Shape Controllable geometry completion for point cloud models)
本文为原创,转载请著明出处。

参考文献

[1] Fleishman S, Drori I, Cohen-Or D (2003) Bilateral mesh denoising. In: ACM Transactions on Graphics (TOG), ACM, vol 22, pp 950–953