我试图弄清楚从3D范围数据进行曲面重建的算法。乍一看,似乎 球旋转算法 ( BPA )和 泊松曲面重构 是更成熟的方法?
我已经面对这个难题几个月了,并进行了详尽的研究。
主要有2类算法:计算几何和隐式曲面。
它们使网格适合现有点。
该组中最著名的算法可能是powercrust,因为从理论上讲它是公认的- 它可以确保水密网格。
Ball Pivoting已获得IBM的专利。而且,它不适用于点密度变化的点云。
一种将隐式函数拟合到点云上,然后使用类似于游行多维数据集的算法将函数的零集提取到网格中。
此类方法的主要区别在于所使用的隐式函数不同。
Poisson,Hoppe’s和MPU是此类中最著名的算法。如果您是该主题的新手,我建议您阅读Hoppe的论文,这很有解释性。
通常可以实施此类算法,以使它们能够非常有效地处理大量输入,并且可以扩展其质量- 速度折衷。它们不受噪音,变化的点密度和孔的干扰。它们的缺点是它们需要在输入点处始终定向的表面法线。
您会发现少量的免费实现。但是,这取决于您是否要将其集成到免费软件(在这种情况下,您可以接受GPL许可)或在商业软件中集成(在这种情况下,您需要更自由的许可)。后者非常罕见。
一种是VTK。我怀疑它很难集成(没有文档可免费获得),它具有一个奇怪的,过于复杂的体系结构,并且不是为高性能应用程序而设计的。对于允许的输入点云也有一些限制。
看一下这个泊松实现,然后与我分享您的经验。
另外: 这是一些高性能算法,其中包括曲面重构。
CGAL是著名的3d库,但仅对免费项目免费。 Meshlab是GPL的著名应用程序。
另外(2013年8月添加):PCL库具有专用于表面重建的模块,并且正在积极开发中(并且是Google的“代码之夏”的一部分)。表面模块包含许多不同的重建算法。如果您的点数据中没有提供表面法线,则PCL也具有估算表面法线的功能,可以在功能模块中找到此功能。PCL是根据BSD许可条款发布的,并且是开源软件,对于商业和研究用途是免费的。