From Point Cloud to Surface
Local reonstruction
Estimate Surface Normal from Points
- Find \(k\) nearest neighbors of each point.
- Covariance analysis (PCA) to find the normal vector. $$ \mathbf{C} = \frac{1}{k-1} \sum_{i=1}^{k} (\mathbf{x}_i - \bar{\mathbf{x}})(\mathbf{x}_i - \bar{\mathbf{x}})^T $$ where \(\bar{\mathbf{x}}\) is the mean of the \(k\) neighbors.
-
Eigenvalue decomposition of the covariance matrix \(\mathbf{C}\). The eigenvector \(\vect{n}_i\) corresponding to the smallest eigenvalue is the normal vector. (Intuition: This eigenvector represents the direction of least variance, which should be orthogonal to the surface.)
-
Determine the normal orientation by minimal spanning tree (MST) propagation.
Signed Distance from tangent plane
-
For the given oriented point cloud, each pair of points \(\vect{x}_i\) and corresponding normal \(\vect{n}_i\) defines a local tangent plane, i.e., first-order approximation of the underlying surface at \(\vect{x}_i\). We can calculate the signed distance of a query point \(\vect{q}\) to the tangent plane at \(\vect{x}_i\): $$ d(\vect{q}) = (\vect{q} - \vect{x}_i) \cdot \vect{n}_i $$ This is just the dot product of the vector from \(\vect{x}_i\) to \(\vect{q}\) and the normal vector \(\vect{n}_i\) -- Project \(\vect{q}\) onto the normal direction.
-
We can average the signed distances from nearby planes: $$ d(\vect{q}) = \frac{\sum_{i=1}^{k} w(\vect{x}i, \vect{q}) \cdot d(\vect{q})}{\sum $$ where }^{k} w(\vect{x}_i, \vect{q})\(w(\vect{x}_i, \vect{q})\) is a weight function, e.g., Gaussian kernel.
Global reconstruction
RBF interpolation
Interpolate the surface using radial basis functions (RBFs):
where \(\phi\) is a radial basis function, and we can solve the symmetric linear system for weights \(w_i\).
RBF fucnctions
Wendland Basis Functions
Properties: - Go to zero beyond a radius \(\sigma\), good for sparse systems. - Positive definite - Their smoothness can be controlled, e.g., \(C^0\), \(C^2\), \(C^4\), etc.
For instance, a \(C^2\) Wendland function is defined as:
where \(r = \|\vect{x}_j - \vect{x}_i\|\) and \([x]_+ = \max(0, x)\).
Triharmonic Basis Functions
Triharmonic functions are defined as:
It is very simple, but does not have compact support, meaning it does not go to zero beyond a certain radius.