User Tools

Site Tools


ece4580:module_pcd:localnormals

This is an old revision of the document!


Local surface Normal Estimation

For some applications, not only is the local connectivity of a point region important, but so is the local surface normal for that particular neighborhood. Naturally, then, many point cloud libraries invole the calculation of the local normal vectors, either over the entire point set or for a subset of the point set. There are two related approaches for computing the normal vector.

PCA

The principal component analysis, or PCA, approach does not really perform principal component analysis, however it does share that same processing up to a certain point. PCA is effectively a method for finding a linear subspace that represents the data well. It involves eigenvalue/eigenvector analysis of the covariance matrix for a set of data.

NOTES HERE.

SVD

Noting the similarity of the PCA approach to the SVD calculations, one can immediately identify a similar procedure as the PCA one, but involving the SVD of a matrix. Given a set of points in matrix form, $P$, where the data is column-wise, the SVD is: $$ P = U \Sigma V $$ We know that the normal to a surface is the vector that is orthogonal to the surface. Let's presume that the points in $P$ have been centered so that they have zero mean (so really, the coordinates represent vector directions from the mean value to the actual point in the cloud). If the local surface is a small rectangular patch, or at least practically looks like one, then there exists a normal vector $n$ such that $$ n^T p_i = , \ \ \forall i \in 1 \dots n$$ where $n$ is the number of points in $P$. Alternatively, we can write is relative to the matrix $P$, $$ n^T P = 0$ where now the right hand side is the vector of 0 values (it is 1 x $n$).

NOTES HERE.


Return

ece4580/module_pcd/localnormals.1486231014.txt.gz · Last modified: 2024/08/20 21:38 (external edit)