1.. _filters.elm:
2
3filters.elm
4===============================================================================
5
6The Extended Local Minimum (ELM) filter marks low points as noise. This filter
7is an implementation of the method described in [Chen2012]_.
8
9ELM begins by rasterizing the input point cloud data at the given cell_ size.
10Within each cell, the lowest point is considered noise if the next lowest point
11is a given threshold above the current point. If it is marked as noise, the
12difference between the next two points is also considered, marking points as
13noise if needed, and continuing until another neighbor is found to be within the
14threshold. At this point, iteration for the current cell stops, and the next
15cell is considered.
16
17.. embed::
18
19Example #1
20----------
21
22The following PDAL pipeline applies the ELM filter, using a cell_ size of 20
23and
24applying the :ref:`classification <class>` code of 18 to those points
25determined to be noise.
26
27.. code-block:: json
28
29    {
30      "pipeline":[
31        "input.las",
32        {
33          "type":"filters.elm",
34          "cell":20.0,
35          "class":18
36        },
37        "output.las"
38      ]
39    }
40
41Example #2
42----------
43
44This variation of the pipeline begins by assigning a value of 0 to all
45classifications, thus resetting any existing classifications. It then proceeds
46to compute ELM with a threshold_ value of 2.0, and finishes by extracting all
47returns that are not marked as noise.
48
49.. code-block:: json
50
51  [
52      "input.las",
53      {
54          "type":"filters.assign",
55          "assignment":"Classification[:]=0"
56      },
57      {
58          "type":"filters.elm",
59          "threshold":2.0
60      },
61      {
62          "type":"filters.range",
63          "limits":"Classification![7:7]"
64      },
65      "output.las"
66  ]
67
68Options
69-------------------------------------------------------------------------------
70
71_`cell`
72  Cell size. [Default: 10.0]
73
74_`class`
75  Classification value to apply to noise points. [Default: 7]
76
77_`threshold`
78  Threshold value to identify low noise points. [Default: 1.0]
79
80.. include:: filter_opts.rst
81
82