我试图弄清楚有哪些算法可以根据 3D 范围数据进行表面重建。乍一看,似乎 球旋转算法 (双酚A) 和 泊松曲面重建 有更成熟的方法吗?

  • 除了BPA和泊松曲面重建算法之外,该领域还有哪些已建立的、更鲁棒的算法?
  • 推荐的研究出版物?
  • 有可用的源代码吗?
有帮助吗?

解决方案

我已经面临这个困境几个月了,并进行了详尽的研究。

算法

主要有2类算法:计算几何和隐式曲面。

计算几何

他们将网格拟合到现有点上。

该组中最著名的算法可能是 动力地壳, ,因为它在理论上是完善的 - 它保证了网格的水密性。

球枢轴是 IBM 的专利。此外,它不适用于具有不同点密度的点云。

隐式函数

在点云上拟合隐式函数,然后使用类似行进立方体的算法将函数的零集提取到网格中。

此类方法的主要区别在于所使用的隐式函数不同。

泊松, 霍普的, , 和 微处理器 是这一类别中最著名的算法。如果您对这个主题不熟悉,我建议您阅读 Hoppe 的论文,它非常有解释性。

此类算法通常可以实现,以便它们能够非常有效地处理大量输入,并且可以缩放其质量<->速度权衡。它们不受噪声、变化的点密度、孔洞的干扰。它们的缺点是它们需要输入点处一致定向的表面法线。

实施

您会发现少量的免费实现。然而,这取决于您是否要将其集成到自由软件(在这种情况下,您可以接受 GPL 许可证)或商业软件(在这种情况下,您需要更自由的许可证)。后者非常罕见。

一个是在 VTK. 。我怀疑它很难集成(没有免费的文档),它有一个奇怪的、过于复杂的架构,并且不是为高性能应用程序设计的。对于允许的输入点云也有一些限制。

看一眼 泊松实现,然后请与我分享您的经验。

还:这里 是一些高性能算法,其中包括表面重建。

CGAL是著名的3d库,但仅对免费项目免费。网格实验室 是一个著名的GPL应用程序。

另外(2013 年 8 月添加):图书馆 聚己内酯 有一个 模块 致力于表面重建并且正在积极开发中(并且是 Google 代码之夏的一部分)。表面模块包含许多不同的重建算法。也有PCL 有能力 估计表面法线,如果您没有随点数据提供它们,则可以在功能中找到此功能 模块. 。PCL是根据BSD许可条款发布的,是开源软件,可免费用于商业和研究用途。

其他提示

如果您想使用各种表面重建算法进行一些直接实验,您应该尝试 网格实验室, ,网格处理系统,它是开源的,它包含许多先前引用的表面重建算法的实现,例如:

  • 泊松表面侦察
  • 一些基于 MLS 的方法,
  • 球枢转实现
  • Curless 基于体积的方法的变体
  • 基于 Delaunay 的技术(Alpha 形状和 Voronoi 过滤)
  • 用于计算分散点集法线的工具
  • 以及许多其他用于比较/测量/清理/简化生成的网格的工具。

源代码受 GPL 保护,因此您不能在商业闭源项目中使用它们,但对各种表面重建算法的属性有正确的感觉非常重要(它们对噪声的敏感程度、速度、在开始实施其中之一之前,对异常值的鲁棒性,它们如何保留精细细节等)。

您可能会开始关注该领域最近的一些工作 - 目前类似于 点采样表面的快速低内存流 MLS 重建 作者:Gianmauro Cuccuru、Enrico Gobbetti、Fabio Marton、Renato Pajarola 和 Ruggero Pintus。它的引用可以让你很快地浏览文献。

虽然不是网格表示,但前同事向我推荐了该链接到薄板样条方法的源代码的链接:

关联

有人试过吗?

不确定它是否完全适合您的情况,因为您省略它似乎很奇怪,但是 行进立方体 在此类情况下经常被提及。

这里 在 GitHub 上,是一个开源的 网格处理库 在 C++ 中通过 博士。于格斯·霍普, ,其中表面重建程序 侦察 是解决您问题的一个不错的选择...

Geometric Tools 的 3D Delaunay 工具. 。这个工具使用的是DirecX和OpenGL。不幸的是,您可能需要购买一本书才能查看该库的实际示例代码。你仍然阅读代码并弄清楚。

Matlab还推出了使用Delaunay的表面重建工具, delaunay三角测量类.

由于我也遇到了这个问题,我确实开发并实现了自己的点云地壳算法。源代码和文档可以在 github.com 上找到: https://github.com/ricebean-net/PointCloudCrust. 。该算法是用Java 实现的。

也许,这可以帮助你。您还可以在页面上找到一个简短的 python 脚本,其中说明了如何使用该库。玩得开心!

您可能感兴趣 阿尔法形状.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top