v.lidar.mcc is a modified implementation of the Multiscale Curvature Classification (MCC) algorithm proposed by Evans & Hudak 2007.
The aim of the MCC-procedure is to filter non-ground returns caused by vegetation cover from point clouds
produced with any kind of LiDAR instrument (e.g. also instruments without intensity information).
The basic principle of the algorithm is to classify those points as non-ground points which deviate more than a user-defined threshold (t) from a surface which was interpolated from the full point cloud as a thin plate (here implemented with a bilinear spline interpolation with Tykhonov regularization through v.outlier). Tension (f) and spline steps (s) parameter are passed to the relevant parameters in v.outlier.
On each scale domain v.lidar.mcc calls v.outlier repeatedly until the algorithm converges, i.e. less than the amount of points (percentage of input points to the iteration) defined in the convergence threshold (j) are classified as non-ground points. Scale domains are defined in relation to the current region. With a number of scale domains (nl) greater than 1 scale domains are distributed evenly "around" the current region. With the default number of three scale domains, the first scale domaine uses half the resolution of the current region, scale domain two uses the current region and scale domain three uses 1,5 times the resolution of the current region.
The optimal settings for the parameters of v.lidar.mcc depend very much on the resolution of the current region and the density of the LiDAR data, as well as terrain and vegetation. Therefore, a bit of try and error is usually required in order to find the optimal settings. In general spline steps (s) and curvature tolerance threshold (t) parameters have most influence on the results, where larger spline steps and a lower curvature tolerance threshold lead to more points clasified as non-ground points, but possibly also to increased clasification errors in complex terrain.
The algorithm by Evans & Hudak 2007 was developed for filtering LiDAR data in dense forest areas where not necessarily all pixels have a ground return point which is why a simple local minimum filering often is not sufficient.
In principle the algorithm works also on shrub-vegetation, however due to the lower vegetation type the curvature threshold will have to be lowered. In this case special attention should be payed to edges and peaks in the terrain which may be affected by low curvature tolerance thresholds. Therfore using a smaller cell size and wider spline steps is recommended for filtering lower structures like shrubs.
The effect and output of the filtering process can be visually inspected already during iterations when the resulting layer with non-ground points is
displayed while the classification is running.
However, especially the first runs on scale domains with a small pixels size can be relatively time consuming.
# region settings (using an existing raster) g.region raster=elev_lid792_1m # import v.in.lidar -tr input=points.las output=points # classification v.lidar.mcc points ground=ground_points nonground=non_ground_points
Figure: Ground points (green) and non ground points (red)
© 2003-2020 GRASS Development Team, GRASS GIS 7.8.3dev Reference Manual