QGIS 4.0 includes a new processing algorithm for comparing two point clouds directly: M3C2 (Multiscale Model-to-Model Cloud Comparison). This work was funded by Danish Climate Data (Klimadatastyrelsen), Geological Survey of Denmark and Greenland (GEUS), and Septima, who needed a reliable way to detect erosion and landslide activity from repeat LiDAR surveys. Development was carried out by Lutra Consulting in collaboration with Hobu.

The problem with raster subtraction

The standard approach to change detection from two point clouds is to rasterize both into DEMs, subtract one from the other, and read off the vertical differences. It works, but it has a few real limitations.

Gridding loses information. Converting a point cloud to a raster means interpolating between measurements. On rough or complex surfaces that smoothing can obscure genuine features or introduce artefacts. The original survey precision gets diluted the moment you commit it to a pixel grid.

It only measures vertical change. DEM subtraction gives you a Z difference. That is fine for flat terrain, but a cliff face retreating horizontally, a riverbank slumping diagonally, or a dune migrating laterally; none of these are captured accurately by a vertical-only measurement.

There is no statistical confidence. A raw DEM difference gives you a number but not a verdict. Without a principled uncertainty estimate, you are left applying an arbitrary threshold and hoping it separates real change from noise.

What M3C2 does differently

M3C2 was published by Lague, Brodu, and Leroux (2013) and has been the standard in geoscience change detection for over a decade. Until now, running it required tools. In QGIS 4.0 it is a standard processing algorithm, no intermediate conversion, no external tools.

The algorithm works directly on the raw point clouds. Rather than measuring vertical change, it measures displacement along the local surface normal; the direction the surface is actually facing at each point. This makes it accurate for vertical surfaces, slopes, and any geometry where change is not happening straight up and down.

Principles of M3C2 (source: Bridge Deformation Monitoring Combining 3D Laser Scanningwith Multi-Scale Algorithms (https://www.researchgate.net/publication/392950108_Bridge_Deformation_Monitoring_Combining_3D_Laser_Scanning_with_Multi-Scale_Algorithms))

Two parameters control the spatial scales:

  • Normal scale (D): the neighbourhood radius used to estimate the local surface orientation. A larger D gives a smoother normal, more robust to noise.
  • Projection scale (d): the cylinder radius used to collect points along the normal from each cloud and compute their mean distance. This is the scale at which change is measured.

The key output alongside the change value is the Level of Detection (LOD), a 95% confidence interval that accounts for surface roughness, local point density in each cloud, and registration error between the two surveys. Any measured change smaller than its LOD is flagged as statistically insignificant. The result is not just a number but a defensible conclusion about whether change actually occurred.

Using it in QGIS

The algorithm is available in the Processing Toolbox under Point Cloud Data Management → Compare Point Clouds. It takes two point cloud layers and the D and d parameters, and outputs a point cloud with the change magnitude and LOD per point, ready to style and analyse like any other layer.

Point cloud comparison tool in QGIS processing

To better understand the algorithm, here are the input, output and parameters:

Inputs

  • Two 3D point clouds: A reference cloud (the baseline) and a comparison cloud (the later dataset used to detect changes).

Parameters

These are the settings the user must define before running the algorithm:

  • Normal estimation scale: The user-defined search radius used to calculate the orientation (surface normals) of the terrain.
  • Subsampling cell size: The spacing constraint used during Poisson sampling to thin out the original cloud into a manageable, evenly spaced subset. If set to 0, the whole point cloud will be used and can result in long calculation time.
  • Projection cylinder radius: (Implied by the math) The width of the imaginary cylinder projected along the normal vector to capture and measure points from both clouds. If the radius is set too large, it can lead to long calculation time.

Outputs

The result is a filtered subset of the original point cloud (reduced via Poisson sampling) featuring seven new metadata attributes calculated for every point:

Distance & change

  • m3c2_distance: The calculated distance between the two clouds along the surface normal. This value is signed (positive or negative) to show whether the surface moved in (erosion/subsidence) or out (deposition/growth).

Quality & noise control

  • m3c2_uncertainty: The margin of error for the distance calculation at that specific point.
  • m3c2_significant: A binary flag (yes/no) indicating whether the detected change is statistically real or just measurement noise.
  • m3c2_std_dev1 / m3c2_std_dev2: The local roughness or standard deviation of the points inside the cylinder for Cloud 1 and Cloud 2. High values mean rough or noisy surfaces.

Point density

  • m3c2_count1 / m3c2_count2: The actual number of raw points captured inside the projection cylinder for each cloud, indicating data density.

M3C2 output on a Danish coastal survey — red = erosion, blue = accretion, ±1 m scale]

You can test this tool, you can use OpenTopography data from pre and post April 2016 earthquake scans in Kumamoto, Japan: https://portal.opentopography.org/dataSearch?search=Kumamoto.

The data were collected shortly before and after the earthquake and by comparing the point clouds, you can see the extent of the damage to the properties and surface deformation:

Read more about our point cloud abilities here.

You might also want to read these

Let's make the QGIS work for you

Lutra Consulting is a QGIS-focused expert provider of geospatial software development, consulting, training, and support services.

Get in touch
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Cookie Policy for more information. Deny cookies here.