我正在尝试找出可以从3D范围数据进行曲面重建的算法。乍一看,Ball数据透视算法(BPA)和泊松曲面重构是更成熟的方法?
- 除了BPA和Poisson曲面重建算法以外,在该领域还有哪些已建立的,更健壮的算法?
- 推荐的研究出版物?
- 有可用的源代码吗?
Answers:
我几个月来一直面对这个难题,并进行了详尽的研究。
主要有2类算法:计算几何和隐式曲面。
它们使网格适合现有点。
该组中最著名的算法可能是powercrust,因为从理论上讲它是公认的-它可以确保水密网格。
Ball Pivoting已获得IBM的专利。而且,它不适用于点密度变化的点云。
一种将隐式函数拟合到点云上,然后使用类似于游行多维数据集的算法将函数的零集提取到网格中。
这类方法的主要区别在于所使用的隐式函数不同。
泊松,霍普和MPU是此类中最著名的算法。如果您是该主题的新手,我建议您阅读Hoppe的论文,这很有解释性。
通常可以实施此类算法,以便它们能够非常有效地处理大量输入,并且可以扩展其质量-速度折衷。它们不受噪声,变化的点密度和孔的干扰。它们的一个缺点是它们需要在输入点处始终定向的表面法线。
您会发现少量的免费实现。但是,这取决于您是将其集成到自由软件(在这种情况下,您可以接受GPL许可)还是在商业软件中(在这种情况下,您需要更自由的许可)进行集成。后者非常罕见。
一种是VTK。我怀疑它很难集成(没有文档可免费获得),它具有一个奇怪的,过于复杂的体系结构,并且不是为高性能应用程序而设计的。对于允许的输入点云也有一些限制。
看一下这个Poisson的实现,然后与我分享您的经验。
另外: 这是一些高性能算法,其中包括曲面重构。
CGAL是著名的3d库,但仅对免费项目免费。 Meshlab是GPL的著名应用程序。
另外(2013年8月添加):PCL库具有专用于表面重建的模块,并且正在积极开发中(并且是Google的“代码之夏”的一部分)。表面模块包含许多不同的重建算法。如果您的点数据中没有提供表面法线,则PCL还具有估算表面法线的功能,可以在功能模块中找到此功能。PCL是根据BSD许可条款发布的,是开源软件,可免费用于商业和研究用途。
如果要使用各种曲面重建算法进行直接实验,则应尝试 MeshLab这个网格处理系统,它是开源的,它包含许多先前引用的曲面重建算法的实现,例如:
光源受GPL保护,因此您不能在商业封闭源项目中使用它们,但是正确了解各种表面重建算法的属性(对噪声,速度,噪声的敏感度)非常重要。开始实施其中一个之前,对异常值的鲁棒性,它们如何保留精细细节等)。
您可能会开始研究该领域的一些最新工作,例如Gianmauro Cuccuru,Enrico Gobbetti,Fabio Marton,Renato Pajarola和Ruggero Pintus对点采样表面进行快速低内存流式MLS重构。它的引文可以使您快速浏览文献。
不确定是否完全适合您的情况,因为您似乎忽略了它很奇怪,但是在此类情况下通常会提到行进多维数据集。
因为我也遇到这个问题,所以我确实开发并实现了自己的点云结壳算法。可以在github.com上找到源代码和文档:https : //github.com/ricebean-net/PointCloudCrust。该算法用Java实现。
也许可以帮到您。您还可以在页面上找到一个简短的python脚本,该脚本说明了如何使用该库。玩得开心!
有通过几何工具3D德劳工具。该工具用于DirecX和OpenGL。不幸的是,您可能需要购买一本书才能查看库的实际示例代码。您仍然可以阅读代码并找出答案。
Matlab还介绍了使用Delaunay,delaunayTriangulation类的表面重建工具。
您可能对Alpha Shapes感兴趣。