  Acquired 3D point cloud data, whether from active sensors directly or from
stereo-matching algorithms indirectly, typically contain non-negligible noise.
To address the point cloud denoising problem, we propose a fast graph-based
local algorithm. Specifically, given a k-nearest-neighbor graph of the 3D
points, we first approximate it with a bipartite graph(independent sets of red
and blue nodes) using a KL divergence criterion. For each partite of nodes (say
red), we first define surface normal of each red node using 3D coordinates of
neighboring blue nodes, so that red node normals n can be written as a linear
function of red node coordinates p. We then formulate a convex optimization
problem, with a quadratic fidelity term ||p-q||_2^2 given noisy observed red
coordinates q and a graph total variation (GTV) regularization term for surface
normals of neighboring red nodes. We minimize the resulting l2-l1-norm using
alternating direction method of multipliers (ADMM) and proximal gradient
descent. The two partites of nodes are alternately optimized until convergence.
Experimental results show that compared to state-of-the-art schemes with
similar complexity, our proposed algorithm achieves the best overall denoising
performance objectively and subjectively.
