Denoising a Point Cloud for Surface Reconstruction

Siu-Wing Cheng and Man-Kit Lau

Surface reconstruction from unorganized point cloud is an important problem due to its wide variety of applications. In the presence of noise and outliers, surface reconstruction becomes more challenging.  We have developed a software, DenoisingSurfRecon, to denoise a point cloud. It handles white noise, possibly clustered outliers, and gaussian noise on the data points. It is applicable to a point cloud sampled from a smooth surface in 3D.  Smooth boundaries are allowed, but corners and non-manifold features are not catered for.  The executable of DenoisingSurfRecon can be downloaded via this link (it should be executed on a linux machine).

High-Level Ideas

DenoisingSurfRecon first removes the white noise, outliers, and very noisy points based on the point cloud behavior and simple statistical analysis.  It then denoises the remaining points by a meshless Laplacian smoothing algorithm.   Then, the Robust Cocone software is run on the denoised point set to reconstruct the surface.  Finally, some of the triangles of the reconstructed surface are removed for constructing the boundaries and the resulting mesh is further smoothed by a standard Laplacian smoothing algorithm.   The relevant publications include:

This work is supported by Research Grants Council, Hong Kong, China.

How to Run DenoisingSurfRecon?

Decompressing the file DenoisingSurfRecon.zip yields five files: DenoisingSurfRecon, DenoisingPointCloud, ConvertSurfToOFF, ConstructBoundaries and LaplacianSmoothing.

Before executing our program, please make sure that you have downloaded the Robust Cocone software from the Robust Cocone project page and make sure the name of the Robust Cocone software is "rcocone-linux".

Type in the following command to run our program with the default parameter setting:

DenoisingSurfRecon [inputFileName] [outputFileName(without extension)] 

The input file should respect the following format: Each row contains the coordinates of a 3D point, and the coordinates are separated by a space.

Parameter Settings

DenoisingPointCloud
Several parameters are specified in the first line in the DenoisingSurfRecon file:

DenoisingPointCloud $1 0.25 1 40 2 2 0.0008 200 2 $2
ConstructBoundaries $2.off 0 10 $2.off
           

LaplacianSmoothing
Several more parameters are specified in the last line in the DenoisingSurfRecon file:

LaplacianSmoothing $2.off $2_smooth.off 0 50 40

Remark
The default values of the above parameters are set based on our experience.  You may change the parameters if necessary.  The other parameters that are not discussed above are redundant parameters, and there is no need to change them. Note that, you may also want to change the parameters of the robust cocone software if necessary, that is,

rcocone-linux [-L | -bbr | -thif | -thff ] infile outfile_prefix

For more details, you may refer to the Robust Cocone project page.

Outputs of DenoisingSurfRecon

Three files are generated after running DenoisingSurfRecon. Let $2 denotes the prefix of the output file name.

Noise Setting in Our Experiments

Let d be the length of the diagonal of the minium axes-aligned bounding cube.

Examples

Our paper contains quite a number of examples.

For the examples below, the # white noise point is 50% of the original point set size, R = 400 and 0.5% Gaussian noise.  Column (a) is the input point cloud.  Column (b) is the denoised point set.  Column (c) is the reconstructed surface mesh.

(a) (b) (c)


Some more examples of reconstructions using our denoising code and Robust Cocone.







Some more examples of denoising point sets.