# filters.eigenvalues¶

The **eignvalue filter** returns the eigenvalues for a given point,
based on its k-nearest neighbors.

The filter produces three new dimensions (`Eigenvalue0`

, `Eigenvalue1`

, and
`Eigenvalue2`

), which can be analyzed directly, or consumed by downstream
stages for more advanced filtering. The eigenvalues are sorted in ascending
order.

The eigenvalue decomposition is performed using Eigen’s SelfAdjointEigenSolver.

## Example¶

This pipeline demonstrates the calculation of the eigenvalues. The newly created dimensions are written out to BPF for further inspection.

```
[
"input.las",
{
"type":"filters.eigenvalues",
"knn":8
},
{
"type":"writers.bpf",
"filename":"output.bpf",
"output_dims":"X,Y,Z,Eigenvalue0,Eigenvalue1,Eigenvalue2"
}
]
```

## Options¶

- knn
The number of k-nearest neighbors. [Default: 8]

- normalize
Normalize eigenvalues such that the sum is 1. [Default: false]

- where
An expression that limits points passed to a filter. Points that don’t pass the expression skip the stage but are available to subsequent stages in a pipeline. [Default: no filtering]

- where_merge
A strategy for merging points skipped by a ‘where’ option when running in standard mode. If

`true`

, the skipped points are added to the first point view returned by the skipped filter. If`false`

, skipped points are placed in their own point view. If`auto`

, skipped points are merged into the returned point view provided that only one point view is returned and it has the same point count as it did when the filter was run. [Default:`auto`

]