← Back to projects
LiDAR scene flow · Direct point matching

DirectFlowMatch

A deterministic, geometry-aware method that estimates per-point motion from consecutive LiDAR scans without segmentation or clustering.

Sequential LiDARPer-point scene flowGeometry-aware matchingPublic nuScenes validation

Synthetic scenario · Urban junction

From two scans to one complete point-level match.

Begin with two scans, inspect the initial point matching, then advance the complete source cloud along the final motion field.

Active view 00 · Input pair Two consecutive scans from a stationary sensor.
Preparing the interactive DFM trace…

Two fingers to rotate · pinch to zoom

Source Destination Flow arrows

Synthetic scenario, generated for this site. The method itself was evaluated on public nuScenes data.

01 / At a glance

Geometry-derived motion, point by point.

DirectFlowMatch uses the acquisition geometry of consecutive LiDAR scans to organize the search for correspondences, reject implausible candidates, and recover a velocity for each matched point.

InputConsecutive LiDAR scans
OutputPer-point scene flow / velocity
MethodDeterministic direct matching
ValidationPublic nuScenes data
02 / Problem

LiDAR provides geometry, not native Doppler.

A direct time-of-flight LiDAR scan captures the shape of a scene but does not provide the native Doppler measurement. Motion therefore has to be recovered across frames while accounting for sparsity, partial observations, and acquisition geometry.

01 / Geometry

Preserve point-level structure

Start from consecutive point clouds without collapsing the scene into objects.

02 / Search

Constrain correspondence

Use angular neighborhoods and physically meaningful motion bounds.

03 / Output

Recover velocity

Convert matched displacements into per-point motion estimates.

03 / What I tried first

Three weeks establishing that clustering could not carry the ground truth.

The standard route to scene flow runs through segmentation and clustering: group the cloud into objects, match clusters between frames, read motion off the correspondence. I tried to make that work before building anything new.

I evaluated both DBSCAN and HDBSCAN and tuned each across its hyperparameter space — epsilon and minimum points for DBSCAN, minimum cluster size and minimum samples for HDBSCAN. Every configuration traded one failure mode for another. Clusters fragmented between consecutive frames, merged, or dropped below the density threshold and vanished entirely. Frame-to-frame correspondences built on top of that were not stable enough to derive velocity labels from.

The open question was whether this was a tuning problem or a data problem. To settle it, I ran the same clustering configurations against nuScenes and Waymo, whose reference LiDARs are considerably denser. The methods behaved as published there. On sparser, less uniformly sampled data they did not.

04 / Method

A five-step geometry and consistency pipeline.

01

Prepare consecutive scans

Align consecutive point clouds into a common geometric frame, compensating for ego motion, without collapsing the scene into objects or voxel occupancy.

02

Build local correspondences

Use the acquisition geometry to restrict correspondence search to angularly local candidates, bounded by physically plausible vehicle motion over the frame interval.

03

Check both directions

Match forward and reverse, then compare. Correspondences that disagree between the two directions are locally ambiguous and are treated as such rather than accepted.

04

Protect coherent motion

Where several source points claim the same target, resolve by matching cost. Points with consistent supporting evidence for motion are prevented from collapsing toward a static-scene explanation.

05

Recover per-point flow

Select the stable correspondence for each point and divide displacement by the frame interval to recover per-point velocity.

05 / Validation

Evaluated on public nuScenes data.

The method was evaluated on the public nuScenes dataset; the reported figures come from those runs. The scenario below is synthetic — a quieter junction, generated for this site — so the step from the initial correspondence field to the complete DirectFlowMatch result stays easy to inspect without redistributing dataset geometry.

Synthetic scenario · Quiet T-junction

Inspect the initial and refined point-level motion.

Compare the input scans, the initial matching field, and the complete DirectFlowMatch result. Rotate, zoom, and change point size while reviewing the scene in XYZ.

Active view 00 · Input pair Two consecutive scans from a stationary sensor.
Preparing the interactive DFM trace…

Two fingers to rotate · pinch to zoom

Source Destination Flow arrows

Synthetic scenario, generated for this site. The method itself was evaluated on public nuScenes data.

06 / Origin

Origin: automotive dToF LiDAR.

The algorithm was originally developed against automotive direct time-of-flight LiDAR data during my thesis, then re-evaluated on public nuScenes data for the results shown above.

Three stages of scene-flow estimation between consecutive LiDAR scans: the two input frames overlaid, the recovered flow, and the flow separated into static and dynamic points with two magnified insets showing per-point motion vectors.
Direct point correspondence Input frames, recovered flow, and the static/dynamic split.
07 / Relationship

A LiDAR reference for motion-aware radar work.

The method provides geometry-derived motion for radar supervision and validation, and for downstream tasks that require motion estimates from consecutive dToF LiDAR scans.