【论文阅读】法向一致性:Parallel Globally Consistent Normal Orientation of Raw Unorganized Point Clouds

声明

  • 本帖更新中
  • 如有问题,望批评指正!
  • 如果有人觉得帖子质量差,希望在评论中给出建议,谢谢!

相关文章

这里列出一些相关的文章,方便对比其原理
Towards Globally Optimal Normal Orientations for Large Point Clouds

核心思想的归纳

  本文将法向一致性问题转为为全局能量函数优化问题。首先,创建一个完整的k最近邻图。通过给图中尖锐特征或薄结构所在区域的边分配更低的权重从而提高算法对于尖锐特征处理的鲁棒性。其次,根据边权重定义了边的能量。最终,通过求解所有边能量和函数得到全局一致性的法向。除此之外,本文还提出了一种基于三角面片简化的边合并方法来加速能量函数的优化求解。

核心公式

在这里插入图片描述

对比

Ψ H o p p e ( i , j ) = < n ⃗ i , n ⃗ j > \Psi_{Hoppe}(i,j)=<\vec{n}_i, \vec{n}_j> ΨHoppe(i,j)=<n i,n j>

Ψ X i e ( i , j )      = < n ⃗ i ′ , n ⃗ j >    w i t h    n ⃗ i ′ = n ⃗ i − 2 e < e , n ⃗ i > , e = P i − P j ∥ P i − P j ∥ \Psi_{Xie}(i, j) \; \; = <\vec{n}_i^{'}, \vec{n}_j> \; with \; \vec{n}_i^{'}=\vec{n}_i -2e<e, \vec{n}_i>, e=\frac{P_i-P_j}{\Vert P_i -P_j \Vert} ΨXie(i,j)=<n i,n j>withn i=n i2e<e,n i>,e=PiPjPiPj

Ψ J a k o b ( i , j ) = < n ⃗ i ′ , n ⃗ j >    w i t h    n ⃗ i ′ = n ⃗ i − e < e , n ⃗ i > , e = P i − P j ∥ P i − P j ∥ \Psi_{Jakob}(i,j) = <\vec{n}_i^{'}, \vec{n}_j> \; with \; \vec{n}_i^{'}= \vec{n}_i -e<e,\vec{n}_i>, e=\frac{P_i-P_j}{\Vert P_i -P_j \Vert} ΨJakob(i,j)=<n i,n j>withn i=n ie<e,n i>,e=PiPjPiPj

机器翻译

摘要

  许多点云算法的强制组成部分是具有一致定向的顶点法向(例如用于表面重建、特征检测、可视化)。以往的在网格或原始点云上进行的定向方法未考虑全局上下文,常基于不切实际的假设,或者具有极长的计算时间,使其在实际数据上无法使用。我们提出了一种新颖的、高度并行化的方法,用于计算原始且未排序的点云的全局一致定向点法向。基于图能量优化的思想,我们在整个点云上构建了一个完整的kNN图。新的加权相似性准则对图的能量进行编码。为了得到全局一致定向法向,我们通过高度并行的贪婪边缘折叠操作,合并图的相似部分并使其定向一致。我们将我们的方法与当前的最先进方法进行了比较,并实现了高达两个数量级的加速。所实现的法向定向质量与现有解决方案相当或更好,特别适用于真实世界中嘈杂的3D扫描数据。

关键字
knn-graph、parallel greedy edge collapse

介绍

  如今,通过运动结构、多视图几何或激光扫描等几何获取技术捕获的点云不仅包含空间数据,还包含颜色或估计的法向等附加属性。对于注册、计算有符号距离场、特征检测、分割、表面重建或着色渲染等算法,后者尤为重要。大多数采集技术限制只能提供局部定向的法向,或者根本不提供。然而,定向的点法向对于内外部确定是必需的,因为这些信息是更高级几何处理算法的基础构件。在表面重建的情况下,缺乏定向的法向可能导致网格质量低下或产生伪影,如图2所示。为了克服这个限制,全局一致的法向定向对整个数据集至关重要。然而,由于现实世界的数据包含噪声、非均匀性和细小尖锐特征,因此这是一个具有挑战性的研究领域。
  高分辨率几何获取方法导致生成的点云大小增加,这也增加了估计和计算全局一致法向的处理时间。为了解决这个问题,我们提出了一种快速并行的贪婪求解器,使用GPU估计和计算全局一致的定向法向。优化算法的挑战在于确保最大程度的并行性,并具有与顺序处理相同的结果。
  我们的主要贡献包括:

  • 在GPU上运行的并行贪婪求解器,用于估计整个点云上全局一致的法向。
  • 针对具有尖锐折痕和细小结构以及包含(非高斯)噪声和异常值的数据集的新法向相似性准则。

  我们的法向估计和定向方法在合成和非结构化、带噪声的现实世界点云上表现良好,并且不对输入数据(例如完全封闭、连通、非连通的部分)做任何假设。我们实现了高达两个数量级的加速,并且全局法向定向的质量与最先进的方法相当或更好,例如与Schertler等人的MST+QPBO-I方法相比。

方法概述

  我们的“法向定向算法”可以分为三个阶段:并行法向估计、k最近邻图构建和并行全局一致法向定向。在第一个阶段(参见第3.1节),我们使用GPU估计未定向的法向,并重复利用邻域依赖性在第二个阶段创建一个完整的k最近邻图(参见第3.2节)。然后,在第三个阶段(参见第3.3节)中,使用在构建的图上的贪婪边折叠算法,全局一致地定向整个点云中的法向。

  有关具体细节,请参考以下各节:

  • 第3.1节:并行法向估计阶段,用于估计未定向的法向,利用GPU加速。
  • 第3.2节:k最近邻图构建阶段,通过重复利用邻域依赖性,创建一个完整的k最近邻图。
  • 第3.3节:并行全局一致法向定向阶段,使用贪婪边折叠算法,在构建的图上对法向进行全局一致的定向。

  这些阶段协同工作,使我们能够高效地估计和计算点云数据集上的全局一致法向。

3.1. 第一阶段:并行法向估计

  给定一组点,可以通过应用局部低阶曲面拟合来估计点的法向。一种常见的方法是在点的k个最近邻点(称为k-邻域)上应用主成分分析(PCA)[Pea01]来估计局部切平面。
  根据所提供的一组点,我们可以使用主成分分析(PCA)在点的 k 个最近邻点上进行计算,以估计每个点的法向量。具体而言,我们通过选择点的 k 个最近邻点,构建一个局部邻域,并在该局部邻域上应用 PCA 算法,计算局部切平面的法向量。
  对于每个点,我们计算该点的 k 个最近邻点的协方差矩阵,然后对该矩阵进行特征值分解以得到主成分(特征向量)和对应的特征值。主成分表示了局部邻域内的数据分布方向,特征值表示了每个主成分的重要性。通过选择协方差矩阵的最小特征值对应的主成分,我们可以估计点的法向量。
  这种方法基于假设局部表面是平坦的,因此近邻点集合落在一个局部切平面上。通过使用主成分分析得到的法向量,我们可以估计点的法线方向。这种法线估计方法在点云处理中被广泛使用,并且在许多应用中已经证明是有效的。

并行k最近邻(Parallel k-Nearest Neighbor)
  要为数据集中的每个点拟合一个正态分布,必须找到每个点的k个最近邻(kNN)。为了加速kNN搜索,我们使用了快速边界体层次结构(Bounding Volume Hierarchy,BVH)构建和基于堆的遍历的组合,直到找到所有的kNN点为止。
  这是通过对点云进行排序和整理,为每个点分配一个30位的Morton码(每个维度10位)来实现的。然后,我们按照Karras等人的提议,进行了一个自底向上的简单基数树构造。随后,我们为云中的每个顶点应用基于堆的遍历,以找到所有的k最近邻点,并将它们存储在一个排序列表中。由于点是排序的,我们的实现实现了高数据局部性(由于使用了Z曲线)和相干性,因此即使对于大量的最近邻点,执行时间也非常快速。
C [ p ] − 1 k − 1 ∑ i = 1 k ( p i − p ˉ ) ( p i − p ˉ ) T , w i t h    p ˉ − 1 k ∑ i = 1 k p i C[p] - \frac{1}{k-1} \sum_{i=1}^k (p_i - \bar{p})(p_i - \bar{p} )^{T}, with \; \bar{p}-\frac{1}{k}\sum_{i=1}^k p_i C[p]k11i=1k(pipˉ)(pipˉ)T,withpˉk1i=1kpi
并解决这个矩阵的特征向量问题 C ⋅ v l − λ l ⋅ v l C \cdot v_l - \lambda_l \cdot v_l Cvlλlvl,其中 l ∈ { 1 , 2 , 3 } l \in \{1, 2, 3\} l{1,2,3}
点 p 的表面法线 n p \mathbf{n}_p np 通过最小特征向量 v 1 v_1 v1 进行近似,并可以定义过 p ˉ \bar{p} pˉ 的平面如下:
T ( x ) : ( x − p ˉ ) ⋅ v 1 − 0 T(x):(x-\bar{p})\cdot v_1 -0 T(x):(xpˉ)v10
在近乎共线的点集情况下(即两个特征值接近为零),我们将从法向计算中移除当前点。

3.2. 第二阶段:并行kNN图构建

  为了计算全局一致的定向法向,我们使用完整的kNN图在整个数据集中传播正确的定向。这个图可以通过重用在法线估计阶段收集到的邻域信息来轻松构建。对于每个找到的邻居,以完全并行的方式创建一条边。然后,通过并行排序和压缩的方法去除重复的边。
  构建完图后,对于每条边,我们分别分配一个潜在值 E i , j E_{i,j} Ei,j 和权重 W i , j W_{i,j} Wi,j
E i , j = Ψ ( i , j ) ⋅ ω ( p i , p j ) E_{i,j} =\Psi(i,j) \cdot \omega(p_i, p_j) Ei,j=Ψ(i,j)ω(pi,pj)
W i , j = ∣ E i , j ∣ W_{i,j}=\vert E_{i,j}\vert Wi,j=Ei,j
其中 ω ( p i , p j ) \omega(p_i, p_j) ω(pi,pj)是基于支持半径 r r r 的距离加权:
ω ( p i , p j ) = e − d ( p i , p j ) 2 m a x ( r i , r j ) 2 \omega(p_i, p_j)=e^{-\frac{d(p_i, p_j)^2}{max(r_i, r_j)^2}} ω(pi,pj)=emax(ri,rj)2d(pi,pj)2
  而 Ψ ( i , j ) \Psi(i,j) Ψ(i,j)是所使用的翻转判据,它指定了两个相邻连接点之间的每个顶点法线关系。支持半径被定义为与形成边缘的两个点的邻域中的所有点到点距离的最大值。
  分配的边缘能量和权重是我们方法的关键组成部分,因为它们使我们能够决定边缘上的点法线是否以相同方向对齐,或者其中一个必须被翻转。如果必须翻转法向,决策的难度与所使用的翻转判据的精确程度成正比。

翻转判据: 可以是一个函数 ψ : (i, j) → R,如果它表示 ni 和 nj 之间的相似性相关性,则可以作为翻转判据。常见的翻转判据是 Hoppe 等人的 [HDD∗92]:
Ψ H o p p e ( i , j ) = < n ⃗ i , n ⃗ j > \Psi_{Hoppe}(i,j)=<\vec{n}_i, \vec{n}_j> ΨHoppe(i,j)=<n i,n j>
以及更为精细的 Xie 等人的翻转判据 [XWH∗03]。后者反映了沿着 pi 和 pj 的方向向量的法线:
Ψ X i e ( i , j )      = < n ⃗ i ′ , n ⃗ j >    w i t h    n ⃗ i ′ = n ⃗ i − 2 e < e , n ⃗ i > , e = P i − P j ∥ P i − P j ∥ \Psi_{Xie}(i, j) \; \; = <\vec{n}_i^{'}, \vec{n}_j> \; with \; \vec{n}_i^{'}=\vec{n}_i -2e<e, \vec{n}_i>, e=\frac{P_i-P_j}{\Vert P_i -P_j \Vert} ΨXie(i,j)=<n i,n j>withn i=n i2e<e,n i>,e=PiPjPiPj
  由于这两种方法都存在限制,并且在包含细小和锐利结构的嘈杂实际数据集上表现不佳,因此我们开发了一种新的翻转判据。

  我们的想法基于一个简单的观察:如果在点云中的两个点之间画出一条边,那么这条边理想情况下位于近似的切线区域,该区域仅由局部环境描述。两个法向相对于虚拟表面法向的偏差越小,置信度就越高(参见图3)。因此,与 Xie 等人的方法不同,我们的方法是在边的平分面上进行投影,而不是在边的平分面上进行反射:
Ψ J a k o b ( i , j ) = < n ⃗ i ′ , n ⃗ j >    w i t h    n ⃗ i ′ = n ⃗ i − e < e , n ⃗ i > , e = P i − P j ∥ P i − P j ∥ \Psi_{Jakob}(i,j) = <\vec{n}_i^{'}, \vec{n}_j> \; with \; \vec{n}_i^{'}= \vec{n}_i -e<e,\vec{n}_i>, e=\frac{P_i-P_j}{\Vert P_i -P_j \Vert} ΨJakob(i,j)=<n i,n j>withn i=n ie<e,n i>,e=PiPjPiPj

3.3. 第三阶段:并行全局一致法向方向确定

通过最大化 kNN 图中所有边能量的总和,可以获得所有点法向的一致方向:
max ⁡ ∑ ( i , j ) ∈ Ω E i , j \max \sum_{(i,j)\in \Omega} E_{i,j} max(i,j)ΩEi,j
  其中,i、j ∈ Ω 表示点集Ω中所有顶点之间的有效边的所有有效对。图4显示了一个 kNN 图的示例结果。一旦构建了这个图并为所有边分配了能量值,最大化边能量的总和等价于为每个顶点找到最优符号,这可以转化为一个二次二进制规划问题。这已知为 NP 难问题。
  我们采用一种贪婪算法来解决这个优化问题。先前的贪婪方法通过在最小生成树(MST)上传播一个或多个种子法向的方向来处理。因此,它们仅考虑 MST 内的边的能量,这有助于在先前构建的 MST 的情况下找到最优解。这种策略的缺点是忽略了可能重要的边,导致错误的决策,从而形成不一致方向的点云,如图2所示。

3.3.1 概念

  不同于加速一个用于找到该图的最大能量的组合求解器,我们采用了一种完全不同的方法,受到四面体误差简化 [GH97] 的启发。
  基本思想是将kNN图中的连续点合并成补丁,以简化图形,如图5所示。
  如果连接边的边权重非常高,则合并两个点或补丁。如果法线沿着一条边翻转,我们会纠正并存储这个信息。然后,得到的补丁代表了底层点集(及其方向)与由边连接的所有其他补丁之间的关系。折叠的边被合并在一起,并根据折叠操作获得新的权重和能量。图6展示了一个示例。
  这个过程会不断重复,直到没有边剩下为止。然后,通过遍历折叠层次结构并累积每个存储的翻转,可以对点云中每个点的最终方向进行校正。
  由于我们使用权重来决定下一个被折叠的边,因此我们使用与最小生成树(MST)相同的顺序,但考虑在折叠边上累积的总能量。这种方法的潜力在于,一个补丁描述了一个局部定向的点集。如果将具有不同方向的两个补丁合并在一起,只需要翻转整个补丁的方向(并保存)即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

坚果仙人

谢谢!

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

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

打赏作者

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

抵扣说明:

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

余额充值