Understand the scene
Ground filter
Drop a simulated cloth on the upside-down cloud to fit the ground, label every point ground or off-ground, and measure each point’s height above that ground, with no training data and parameters you can adjust live.
Fitting is free. Exporting hag and groundify is Pro.
Part of Point cloud classification, LiDAR terrain (DTM, DSM), Free point cloud software.

When to use it
First, on any outdoor survey: terrain products are built on this fit, vegetation height is measured from it, and change detection is easier to read with it. It works on data no model was trained for, because it assumes nothing but that the ground is below everything else.
Step by step
- Open Process › Ground filter…. The first fit starts at once, with the defaults.
- Adjust while you look: Resolution (m) is the cloth’s cell size (0.5 m by default), Rigidness from 1 to 5 (3 by default) is how stiff it is, and Ground within (m) is how close to the cloth a point must be to count as ground (0.5 m by default). Releasing a slider re-runs the fit.
- Leave Label the cloud ground / off-ground ticked to install the result as the classification, with the Ground / off-ground vocabulary and the Classes view.
- The summary line gives the ground and off-ground counts. Colour by
hagto see height above ground. - When it looks right, press Finish. The fit is listed under Results as Ground fit, and Terrain products will use it.


What it was measured at
Against IGN LiDAR HD’s own production ground class, 16.2 million points, at 2.0 m and 0.50 m: precision 83.8 %, recall 97.9 %, F1 90.3 %, in 2.1 s. At 1.0 m, recall rises to 99.7 % and precision falls to 80.4 %; tightening the threshold to 0.15 m raises precision to 87.0 % and costs recall.
From the command line
n3d-render-cli ground --input tile.laz # summary
n3d-render-cli ground --input tile.laz --check-against 2 # score against the file's own class 2
n3d-render-cli ground --input tile.laz --out tile_ground.las --resolution 2 --threshold 0.5
Limits, stated
- A ground fit is a two-class answer: it says a point is not ground, not what it is. Run a classifier for the rest.
- The way a cloth fails is a shape (a bridge draped, a steep bank clipped), which is why the parameters stay live: it is obvious on screen and invisible in a number.
- Precision and recall are reported separately, never as one accuracy figure: a filter that calls everything ground scores 60 % on a scene that is 60 % ground.
Related questions
How good is the ground filter?
Against IGN LiDAR HD’s own production ground class on 16.2 million points, at a 2 m resolution and a 0.5 m threshold: precision 83.8 %, recall 97.9 %, F1 90.3 %, in 2.1 s. It needs no training data and no model file. Precision and recall are reported separately because they fail in opposite directions.
What goes into a LAS export?
The class column fills LAS’s classification byte (0 to 255). Segment, instance and component ids are written as exact 32-bit unsigned extra bytes, and computed scalars such as height above ground or deviation as 32-bit floats, so PDAL, laspy and CloudCompare read them back. Intensity, returns, point source and scan angle keep their standard slots. The file is LAS 1.2 unless a class exceeds 31 or a coordinate system is present, in which case it is LAS 1.4.
More in the FAQ.
Related guides
confidence column, and split a powerline corridor into individual trees, spans and poles.
Compare and register
Compare and detect change (M3C2)
Compare a survey against a reference (another survey, a mesh or a BIM model) as a signed distance with conformance bands and a worst-first list of defects, or run M3C2 to say what was gained, what was lost, and what simply was not observed.