三维表面重建robust algorithm for surface reconstruction from 3D point cloud

637人阅读 评论(1) 收藏 举报


I am trying to figure out what algorithms there are to do surface reconstruction from 3D range data. At a first glance, it seems that the Ball pivoting algorithm (BPA) and Poisson surface reconstruction are the more established methods?

  • What are the established, more robust algorithm in the field other than BPA and Poisson surface reconstruction algorithm?
  • Recommended research publications?
  • Is there available source code?

I have been facing this dilemma for some months now, and made exhaustive research.


Mainly there are 2 categories of algorithms: computation geometry, and implicit surfaces.

Computation Geometry

They fit the mesh on the existing points.

Probably the most famous algorithm of this group is powercrust, because it is theoretically well-established - it guarantees watertight mesh.

Ball Pivoting is patented by IBM. Also, it is not suitable for pointclouds with varying point density.

Implicit functions

One fits implicit functions on the pointcloud, then uses a marching-cube-like algorithm to extract the zero-set of the function into a mesh.

Methods in this category differ mainly by the different implicit functions used.

Poisson, Hoppe's, and MPU are the most famous algorithms in this category. If you are new to the topic, i recommend to read Hoppe's thesis, it is very explanatory.

The algorithms of this category usually can be implemented so that they are able to process huge inputs very efficiently, and one can scale their quality<->speed trade-off. They are not disturbed by noise, varying point-density, holes. A disadvantage of them is that they require consistently oriented surface normals at the input points.


You will find small number of free implementations. However it depends on whether You are going to integrate it into free software (in this case GPL license is acceptable for You) or into a commercial software (in this case You need a more liberal license). The latter is very rare.

One is in VTK. I suspect it to be difficult to integrate (no documentation is available for free), it has a strange, over-complicated architecture, and is not designed for high-performance applications. Also has some limitations for the allowed input pointclouds.

Take a look at this Poisson implementation, and after that share your experience about it with me please.

Also: here are a few high-performance algorithms, with surface reconstruction among them.

CGAL is a famous 3d library, but it is free only for free projects.Meshlab is a famous application with GPL.

Also (Added August 2013):The library PCL has a module dedicated to surface reconstruction and is in active development (and is part of Google's Summer of Code). The surface module contains a number of different algorithms for reconstruction. PCL also has the ability to estimate surface normals, incase you do not have them provided with your point data, this functionality can be found in the features module. PCL is released under the terms of the BSD license and is open source software, it is free for commercial and research use.

You may also be interested in A Benchmark for Surface Reconstruction which is a SIGGRAPH paper that include source code, at least some of which is BSD license.

If you want make some direct experiments with various surface reconstruction algorithms you should try MeshLab, the mesh-processing system, it is open source and it contains implementations of many of the previously cited surface reconstruction algorithms, like:

  • Poisson Surface Recon
  • a couple of MLS based approach,
  • a ball pivoting implementation
  • a variant of the Curless volume based approach
  • Delaunay based techniques (Alpha shapes and Voronoi filtering)
  • tools for computing normals from scattered point sets
  • and many other tools for comparing/measuring/cleaning/simplifying the resulting meshes.

Sources are protected by GPL, so you could not use them in a commercial closed source project, but it is very important to get the right feeling about the properties of the various surface reconstruction algorithms (how sensitive to noise they are, the speed, the robustness to outliers, how they preserve fine details etc etc) before starting to implement one of them.

You might start looking at some recent work in the field - currently something like Fast low-memory streaming MLS reconstruction of point-sampled surfaces by Gianmauro Cuccuru, Enrico Gobbetti, Fabio Marton, Renato Pajarola, and Ruggero Pintus. Its citations can get you going through the literature pretty quickly.

Here on GitHub, is a open source Mesh Processing Library in C++ by Dr. Hugues Hoppe, in which the surface reconstruction program Recon is a good option for your problem...

As I had this problem too, I did develop and implement my own point cloud crust algorithm. The sources as well as the documentation can be found on github.com: https://github.com/ricebean-net/PointCloudCrust. The algorithm is implemented in Java.

Maybe, this can help you. You can find also a short python script on the page which illustrates how to use the library. Have fun!


A Benchmark for Surface Reconstruction 表面重建的基准

摘要: 我们提供云数据中进行表面重建的各个算法,并进行评价和比较。尽管在表面重建问题上做了大量的工作,但是一个全面评估这类算法的方法仍然没有。我们提出一个简易的管道来确定表面重建算法,包括三个主要...
  • xiaguangzhiying
  • xiaguangzhiying
  • 2015-05-22 11:27:03
  • 1002

qianyi-zhou offline RGB-D 三维重建(1)

写在前面微软 Kinect 出来以后,大多数人都做实时三维重建,qianyi-zhou做离线的三维重建,离线的三维重建对于算法的实时性没要求,重建的精度自然要高。先看下zhou大牛近几年在离线三维重建...
  • fuxingyin
  • fuxingyin
  • 2016-10-25 21:16:06
  • 2623

MATLAB: 3d reconstruction using eight point algorithm

I am trying to achieve 3d reconstruction from 2 images. Steps I followed are, 1. Found corres...
  • kangdehua
  • kangdehua
  • 2016-09-21 13:44:02
  • 249

PCL: Surface模块之GridProjection表面重建

参考文献: 关于此类的详细信息和学术上的理论推导大家可以查看RuosiLi的文章“Polygonizing Extremal Surfaces with ManifoldGuarantees”。...
  • u012337034
  • u012337034
  • 2014-07-21 11:15:38
  • 2723

3D开源点库(PointCloud Library)介绍

Point Clouds Library (PCL) 是由Radu Bogdan等人开发的一个开源项目,其最初的动机是专注于点云感知的应用,并集成大量高级的用语3D感知的方法,适用于3 Buildin...
  • kezunhai
  • kezunhai
  • 2013-08-07 12:02:42
  • 1930


该博客内容发表在泡泡机器人公众号上,请尊重泡泡机器人公众号的版权声明。基于RGB-D的三维重建要从RGB-D相机说起,微软早在2010年就把Kinect折腾出来了,2011年发布了Kinect SDK...
  • fuxingyin
  • fuxingyin
  • 2017-02-28 19:18:57
  • 3939

VisualSFM+MeshLab 三维重建全过程记录

VisualSFM+MeshLab 三维重建全过程记录,从下载到运行出结果,以及其中一些可能出现的小问题。通过这两个软件熟悉一下多目立体视觉重建的流程。...
  • u012750702
  • u012750702
  • 2016-11-26 16:07:43
  • 6561


看了andrew ng老师的lecture里面介绍自己的学生做了这方面的事情,我感觉超好玩,就想自己动手做试试看,毕竟是ML和AI的结合啊。     所以就去搜了篇论文《3D scene recons...
  • u011100984
  • u011100984
  • 2014-06-26 15:29:52
  • 890

人脸3D重建:Cascaded Regressor

《Cascaded Regressor based 3D Face Reconstruction from a Single Arbitrary View Image》论文解读本文来自四川大学,论文原...
  • tinyzhao
  • tinyzhao
  • 2016-12-14 15:58:51
  • 3189

3D【4】人脸重建:Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric

该论文主要是用CNN直接重建3D人脸,而不是预测3DMM模型的参数,网络结构是漏斗网络( HG)。论文提出了三种方案,第一种是直接从图片重建,第二种是加入了人脸特征点,第三种是多任务(重建+人脸特征...
  • linmingan
  • linmingan
  • 2018-02-24 10:24:18
  • 181
    访问量: 58万+
    积分: 7584
    排名: 3580