views:

1974

answers:

7

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 is the established, most robust algorithm in the field?
  • Recommended research publications?
  • Is there available source code?
+1  A: 

Not sure if it's exactly right for your case, since it seems weird that you omitted it, but marching cubes is commonly mentioned in cases like these.

unwind
thanks, I am still in an exploring stage of the subject, haven't heard of marching cubes before - will check out.
Fredriku73
marching cubes isn't ideal for surface points, it's expensive to work out if you are inside the volume or not.
Martin Beckett
A: 

You might be interested in Alpha Shapes.

ESRogs
+1  A: 

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.

Paul Lalonde
Nice, up-to-date paper that I hadn't come across before. Like the Related Eork section. Awesome, thanks!
Fredriku73
+5  A: 

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

Algorithms

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.

Implementations

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.

Zoli
thanks for sharing all you review work, great answer. Busy with other stuff at the moment, but I'll get back to you once I get the time to evaluate the algorithms/code you provided.
Fredriku73
I have played with Misha's poisson code, it's especially useful for lasers scanners where you have a normal. I have had issues with it not preserving the original volume - shapes balloon out.
Martin Beckett
A: 

While not a mesh representation, an ex-colleague recommended me this link to source code for a Thin Plate Spline method:

Link

Anyone tried it?

Fredriku73
A: 

On the same website there are a series of open source works.

(I can only post one hyperlink because of spam firewall)

http://www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-mycrust-robust.html

Anyway the problem solution strictly depends from your cloud. If you need a hint contact me on my e-mail.

Luigi Giaccari
+1  A: 

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.

ALoopingIcon