3D visionTroubleshooting

Rolling shutter blur limits depth accuracy on fast 3D scans

How fast can a rolling-shutter depth camera scan before shear and blur ruin accuracy? The half-pixel rule, the exposure limit and the tests to run.

LumaSpec Vision12 min read Share on LinkedIn

On this page 8 sections
  1. 01Why does depth accuracy collapse when the part moves?
  2. 02How fast can the part move before rolling shutter ruins the depth?
  3. 03How short must the exposure be to stop motion blur?
  4. 04How do you measure shear and blur on your own rig?
  5. 05Which fix buys the most scan speed first?
  6. 06When should you switch to a different depth sensor class?
  7. 07How do you keep depth accuracy on every future scan?
  8. 08Questions

Depth noise that grows with conveyor speed, doubled edges in the point cloud, surfaces that tear into holes — none of these are calibration faults; they are motion faults. A rolling-shutter depth sensor exposes its rows one after another, so a moving part is never in one place for a whole frame, and the stereo matching behind the depth image quietly falls apart. This guide gives you the two numbers that decide whether a rolling-shutter rig can scan at speed — the half-pixel-per-frame speed budget and the one-pixel exposure limit — the bench tests that measure both on your parts, the fixes ranked by the speed each one buys, and the point at which a different sensor class is the honest answer.

Why does depth accuracy collapse when the part moves?

A rolling-shutter depth sensor reads its rows one after another, so a part that moves during the frame is captured at a different position by every row; the depth engine then matches pixels that were never seen at the same instant, and accuracy collapses.

Three failure layers stack up, and they strike in this order:

  1. Row shear. At 30 fps the readout sweeps the frame in one frame period, 33.3 ms, so the bottom row sees the part 33.3 ms after the top row. A part moving 30 mm/s shears 1.0 mm between the first and last row — 5 px at a 0.20 mm pixel scale — and the matcher tries to fuse five different positions of the same part into one depth value.
  2. Exposure smear. Auto-exposure left on its own picks tens of milliseconds indoors. At 30 mm/s, a 20 ms exposure smears every edge 0.60 mm — 3 px — in both cameras of the stereo pair at once.
  3. A frame rate that never arrived. An exposure longer than the frame period caps the camera below its nominal fps, which shrinks every budget computed below by the same factor.

The symptoms are specific: flat, stationary surfaces measure clean while every moving edge turns noisy, leading edges dissolve into depth holes, and the confidence flags drop exactly where the part moved — the 3D camera confidence image decoder shows how to read those flags straight off the sensor. For the shutter choice behind all of this, see global vs rolling shutter sensors for moving targets, and for the exposure side, exposure time vs shutter speed for moving-part inspection.

How fast can the part move before rolling shutter ruins the depth?

Keep the displacement between the first and last row of one frame under about half a pixel; with a 0.20 mm pixel scale at 30 fps that caps relative speed at about 3 mm/s, and the same camera at 90 fps reaches about 9 mm/s.

Rolling shutter does not blur first — it shears. Every row is sharp, but each row is a snapshot taken 69 µs after the previous one, so the geometry the matcher assumes (both views at the same instant) only holds while the part barely moves during the sweep. Below half a pixel of travel per frame the shear hides inside the matching window; above it, disparity error climbs at roughly one pixel per extra 33.3 ms of travel.

p = FOV / pixels across the field v_max = 0.5 × p × fps t_exp_max = p / v

Worked example — a depth camera covering a 170 mm field with 848 pixels at 30 fps:

  • Pixel scale: p = 170 mm / 848 px = 0.20 mm/px.
  • Sweep: 1/30 s = 33.3 ms, spread over 480 rows = 69 µs per row.
  • Half-pixel budget: 0.5 × 0.20 mm = 0.10 mm per frame.
  • Speed limit: 0.10 mm / 33.3 ms = 3.0 mm/s.
  • Same camera at 90 fps: sweep 1/90 s = 11.1 ms, so 0.10 mm / 11.1 ms = 9.0 mm/s.

Pixel scale moves the limit first — tighten the field to 85 mm and the budget halves to 1.5 mm/s at the same fps — and frame rate moves it second, linearly. Both follow from working distance and resolution, so recompute p after every camera move: the 3D camera working distance guide covers the geometry, and stereo disparity scale and calibration ties pixel scale to depth units. The 3 mm/s belongs to this example's pixels; rescale it with your own p and fps, then let the ruler test below hand you the real number for your matcher.

Camera resolution for the smallest feature
Units
Pixels needed
–
Sensor size
– MP
Smallest sensor that fits
–
Pixel on the part
– mm
Pixels across the feature, that sensor
–

Pixels needed = field / feature × pixels per feature on each axis (field incl. margin). The lens must resolve the pixels too: Nyquist = 1000 / (2 × pixel µm) lp/mm.

Find cameras with enough pixels Open the full calculator

How short must the exposure be to stop motion blur?

Set a manual exposure no longer than one pixel of travel: at a 0.20 mm pixel scale and 30 mm/s that is 6.7 ms, so 6 ms leaves margin, while auto-exposure left alone picks far longer and smears every edge in both views.

Blur in pixels is speed times exposure divided by pixel scale: blur_px = v × t_exp / p. Requiring blur ≤ 1 px gives t_exp_max = p / v. At 30 mm/s and 0.20 mm/px that is 0.20 mm / 30 mm/s = 6.7 ms. Lock 6 ms and the worst smear is 30 mm/s × 6 ms = 0.18 mm = 0.9 px in each camera, so the stereo match survives; the 6 ms also sits inside the 11.1 ms period at 90 fps with 5.1 ms to spare, so a later fps raise does not collide with it.

Three settings make a short exposure usable:

How do you measure shear and blur on your own rig?

Scan a ruler or a calibrated target at production speed and count pixels: skew above about 0.5 px between the first and last row of one frame, or an edge smeared wider than one pixel, says the scan is too fast for that set-up.

Run the three tests in this order:

  1. Ruler shear test. Fix a 1 mm-tick ruler in the field at working distance, run the part or the camera at production speed, and grab single frames. Find the same tick in the top and bottom row of one frame; that shift in pixels is your shear. At the worked example's budget the tick travels 0.10 mm — 0.5 px — per frame.
  2. Stop test. Freeze the motion axis and capture 20 frames. Depth noise that collapses the moment the part stops convicts motion; noise that persists with everything still points at calibration and lighting instead.
  3. Edge-width audit. On the raw IR frame, an edge that should cross 2 px but crosses 3 px carries 1 px of smear. At a known exposure that converts straight back to speed: 1 px × 0.20 mm/px / 6 ms ≈ 33 mm/s — you were sitting at the one-pixel limit, so any faster shows up as a wider edge.

A scan that passes the ruler test at production speed holds its depth accuracy; one that fails by more than a pixel will not be rescued in post-processing.

Which fix buys the most scan speed first?

Rank the fixes by the speed they add: lock the exposure first (it costs nothing), raise the frame rate next for 3×, crop the row count for 2× per halving, then stop-and-stare, and change the sensor class only when the arithmetic still falls short.

  1. Lock the exposure. Same camera, same fps, but edges stop smearing during speed changes and start-stop moves — which is where most scans actually fail.
  2. Raise the frame rate — 3×. Going from 30 to 90 fps cuts the sweep from 33.3 to 11.1 ms and lifts the budget from 3.0 to 9.0 mm/s. Check that the locked exposure still fits the shorter period; when it does not, the camera drops fps instead, as laid out in depth camera frame rate drops: exposure settings cap the FPS.
  3. Crop the rows — 2× per halving. Cutting 480 rows to 240 halves the sweep and doubles the budget to 6.0 mm/s at the same fps, provided the row clock rather than a fixed frame timer sets the sweep; keep only the rows the part occupies. The 2D vs 3D camera ROI guide walks the crop, and configuring a one-inch Z-layer ROI on a depth camera shows one worked end to end.
  4. Stop-and-stare — the budget resets to zero. Move, settle about 30 ms, capture one 33.3 ms frame, move on. Nothing moves during capture, so shear and blur both vanish; you pay the cycle time: roughly move time + 64 ms per slice.
  5. Change the sensor class. When fps, rows and exposure are all maxed and the ruler still fails, the pixel-scale arithmetic is the limit — next section.

When should you switch to a different depth sensor class?

Switch when the speed you need is more than about ten times the rolling-shutter budget, when parts never stop, or when the depth must hold measurement grade on moving surfaces — projected structured light, laser profilers and line-scan 2.5D systems are built for that duty.

The 10× line is arithmetic, not folklore: a camera that freezes whole frames with the locked 6 ms exposure runs 0.20 mm / 6 ms ≈ 33 mm/s at the same pixel scale — about ten times the 3.0 mm/s rolling-shutter budget at 30 fps — and the shear is gone entirely, because both views are simultaneous.

Sensor class How it treats motion Budget at 0.20 mm/px Choose it when
Rolling-shutter stereo, 30 fps shears across the 33.3 ms sweep ~3 mm/s static or hand-fed parts
Rolling-shutter stereo, 90 fps, locked exposure sweep cut to 11.1 ms ~9 mm/s slow conveyors, hand scanning
Whole-frame stereo, 6 ms locked exposure blur held at ≤ 1 px ~33 mm/s continuous conveyor scanning
Projected structured light coded pattern burst freezes the frame still for the burst length scan-grade surface detail
Laser profiler one sharp profile per exposure profile pitch × line rate fast profiles along a line
Line-scan 2.5D per-line exposure, encoder-synced set by the line rate continuous web and conveyor

A ToF camera sidesteps row shear by integrating the whole scene per frame and pays an exposure-versus-frame-rate trade instead — MV-DT01WMU is that class, with the trade-off laid out here.

3D sensorsHikrobot MV-DT01WMU ToF sensing cameraMV-DT01WMU
Type
Depth / ToF camera
Price on requestView and quote

Projected structured light freezes a moving part inside a coded pattern burst, which makes it the scan-grade answer to motion:

3D sensorsHikrobot MV-DPS200P-02 Projected structured-light 3D cameraMV-DPS200P-02
Type
Stereo / structured light
$8,829.00 · quotedView and quote

A laser profiler reads each profile from its projected laser line in one short exposure, so profiles stay sharp while the part advances beneath it:

3D sensorsHikrobot MV-DP4180-03P 3D Laser Profile SensorMV-DP4180-03P
Type
Laser profiler
$12,389.00 · quotedView and quote

Continuous webs and endless conveyors belong to encoder-synced line-scan 2.5D systems; MV-HLVS-16K100-L60 prints a 16K resolution, a 120 kHz sampling rate and a 600 mm emitting area for exactly that duty.

3D sensorsHikrobot MV-HLVS-16K100-L60 Line-scan 2.5D, 16K resolution, Sampling rate 120 kHz, Emitting area length 600 mmMV-HLVS-16K100-L60
Type
2.5D inspection
Price on requestView and quote

The 3D sensor category holds every class in the table, and the camera finder filters them by type. For the wider build decision — 2D versus 3D, one camera or several, cell or line — see 2D or 3D camera for conveyor pick and place, then configure the winning class in the system configurator.

How do you keep depth accuracy on every future scan?

Lock the parameters auto-exposure would otherwise move — exposure first, then gain — recompute the pixel scale after every working-distance or resolution change, and repeat the ruler test at each new part speed before the line sees production parts.

At set-up:

  • Compute and record p = FOV / pixels at every working distance, then v_max = 0.5 × p × fps and t_exp_max = p / v_target next to it. All three travel with pixel scale, so a camera re-mount invalidates every old number.
  • Lock the exposure at or below t_exp_max and cap auto-exposure, which otherwise drifts long under dim light and undoes the budget quietly.
  • Read back the achieved fps after locking; exposure is the usual hidden cap.
  • Parts that run at different speeds get their own capture parameter set, switched per part — the per-part capture parameter switch shows the pattern.

At every changeover:

  • Ruler shear test at production speed; pass mark 0.5 px of skew.
  • Confidence flags watched on moving edges through the first production run — flags that drop only while parts move mean the budget is being exceeded again.

When the ruler still fails:

  • fps, rows and exposure maxed and shear above 0.5 px means the pixel-scale arithmetic, not the settings, is the limit; the sensor-class table above is the fix, not more tuning.

Everything we keep current on depth capture — flash sync, gain tuning, working distance — lives on the 3D topic page. If your line needs more than the rolling-shutter budget at scan grade, send the conveyor speed and your pixel scale through the quote request and we will match the sensor class to the arithmetic above.

Questions

Does the speed limit change when the depth resolution goes up?

Yes, and it drops. Pixel scale is field of view divided by pixels across, so going from 848 to 1280 pixels across the same 170 mm view moves the scale from 0.20 to 0.13 mm per pixel, and the half-pixel budget at 30 fps falls from 3.0 to 2.0 mm/s. Tighter pixels buy depth detail but spend scan speed — budget both before changing resolution.

Which scan direction is easiest on a rolling-shutter depth camera?

Motion parallel to the sensor rows. Horizontal movement smears a row only during that row's own exposure — about 69 µs in the worked example — while the same speed across the rows displaces successive rows over the full 33.3 ms frame period. Turning the camera 90 degrees, or feeding parts along the row direction, is the easiest accuracy gain available on an existing rig.

Can a strobe replace a short exposure to freeze the scan?

Yes, on cameras whose triggering supports it. A strobe fired inside the exposure lights the part for tens of microseconds, so motion smear comes from the flash width rather than the sensor exposure — effectively a global shutter made of light. You still need the flash timed to the frame, which is what external flash sync sets up.

How does working distance change the scan speed budget?

Linearly, through pixel scale. Doubling the working distance roughly doubles the field of view, so pixel scale goes from 0.20 to 0.40 mm per pixel and the half-pixel budget at 30 fps doubles from 3.0 to 6.0 mm/s. Pull the camera closer for depth detail and you spend scan speed in the same proportion.

Do ToF and structured-light depth cameras shear the same way?

No. A rolling-shutter stereo pair shears row by row; ToF integrates the whole scene per frame, projected structured light reads full frames of its projected pattern, and a laser profiler captures one line per exposure. Each class keeps its own motion limit instead — integration time, pattern-burst length, line rate — so the one-pixel exposure arithmetic is still the number to run.