This c++ project is the authors implementation of the following article
Stable and efficient differential estimators on oriented point clouds (PDF)
Thibault Lejemble
David Coeurjolly
Loïc Barthe
Nicolas Mellado
Computer Graphics Forum 2021
Proceedings of the Symposium on Geometry Processing (SGP) 2021
Abstract
Point clouds are now ubiquitous in computer graphics and computer vision. Differential properties of the point-sampled surface, such as principal curvatures, are important to estimate in order to locally characterize the scanned shape. To approximate the surface from unstructured points equipped with normal vectors, we rely on the Algebraic Point Set Surfaces (APSS) [GG07] for which we provide convergence and stability proofs for the mean curvature estimator. Using an integral invariant viewpoint, this first contribution links the algebraic sphere regression involved in the APSS algorithm to several surface derivatives of different orders. As a second contribution, we propose an analytic method to compute the shape operator and its principal curvatures from the fitted algebraic sphere. We compare our method to the state-of-the-art with several convergence and robustness tests performed on a synthetic sampled surface. Experiments show that our curvature estimations are more accurate and stable while being faster to compute compared to previous methods. Our differential estimators are easy to implement with little memory footprint and only require a unique range neighbors query per estimation. Its highly parallelizable nature makes it appropriate for processing large acquired data, as we show in several real-world experiments.
Caption: Differential estimations computed with our stable estimators on a large point cloud with normals (2.5M points). Zoom on: (a) the initial point cloud, (b) our corrected normal vectors, (c) mean curvature, (d,e) principal curvatures, and (f) principal curvature directions.
The single C++ header file include/AlgebraicShapeOperator.h based on Eigen provides one function to compute differential properties at one point from a range of oriented points using the Algebraic Shape Operator
template<class Point, class Scalar, class OrientedPointIterator>
auto compute(const Point& p, const Scalar r, const OrientedPointIterator first, const OrientedPointIterator last);
See the examples that show how to use it with Eigen, Ponca or libigl.
To replicate some results of the article (PDF), please checkout the figures directory for instructions.
The standalone source codes are given under the permissive MIT License, see License.md.
Please cite this paper if you use this code
@article{lejemble2021stable,
author = {Lejemble, Thibault and Coeurjolly, David and Barthe, Loïc and Mellado, Nicolas},
title = {Stable and efficient differential estimators on oriented point clouds},
journal = {Computer Graphics Forum},
volume = {40},
number = {5},
year = {2021}
}