Scene Flow Estimation in 3D Motion
Give every 3D point its own velocity arrow. Scene flow lifts frame-to-frame matching plus depth change into true 3D motion.
Why Does This Exist?
Two-frame 2D flow cannot warn which points approach. Scene flow exists for that 3D answer in driving and manipulation: it outputs per-point so planners brake for approaching bumpers rather than large but distant trucks. The overview is optical flow and scene flow; 2D baselines are RAFT.
This page covers the 3D lift across stereo, RGB-D, and lidar variants.
Think of It Like This
Tagging birds between two photos
Two flock photos a second apart show shifted dots. Match each bird, then note which ones also grew larger: those approach. Flat shift plus size change gives the full flight arrow.
Matches are flow and size change is depth rate. The analogy stops at occlusions: birds rarely hide while bumpers occlude constantly, so half the arrows need outlier flags.
How It Actually Works
Stereo scene flow jointly solves optical flow plus disparity and disparity change , converting to 3D through and differencing across frames. RGB-D variants read directly and solve a rigid-plus-nonrigid warp with point-to-plane residuals. Lidar scene flow registers clouds with coarse matches plus refined flow, supervised by chamfer distance plus cycle consistency when labels are missing. Outlier rates near percent on occlusions are standard and must be masked.
Worked numbers
Stereo with px, m, m, flow px, disparity change from to px gives m. The 3D vector is m per frame. 3D endpoint error against truth is m.
Code
def flow_3d_error(pred: tuple[float, float, float], gt: tuple[float, float, float]) -> float: return sum((p - g) ** 2 for p, g in zip(pred, gt)) ** 0.5 # meters
print(round(flow_3d_error((0.05, 0.0, -0.3), (0.06, 0.0, -0.28)), 3)) # -> 0.022Watch Out For
Averaging flow across motion boundaries
Wheels, bumpers, and backgrounds share pixels at edges; naive smoothing blends their vectors. The symptom is smeared arrows that miss both motions. Edge-aware regularization or motion segmentation must precede smoothing.
The Quick Version
- Scene flow outputs a 3D velocity per point, not a 2D shift.
- Stereo, RGB-D, and lidar variants differ only in the depth source.
- Joint flow plus disparity change gives metric 3D directly.
- Reference case is m lateral with m approach at m.
- 3D endpoint error in meters is the score to report.
- Occlusions near percent must be masked, not averaged.