filters.normal¶
filters.normal returns the estimated normal and curvature for a collection
of points. The algorithm first computes the eigenvalues and eigenvectors of the
collection of points, which is comprised of the k-nearest neighbors. The normal
is taken as the eigenvector corresponding to the smallest eigenvalue. The
curvature is computed as
where \(\lambda_i\) are the eigenvalues sorted in ascending order.
The filter produces four new dimensions (NormalX, NormalY, NormalZ,
and Curvature), which can be analyzed directly, or consumed by downstream
stages for more advanced filtering.
The eigenvalue decomposition is performed using Eigen’s
SelfAdjointEigenSolver. For more information see
https://eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html.
Example¶
This pipeline demonstrates the calculation of the normal values (along with curvature). The newly created dimensions are written out to BPF for further inspection.
{
"pipeline":[
"input.las",
{
"type":"filters.normal",
"knn":8
},
{
"type":"writers.bpf",
"filename":"output.bpf",
"output_dims":"X,Y,Z,NormalX,NormalY,NormalZ,Curvature"
}
]
}
Options¶
- knn
- The number of k-nearest neighbors. [Default: 8]