Skip to content

Commit

Permalink
Refactor SMRF code
Browse files Browse the repository at this point in the history
* only write intermediate rasters for debugging when optional output directory is provided

* make program args more consistent with the paper

* revert from TPS interpolation back to average of 8 nearest neighbors

* use iterative morphological operations and diamond structuring element for speedup

* remove the classify/extract args, always classify, and extract with range filter if desired
  • Loading branch information
chambbj committed Mar 17, 2017
1 parent d1c50ff commit 49d8889
Show file tree
Hide file tree
Showing 5 changed files with 488 additions and 848 deletions.
35 changes: 12 additions & 23 deletions doc/stages/filters.smrf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,6 @@ filters.smrf
Filter ground returns using the Simple Morphological Filter (SMRF) approach
outlined in [Pingel2013]_.

.. note::

Our implmentation of SMRF is in an alpha state. We'd love to have you kick
the tires and provide feedback, but do not plan on using this in production.

The current implementation of ``filters.smrf`` differs slightly from the
original paper. We weren't too happy with the performance of (our implementation
of) the inpainting routine, so we started exploring some other methods.

Some warts about the current implementation:

* It writes a bunch of intermediate/debugging outputs to the current directory
while processing. This should be made optional and then eventually go away.

.. [Pingel2013] Pingel, T.J., Clarke, K.C., McBride, W.A., 2013. An improved simple morphological filter for the terrain classification of airborne LIDAR data. ISPRS J. Photogramm. Remote Sens. 77, 21–30.
Example
Expand All @@ -34,9 +20,12 @@ returns, writing only the ground returns to the output file.
"pipeline":[
"input.las",
{
"type":"filters.smrf",
"extract":true
"type":"filters.smrf"
},
{
"type":"filters.range",
"limits":"Classification[2:2]"
}
"output.laz"
]
}
Expand All @@ -47,20 +36,20 @@ Options
cell
Cell size. [Default: **1.0**]

classify
Apply classification labels (i.e., ground = 2)? [Default: **true**]

cut
Cut net size (``cut=0`` skips the net cutting step). [Default: **0.0**]

extract
Extract ground returns (non-ground returns are cropped)? [Default: **false**]
outdir
Optional output directory for debugging intermediate rasters.

scalar
Elevation scalar. [Default: **1.25**]

slope
Slope (rise over run). [Default: **0.15**]

threshold
Elevation threshold. [Default: **0.15**]
Elevation threshold. [Default: **0.5**]

window
Max window size. [Default: **21.0**]
Max window size. [Default: **18.0**]
Loading

0 comments on commit 49d8889

Please sign in to comment.