通过保持点位置进行三维表面重建

时间:2015-07-13 13:47:51

标签: c# 3d mesh point-clouds 3d-reconstruction

我有3D点云,想要重建表面。我在Meshlab中尝试了各种技术来找到最适合我特定云的算法。

泊松表面重建非常有前景,但它不能保留原始点位置。在云中的特定位置进行重建和测量后,结果表明,与现实世界中物体的测量结果相比,测量值偏差超过1.5倍。

球转动算法更好。它保留了点的位置,测量值也在预期范围内。然而,这个算法在美国获得专利,所以我不能将它用于商业项目。

在研究了其他算法之后,我没有找到任何保留像球转动那样可以在商业环境中使用的点位置。您是否知道满足这两个标准的算法,我可以尝试使用我的点云来查看它们在实现之前是否运行良好?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

对于插值曲面重建(保留数据点),两种算法表现得相当好(地壳和共锥)。

地壳算法:

这个想法是首先计算点集的Voronoi图,然后从Voronoi顶点中选择那些与中轴很好近似的点(称为极点),然后计算输入点的3D Delaunay三角剖分+极点,最后提取连接四面体中三个输入点的三角形,其中第四个顶点是一个极点。

更多参考资料:

http://web.cs.ucdavis.edu/~amenta/pubs/crust.pdf

http://web.mit.edu/manoli/crust/www/crust.html

  • plus:实现起来非常简单,如果输入数据是一个很好的采样,一些理论上的保证

  • 减:需要计算两个Delaunay三角剖分

Co-cone算法:

这个想法是计算点集的Voronoi图,然后在每个Voronoi单元中计算表面法线的良好近似值(作为连接极点的矢量,即距离数据点最远的两个Voronoi顶点)。然后在每个Voronoi单元中,考虑以数据点为中心并以法线为轴的圆锥(共锥)的互补。如果三个co-cones与Voronoi边缘具有非空交集,则三个数据点与三角形连接。注意,共锥对象不需要明确地构造(仅需要比较角度以便测试是否存在交叉)。

更多参考资料:

http://web.cse.ohio-state.edu/~tamaldey/surfrecon.htm

  • Plus:需要单个Delaunay三角剖分(相比于地壳的2),如果输入数据是"良好的采样"

  • ,则需要一些理论上的保证。
  • 减:比地壳复杂一点(但值得我努力)

最后一句话:

如果点集实现了良好的采样(即与厚度和曲率成比例的密度,称为"局部特征尺寸" =到中轴的距离),这些算法构造了良好的(即流形)表面。在实践中,输入数据不满足这个条件,因此该方法的输出将是三角形的汤和#34;这将是最好的,但这将需要一些后处理来修复一些本地缺陷。

编辑03/21/16 您也可以尝试我自己的算法(Co3Ne),在我的软件库Geogram(http://alice.loria.fr/software/geogram/doc/html/index.html)和我的软件Graphite(http://alice.loria.fr/software/graphite/doc/html/中实现)。 Graphite可以在那里下载:http://gforge.inria.fr/frs/?group_id=1465(便携式源代码和Windows64可执行文件)。它是Co-cone的一种形式,具有各种优化和并行实现。