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:

- Siu-Wing Cheng and Man-Kit
Lau. Denoising a
Point Cloud for Surface Reconstruction.
Manuscript. It contains a comparison of the output
quality with several existing surface reconstruction codes.

- Man-Kit Lau. Denoising for Surface Reconstruction. MPhil Thesis, HKUST, 2012.
- Siu-Wing Cheng, Jiongxin Jin, and Man-Kit Lau. A Fast and Simple Surface Reconstruction Algorithm. Proceedings of the 28th Annual Symposium on Computational Geometry, 2012, 69-78.

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)]

**Parameter Settings**

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

- Second parameter (0.25): The value of the parameter lambda
in section 3.3 of our paper. If the noise level is known
to be quite small, one can try smaller value of lambda such as
0.1.

- Third parameter (1): Inform the software the number of
surface(s) to be reconstructed.

- Fourth parameter (40): The value of the parameter gamma in section 3.3 of our paper.
- Fifth parameter (2): The value of the parameter alpha
in section 2 of our paper, which is used in building the
octree to remove white noise, outliers and very noisy
points. If the sampling is significantly non-uniform at
some places, a larger value of alpha is needed and setting
alpha = 2.5 or 4 may work.

*S**ixth parameter (2): It is used in building the octree after removing outliers and very noisy points.*This parameter is no longer in use, but we do not bother to modify the code to remove it.- Ninth parameter (2): The value of the parameter beta in section 3.2 of our paper.
- There is also a parameter epsilon (10) in section 4 of the paper. This is specified as the third parameter in the fifth line in the DenoisingSurfRecon file:

ConstructBoundaries
$2.off 0 10 $2.off

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

- Fourth parameter (50): The maximum number of iterations for smoothing the mesh by the standard Laplacian smoothing algorithm.
- Fifth parameter (40): This parameter has the same effect as the parameter gamma in section 3.3 of our paper.

**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

**Outputs of DenoisingSurfRecon
**

- $2_denoised.obj is the denoised point set file obtained by executing DenoisingPointCloud.
- $2.off is the mesh file obtained by executing ConstructBoundaries.
- $2_smooth.off is the mesh file obtained by executing LaplacianSmoothing.

**Noise Setting in Our Experiments
**

- The point sets are contaminated with
Gaussian noise with zero mean and
*x*standard deviation along a direction chosen uniformly at random, where*x*is a certain fraction of*d*. - White noise points are drawn from a uniform distribution inside the minimum axes-aligned bounding cube of the point set.
- Each white noise point
*p*has 5% probability to become a cluster of outliers if there is no sample point inside the ball centered at*p*with radius 0.05*d*. Let*r_1*be a random integer in the range from 1 to*R*and*r_2*be a random real number in the range from 0 to 1. If*p*is chosen to be a cluster of outliers,*r_1*points are generated uniformly at random inside the ball centered at p and radius is 0.001**d***r_2*.

**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.