简体   繁体   English

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

[英]3D surface reconstruction by preserving point position

I have 3D point clouds and want to reconstruct the surface. 我有3D点云,想要重建表面。 I tried various techniques in Meshlab to find the algorithm that best suits my specific kind of cloud. 我在Meshlab中尝试了各种技术来找到最适合我特定类型云的算法。

The poisson surface reconstruction is very promising, but it does not preserve the original point position. 泊松表面重建是非常有前途的,但它不保留原始点位置。 After reconstruction and measuring at specific positions in the cloud it turned out that the measurements are off by a factor of over 1.5 compared to measurements on the object in the real world. 在云中的特定位置进行重建和测量之后,结果发现,与现实世界中的物体的测量值相比,测量值偏差超过1.5倍。

The ball pivoting algorithm is better. 球旋转算法更好。 It preserved the position of the points and the measurements were also within the expected range. 它保留了点的位置,测量值也在预期范围内。 However this algorithm is patented in the USA so I can't use it for a commercial project. 然而,这个算法在美国获得专利,所以我不能将它用于商业项目。

After researching other algorithms, I did not find any that preserve the point position like ball pivoting which could be used in a commercial environment. 在研究了其他算法之后,我没有找到任何可以保留像球转动那样可以在商业环境中使用的点位置。 Do you know algorithms that fulfill these two criteria and which I could try with my point cloud to see if they work well before implementing them? 您是否知道满足这两个标准的算法,我可以尝试使用我的点云来查看它们在实现之前是否运行良好?

Any help would be appreciated. 任何帮助,将不胜感激。

For interpolating surface reconstruction (that keeps the datapoints), two algorithms perform reasonably well (crust and co-cone). 对于插值曲面重建(保持数据点),两种算法表现得相当好(地壳和共锥)。

Crust algorithm: 地壳算法:

The idea is to first compute the Voronoi diagram of the pointset, then select from the Voronoi vertices the ones that are a good approximation of the medial axis (called the poles), then compute the 3D Delaunay triangulation of the input points + the poles, and finally extract the triangles that connect three input points in a tetrahedron where the fourth vertex is a pole. 我们的想法是首先计算点集的Voronoi图,然后从Voronoi顶点选择那些与中轴很好近似的点(称为极点),然后计算输入点+极点的3D Delaunay三角剖分,最后提取连接四面体中三个输入点的三角形,其中第四个顶点是一个极点。

More references: 更多参考:

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

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

  • plus: quite simple to implement, some theoretical guarantees if input data is a good sampling 加上:实现起来非常简单,如果输入数据是一个很好的采样,一些理论上的保证

  • minus: requires to compute two Delaunay triangulations 减:需要计算两个Delaunay三角剖分

Co-cone algorithm: 共锥算法:

The idea is to compute the Voronoi diagram of the pointset, and then in each Voronoi cell compute a good approximation of the normal to the surface (as the vector that connect the poles, ie the two Voronoi vertices furthest away from the datapoint). 这个想法是计算点集的Voronoi图,然后在每个Voronoi单元中计算表面法线的良好近似值(作为连接极点的矢量,即距离数据点最远的两个Voronoi顶点)。 Then in each Voronoi cell one considers the complement of a cone (co-cone) centered on the datapoint and having the normal as an axis. 然后在每个Voronoi单元中,考虑以数据点为中心并以法线为轴的圆锥(共锥)的互补。 If three co-cones have a non-empty intersection with a Voronoi edge, then the three datapoints are connected with a triangle. 如果三个co-cones与Voronoi边缘具有非空交集,则三个数据点与三角形连接。 Note that the co-cone objects do not need to be constructed explicitely (just angles need to be compared in order to test whether there is an intersection). 注意,共锥对象不需要明确地构造(仅需要比较角度以便测试是否存在交叉)。

More references: 更多参考:

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

  • Plus: requires a single Delaunay triangulation (compared to 2 for the Crust), some theoretical guarantees if the input data is a "good sampling" 加:需要单个Delaunay三角剖分(与地壳相比为2),如果输入数据是“良好采样”,则需要一些理论保证

  • Minus: a little bit more complicated than the crust (but worth the effort I think) 减:比地壳复杂一点(但值得我努力的努力)

Some final words: 最后一句话:

These algorithms construct a good (ie manifold) surface if the point set realises a good sampling (ie density proportional to thickness and curvature, something called "local feature size" = distance to medial axis). 如果点集实现良好的采样(即,与厚度和曲率成比例的密度,称为“局部特征尺寸”=距中间轴的距离),则这些算法构建良好(即流形)表面。 In practice, the input data does not satisfy this condition, therefore the output of the method will be a "soup of triangles" that will be mostly OK but that will require some post-processing to fix some local defects. 在实践中,输入数据不满足这个条件,因此该方法的输出将是“三角形汤”,其将基本上可以,但是这将需要一些后处理来修复一些局部缺陷。

Edit 03/21/16 You may also try my own algorithm (Co3Ne), implemented in my software library Geogram ( http://alice.loria.fr/software/geogram/doc/html/index.html ) and my software Graphite ( http://alice.loria.fr/software/graphite/doc/html/ ). 编辑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 can be downloaded there: http://gforge.inria.fr/frs/?group_id=1465 (both portable source code and Windows64 executable). Graphite可以在那里下载: http ://gforge.inria.fr/frs/?group_id = 1465(可移植源代码和Windows64可执行文件)。 It is a form of Co-cone with various optimizations and parallel implementation. 它是Co-cone的一种形式,具有各种优化和并行实现。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM