# filters.covariancefeatures¶

This filter implements various local feature descriptors introduced that are based on the covariance matrix of a
point’s neighborhood. The user can pick a set of feature descriptors by
setting the `feature_set`

option. Currently, the only supported feature is the dimensionality
set of feature descriptors introduced below.

## Example¶

```
[
"input.las",
{
"type":"filters.covariancefeatures",
"knn":8,
"threads": 2,
"feature_set": "Dimensionality"
},
{
"type":"writers.bpf",
"filename":"output.las",
"output_dims":"X,Y,Z,Linearity,Planarity,Scattering,Verticality"
}
]
```

## Options¶

- knn
- The number of k nearest neighbors used for calculating the covariance matrix. [Default: 10]
- threads
- The number of threads used for computing the feature descriptors. [Default: 1]
- feature_set
- The features to be computed. Currently only supports
`Dimensionality`

. [Default: “Dimensionality”] - stride
- When finding k nearest neighbors, stride determines the sampling rate. A stride of 1 retains each neighbor in order. A stride of two selects every other neighbor and so on. [Default: 1]

### Dimensionality feature set¶

The features introduced in [Demantke2011] describe the shape of the neighborhood, indicating whether the local geometry is more linear (1D), planar (2D) or volumetric (3D) while the one introduced in [Guinard2017] adds the idea of a structure being vertical.

The dimensionality filter introduces the following four descriptors that are computed from the covariance matrix of the `knn`

neighbors:

- linearity - higher for long thin strips
- planarity - higher for planar surfaces
- scattering - higher for complex 3d neighbourhoods
- verticality - higher for vertical structures, highest for thin vertical strips

It introduces four new dimensions that hold each one of these values: `Linearity`

`Planarity`

`Scattering`

and `Verticality`

.