  Point cloud is a collection of 3D coordinates that are discrete geometric
samples of an object's 2D surfaces. Imperfection in the acquisition process
means that point clouds are often corrupted with noise. Building on recent
advances in graph signal processing, we design local algorithms for 3D point
cloud denoising. Specifically, we design a reweighted graph Laplacian
regularizer (RGLR) for surface normals and demonstrate its merits in rotation
invariance, promotion of piecewise smoothness, and ease of optimization. Using
RGLR as a signal prior, we formulate an optimization problem with a general
lp-norm fidelity term that can explicitly model two types of independent noise:
small but non-sparse noise (using l2 fidelity term) and large but sparser noise
(using l1 fidelity term).
  To establish a linear relationship between normals and 3D point coordinates,
we first perform bipartite graph approximation to divide the point cloud into
two disjoint node sets (red and blue). We then optimize the red and blue nodes'
coordinates alternately. For l2-norm fidelity term, we iteratively solve an
unconstrained quadratic programming (QP) problem, efficiently computed using
conjugate gradient with a bounded condition number to ensure numerical
stability. For l1-norm fidelity term, we iteratively minimize an l1-l2 cost
function sing accelerated proximal gradient (APG), where a good step size is
chosen via Lipschitz continuity analysis. Finally, we propose simple mean and
median filters for flat patches of a given point cloud to estimate the noise
variance given the noise type, which in turn is used to compute a weight
parameter trading off the fidelity term and signal prior in the problem
formulation. Extensive experiments show state-of-the-art denoising performance
among local methods using our proposed algorithms.
