Skip to content
LidarKit

How LiDAR classification works

A point knows where it is. Everything else has to be inferred from the company it keeps.

Classification gives every point a label saying what it represents — ground, vegetation, building, water, noise — stored as a single number in the point record using theASPRS class codes. Class 2 is ground, class 6 is building, and so on.

The critical thing to understand is what classification isnot. It is not measured. The sensor recorded a range and an angle; nothing in that says whether the beam struck a roof or a pavement. Classification is a judgement added afterwards, almost always by an algorithm, and the file records the conclusion without recording the confidence. A file asserting class 2 is telling you what some software decided, and that is all.

The only real clue: context

Consider one point, alone: an X, a Y, a Z, maybe an intensity. Is it ground? The question has no answer. A point at 43.2 m elevation could be a pavement in a high street or the roof of a single-storey building in a valley. Nothing in the record distinguishes them.

Now consider the same point with its surroundings. If points nearby are all at similar heights and the surface varies gently over fifty metres, it is ground. If it belongs to a flat patch sitting four metres above everything around it, ending in an abrupt edge, it is a roof.

Every classification algorithm is an attempt to formalise that second paragraph. They differ in how they measure context and what they assume about landscapes, but none escapes the fact that the information lives between points rather than in them.

Ground comes first

Classification is not a single pass that sorts points into bins. It is a sequence, and ground is nearly always the first real step — because most other classes are defined relative to the ground.

"Building" does not mean flat; it means flat and above the terrain. "High vegetation" means foliage above a height threshold, and a threshold needs a reference. Neither definition can be evaluated until you know where the ground is at that spot. This is also why an error in the ground surface propagates: a roof mistaken for terrain raises the local ground, and every point above it is then measured against the wrong baseline.

The usual order:

  1. Remove gross noise. Points far below or far above anything plausible, which would otherwise anchor the ground surface in the wrong place. A single low outlier can drag a wide area down.
  2. Find the ground. Build a terrain surface from the lowest credible points, admitting or rejecting each point according to how it sits relative to that surface.Creating a DTMcovers the algorithm families in detail.
  3. Normalise heights. Replace each point's absolute elevation with its height above ground. This is the step that makes everything afterwards tractable — a building on a hillside and a building in a valley now look identical, and a single threshold works across the whole site.
  4. Separate the above-ground classes using geometry, return structure and colour.

Step 3 is quietly the most valuable idea here. Before normalisation, terrain relief swamps every other signal: on a site with thirty metres of slope, absolute elevation says nothing about what a point is. After it, a number that was meaningless becomes the single most informative feature available.

The features available

FeatureWhat it distinguishesCaveat
Height above groundEverything from everything. The primary feature after normalisation.Only as good as the ground surface it is measured from.
Local roughnessVegetation (rough, scattered in depth) from roofs and ground (smooth, planar).Fails on rough roofs, flat-topped hedges and complex roof furniture.
PlanarityBuildings, which are made of flat pieces meeting at sharp angles.Needs enough points on the plane. Small or complex roofs are marginal.
Return structureVegetation very strongly. A pulse that produced later returns passed through something.Absent from photogrammetry, and frequently zeroed in exported LiDAR.
Connected component sizeReal objects from clusters of noise; buildings from isolated clutter.Expensive to compute on large clouds.
Colour (RGB)Vegetation, which is measurably greener than almost everything else.Only present if imagery was draped. Shadowed foliage loses its green bias, and a colour cast can turn a whole survey green.
IntensitySometimes water, sometimes road surfaces.Uncalibrated and not comparable between flight lines. Weak evidence.

Why return structure matters so much

Of everything in that table, return information is the most powerful single feature — and it is worth understanding why, because its absence changes the whole problem.

If a pulse produced three returns and this point is the first, then something was behind it: the beam passed through. Solid surfaces do not let beams through. That one fact separates canopy from roof almost for free, and it is why classifying airborne LiDAR over woodland is tractable at all.

A photogrammetric point cloudhas none of it. Every point is reconstructed from images, so every point is a first and only return, and the strongest discriminator is simply gone. Such classifiers must lean much harder on geometry and colour — which is exactly the trade-off theclassifier on this site is built around, since it targets that case.

How each class is actually found

Ground — a surface built from the lowest credible points, with each point tested against it. The persistent difficulty is that the settings which preserve a cliff also preserve a warehouse roof.

Vegetation — rough, three-dimensional and distributed in depth rather than concentrated on a plane. Where returns exist, multi-return pulses are strong evidence. Where colour exists, a green bias is strong evidence. Height above ground then splits it into low, medium and high (classes 3, 4 and 5), by thresholds that are pure convention rather than physics.

Buildings — planar patches, above ground, large enough to be structural, usually with sharp boundaries. The hard parts are distinguishing a flat roof from flat terrain when the roof is large, and deciding what to do with the things attached to roofs: plant, ducting, skylights, aerials.

Noise — points with no plausible neighbours. Low noise (class 7) sits below the real surface, from multipath and sensor artefacts; high noise (class 18) sits above everything real, typically birds, insects, haze or cloud.

Water — often not classified automatically at all. Water absorbs most of the beam, so it appears as an absence rather than a surface, and producers frequently delineate it from imagery or existing vector data instead of from the points.

Why it is never certain

It is worth being blunt about this, because vendor material rarely is.

Every production ground filter is a heuristic. It encodes a reasonable belief about what landscapes look like, and it is wrong wherever a landscape disagrees. There is no ground truth inside the file to appeal to, so an algorithm cannot know it has erred — it will classify a warehouse roof as terrain with exactly the same silence as it classifies a car park correctly.

The cases that reliably cause trouble:

  • Large flat roofs. At fifty metres across, a roof looks like terrain by every local measure.
  • Dense low vegetation. Scrub and long grass return echoes that merge with the ground, leaving the surface systematically high.
  • Steep and broken terrain. Tolerances loose enough for a cliff are loose enough for a building.
  • Bridges and elevated structures. Genuinely ambiguous; different specifications give opposite answers.
  • Sparse ground under canopy. Few points, so the surface is largely interpolated and individual errors carry far.
  • Everything else above ground. Vehicles, fences, poles, machinery. A well-built classifier leaves these unclassified rather than forcing them into a class they do not belong to.

Machine-learning classifiers have become common and shift the failure modes rather than removing them: they generalise well to data resembling their training set and can fail in less predictable ways on data that does not. They are still producing an estimate, and it still needs checking.

Checking a classification

Since the output carries no confidence value, quality assurance is visual and statistical. A practical routine:

  1. Open the file and colour by classification. Each class gets its own colour, so the structure of the decision is immediately visible.
  2. Look from a low angle. This matters more than anything else here. From directly above, a roof classified as ground looks completely normal. In profile it is obvious.
  3. Go to the hard cases deliberately: the largest flat roofs, the densest woodland, the steepest slope, any bridge, and the water margins.
  4. Check the class histogram. Thestatistics panel gives an exact count per class. Compare the proportions against what the site actually looks like — a wooded catchment reporting 90% ground has classified canopy as earth.
  5. Check for empty classes. A file over a city with no class 6 was never building-classified, whatever else it contains.

Classifying a file here

Run automatic classification in your browser. Ground is written as class 2, vegetation as 3, 4 and 5 by height above ground, and buildings as 6. The file never leaves your machine.

What it does, specifically, and what it does not:

  • Ground extraction uses a Simple Morphological Filter(Pingel, Clarke & McBride, 2013), which tests the increment each window step removes rather than an absolute height threshold — chosen because that is what separates a wide roof from steep ground.
  • It is built for photogrammetric clouds with no return information, and uses RGB colour where the cloud carries it.
  • Anything above ground that is neither roof nor foliage — vehicles, fences, poles, machinery — is leftunclassified on purpose, rather than guessed at.
  • It does not classify water, bridges, wires or any of the higher ASPRS classes.

Then check the result, using the routine above. An automatic classification is a strong first pass, and treating it as a finished answer is how a warehouse roof ends up in a flood model.

For filtering by the classes once they exist, seeremoving vegetation from a point cloud.

Frequently asked questions

What is LiDAR classification?
Assigning each point a label describing what it represents — ground, vegetation, building, water, noise — stored as a number in the point record using the ASPRS class codes. It is a judgement added to the data after capture, not something the sensor measures, and it is what makes a point cloud usable for anything beyond visualisation.
How does software decide a point is ground?
By looking at its neighbours, never at the point alone. The prevailing assumption is that terrain varies smoothly while objects introduce abrupt steps, so algorithms build a candidate ground surface from the lowest points in an area and test whether each point sits close enough to it. A point and a coordinate contain no information about what was hit; only the surrounding context does.
Why is ground classified before anything else?
Because almost every other class is defined relative to the ground. 'Building' means a planar surface some height above the terrain, and 'high vegetation' means foliage above a height threshold — both require knowing where the ground is at that spot. Once a ground surface exists, every point can be given a height above ground, and the remaining classes become far easier to separate.
Is automatic classification accurate?
It is generally good and never certain. Every production algorithm is a heuristic encoding assumptions about how landscapes look, so results are reliable on typical terrain and degrade on the cases that break those assumptions — large flat roofs, dense low vegetation, steep ground, bridges. Automatic classification should be treated as a strong first pass that needs checking, not as a finished answer.
What features does a classifier use?
Height above the local ground surface, local roughness or planarity, the size and shape of connected groups of points, return structure where available, and colour where present. Return information is the most useful single feature, because a point from a pulse that produced later returns had something behind it and is very unlikely to be solid ground or a roof.
Why is classifying photogrammetric point clouds harder?
Because there is no return information. A photogrammetric cloud is reconstructed from images, so every point is a first and only return, and the strongest discriminator between canopy and solid surface is missing. Classifiers for this data lean much harder on geometry and on RGB colour, which photogrammetry does provide well.
Can I classify a point cloud in the browser?
Yes. The classifier on this site labels ground, low, medium and high vegetation, and buildings in a LAS or LAZ file, running entirely on your own machine with no upload. It was built for photogrammetric clouds with no return information, and it leaves anything it cannot identify confidently as unclassified rather than guessing.