Skip to content
Bruno Levy edited this page Jul 11, 2022 · 7 revisions

Pointsets Preprocessing and Reconstruction

Input data is available here.

Graphite has functions to pre-process pointsets obtained from 3D scanners, and reconstruct surfaces from them.

Removing spurious points (outliers)

Raw scanned pointsets often have spurious points that one needs to remove. For instance, the raw armadillo from Stanford scanning archives is surrounded by a cloud of outliers.

Invoke the command Points/preprocessing/detect outliers. It finds the outliers by detecting points that have one of their nb nearest neighbors further away than radius. Detected outliers are displayed as red dots. Depending on the dataset, you may need to play a bit with the parameters. For the Armadillo, default parameters miss a couple of points, so use nb=30 and radius=0.005.

Once you are happy with the result, invoke Points/delete selected points.

If tuning the parameters is hard, you may also manually pick some points, using the select vertex tool. Use the left button to select a point, and the right button to unselect.

Pointset smoothing

Scanned pointsets are often a bit noisy (left image), due to small registration errors or simply to noise in the acquisition process. To smooth-out this noise, use Points/Preprocessing/smooth point set. It iteratively projects each point onto a plane fit to its nb_neighbors nearest neighbors. In the present example, we used nb_neighbors=45.

Surface reconstruction

Graphite has two surface reconstruction methods:

  • SSSR/Co3Ne (Simple and Scalable Surface Reconstruction), that uses the existing points to create a triangulated mesh. Note: by default, SSSR does one iteration of pointset smoothing before reconstruction (can be deactivated in the advanced parameters).

  • Poisson Surface Reconstruction (by Misha Kahzdan), that uses an octree.

In addition, it also has 2D Delaunay, for reconstructing surfaces from digital elevation models or airborne LIDAR data.

Which is best, Co3Ne or Poisson ?

It all depends on the data, this is the reason why we keep both methods in Graphite/Geogram. For the Armadillo pointset (top image), there are some registration errors and remaining outliers. Poisson reconstruction does a good job for smoothing the problematic points without losing geometric details, whereas Co3Ne reconstruction, that has no choice than using the existing points, exhibits some artifacts. For the Horse pointset (bottom image), the pointset is clean, but has a huge variation of density. This causes bulges in Poisson reconstruction, whereas SSSR/Co3Ne reconstruction nicely interpolates the pointset.

Sampling Surfaces and Volumes

Graphite has commands to generate a regular point sampling on a surface (Points/Sampling/sample surface) and in a volume (Points/Sampling/sample volume). For volume sampling, the mesh needs to be tetrahedralize (use Volume/tet meshing).

Estimating pointset density

One can estimate the density of a pointset by counting the number of points in spheres of a given radius centered on each point. It is useful to show the zones of the pointset that are undersampled (often the top and the bottom, like in the video).

References