3D visionExplainer

Vibration correction in 3D height scans: a laser profiler guide

Why conveyor vibration shows up as periodic ripple in a laser profiler height map, how to measure it, and the filters that remove it before measurement.

LumaSpec Vision11 min read Share on LinkedIn

On this page 12 sections
  1. 01What vibration looks like in a height map
  2. 02Three numbers that describe the ripple
  3. 03Worked example: a 300 mm/s belt shaking at 25 Hz
  4. 04Find the source before you filter
  5. 05Correction 1: subtract the wave measured on a reference region
  6. 06Correction 2: notch-filter the profile stream
  7. 07Correction 3: take the datum from the same profile
  8. 08Which correction to use
  9. 09When filtering is the wrong fix
  10. 10Checks before you release the correction
  11. 11Where to go next
  12. 12Questions

A flat part comes off the belt and its measured height swings by tenths of a millimeter, scan after scan: that is conveyor vibration reaching the sensor. A laser profiler does not blur the way a 2D camera does. It records the oscillation itself, as a periodic ripple in the height map whose wavelength you can compute from belt speed and shake frequency. Because the corruption arrives as height data, you can measure it, remove it, and prove the removal. This guide gives the three numbers that describe the ripple, a worked example with the arithmetic shown, the three corrections that hold up in production, and the cases where the mechanics, not the software, need attention first.

What vibration looks like in a height map

The belt lifts and drops the part between profiles. A flat plate scans as a wavy surface; a cylindrical part carries a superimposed wave along the travel direction. Across the laser line the whole profile shifts together, so the shape inside one cross-section stays true and the error builds from profile to profile. That is exactly why the ripple is separable. If you want the capture chain fresh in your mind, the walkthrough on how to create a 2D image from laser triangulation shows how one line becomes a height profile.

Two signatures separate vibration from real form error. The ripple is periodic, at the frequency of whatever is shaking. And its wavelength scales with belt speed, because the part samples the same temporal wave at a different rate. A dished part keeps its wavelength when you slow the belt; a shaking belt does not.

Three numbers that describe the ripple

Measure or estimate three inputs: belt speed v in mm/s, vibration frequency f in Hz, and peak amplitude A in mm. From those:

λ = v / f n = R / f σ = A / √2

λ is the spatial period of the ripple along the travel direction, in millimeters. n is the number of profiles per vibration period at line rate R: it must exceed 2 or the ripple aliases, and n of 10 or more leaves a filter room to work. σ converts a sinusoid into the repeatability figure you report — a ±0.10 mm wave is 0.07 mm of one-sigma noise. The trigger side of this, encoder scaling and the rates a camera can sustain, is covered in how to set the line rate of a line scan camera.

Conveyor profilers fire on an encoder, so samples sit at fixed distances along the belt and the ripple lands at a fixed spatial period. Full-width web systems obey the same arithmetic at much higher rates. The MV-HLVS-16K100-L60 line-scan 2.5D system samples at 120 kHz. At that rate a 25 Hz ripple spans 4,800 samples per period.

A line scan camera building an image line by line The camera images one thin line of the moving web per exposure, lit by a line light. An encoder on the conveyor triggers each line so the pixels stay square at any speed.one line per exposureLine scanline lightweb speed vencoderline rate = v / object pixelexposure < 1 / line rate
A line scan camera building an image line by line. The camera images one thin line of the moving web per exposure, lit by a line light. An encoder on the conveyor triggers each line so the pixels stay square at any speed.

Worked example: a 300 mm/s belt shaking at 25 Hz

Take a belt at v = 300 mm/s, a drive shaking it at f = 25 Hz with peak amplitude A = ±0.10 mm, and a profiler triggered at R = 2,000 profiles per second. These three inputs are the example's assumptions; everything below follows from them by arithmetic.

  • Ripple wavelength: λ = v / f = 300 / 25 = 12 mm along the belt.
  • Sampling margin: n = R / f = 2,000 / 25 = 80 profiles per period, forty times the two-profile minimum.
  • Along-track spacing: 300 mm/s ÷ 2,000 profiles/s = 0.15 mm per profile, so the 12 mm wave spans 80 profiles — the two computations agree.
  • Repeatability damage: σ = 0.10 / √2 = 0.07 mm, with an apparent height swing of 0.20 mm peak to peak. Against a ±0.05 mm height tolerance — a 0.10 mm band — a good part sweeps twice the whole band.
  • Correction target: fit the wave to within 10% in amplitude and phase and the residual is about 0.01 mm. Thirty gauge block readings then spread roughly 0.02–0.03 mm once sensor noise joins in, well inside the tolerance.

A 50% fit error leaves 0.05 mm of ripple, half the band. The payoff scales directly with fit quality, which is why finding the true frequency and a clean reference region matters more than filter order. Check the trigger budget for your own speed and resolution with the line-rate calculator:

Line-scan camera line rate
Units
Pixel on the part
– mm
Line rate needed
– kHz
Longest exposure
– µs
Data rate
– MB/s
Lines per metre
–
Encoder setting
–

Square pixels: line rate = speed / pixel on the part; the exposure must end within one line period. Encoder: lines per pulse = (π × roller diameter / pulses per revolution) / pixel on the part.

Find line scan cameras Open the full calculator

Find the source before you filter

Candidate frequencies are quick to list. A motor at 1,750 rpm turns at 1,750 / 60 ≈ 29 Hz, close to the example's 25 Hz, which would point at the drive. A worn roller with a 120 mm circumference passing 300 mm/s knocks at 300 / 120 = 2.5 Hz. Gear-mesh and fan-blade rates multiply shaft speed. Read the real frequency from a spectrum of the profile stream instead of guessing; the FAQ below gives the recipe.

Then find where it enters the measurement. Fix a reference block to the machine frame, not to the belt, inside the field of view. If the block's measured height oscillates, the sensor or its bracket is moving; if the block reads steady while bare belt ripples, the transport is the source. The fixes differ: stiffen or isolate the mount on the sensor side; tension the belt, balance the rollers or soft-mount the drive on the transport side. Stand height, clearance and viewing angle are laid out in the 3D camera working distance and positioning guide.

One safety note: follow the laser class rules on the sensor label. Shield the line where people work, never stare into the emitting aperture, and power the sensor down before reworking its mount.

Correction 1: subtract the wave measured on a reference region

Rigid bounce moves every point in the field together, so bare belt beside the part carries the same wave as the part itself. Designate a region of exposed belt in each scan, estimate the wave there — fit amplitude and phase at the known frequency, or simply take the region's mean height per profile as the offset — and subtract it from every profile of that scan. With the example's numbers, a fit good to 10% leaves about 0.01 mm of ripple from the original ±0.10 mm.

This is the standard fix when belt shows around each part and the part is rigid against the wave. It is also the only fix that restores absolute heights above the belt, such as part thickness, because the belt surface itself oscillates. Prove it with a gauge block riding the belt: its apparent height should flatten to the corrected spread. Most profiler suites ship this as a vibration-correction stage with a designated region, so check the sensor's surface-measurement toolset before writing code.

The corrected height maps feed straight into downstream inspection; surface defect detection with a 3D laser line profiler shows that pipeline on the same capture geometry.

Correction 2: notch-filter the profile stream

Pick any position across the line and follow its Z value from profile to profile: that series is sampled at the line rate, so a 25 Hz component sits at 25 Hz in it. A narrow band-stop centered there removes the wave and keeps everything else, including true part height, because a notch does not touch DC the way a high-pass or a long moving average does. Give it ±2 Hz of width so drive drift cannot walk the ripple out of the stop-band, and re-read the spectrum after any belt-speed change: belt-slap components scale with speed, drive components stay put.

Notching earns its keep when no bare-belt region stays visible, or when several discrete frequencies act at once and you notch each line. Filter after line extraction; if the extracted line itself is ragged, fix that first with the checks in laser line extraction noise: get a clean height line. This is not broad smoothing — smoothing raw stereo depth into usable data trades resolution for calm everywhere, while a notch removes one frequency and leaves edges alone.

Correction 3: take the datum from the same profile

The simplest correction costs no code: measure the feature against a datum captured in the same laser profile. Pin height against its own flange, step height across one cross-section, groove depth within one scan line — rigid bounce shifts both surfaces equally, so the difference cancels the oscillation completely, at any amplitude and frequency, as long as the part does not flex between the two surfaces.

Differentials that span distance along the belt do not cancel. The residual ripple between two points Δy apart is approximately 2π · A · Δy / λ. At the example's numbers, A = 0.10 mm and λ = 12 mm, so a 1 mm span still leaves about 0.05 mm — half the tolerance band. Keep the datum in the same profile wherever geometry allows; when it cannot, place the datum as close as the part permits and let correction 1 or 2 remove the rest.

Which correction to use

Situation Correction Result at the example's numbers
Bare belt visible around each part, rigid part Reference-region subtraction Residual ≈ 0.01 mm from ±0.10 mm ripple
No bare belt in view, steady drive frequency Notch filter at f, ±2 Hz wide Removes the 25 Hz line, keeps edges
Feature and datum share one profile Differential measurement Rigid bounce cancels completely
Absolute height above the belt needed Reference-region subtraction Only fix that removes belt-top oscillation
Amplitude above half the tolerance, or a flexing part Fix the mechanics first Then corrections trim what remains

Default order: differential datum where possible, reference subtraction where the belt shows, notch where neither applies.

When filtering is the wrong fix

Three cases call for wrenches before software. Amplitude above half the tolerance: correction residual scales with amplitude, so against the same ±0.05 mm tolerance a ±0.25 mm shake leaves 0.025 mm of residue even at a 10% fit — a quarter of the band gone before your own measurement error adds on. A part that flexes: thin sheet drumming on the belt deforms between feature and datum, and no common-mode subtraction models that shape change, so fixture it or stiffen it. An aliased capture: with n below 2 the information never existed, and nothing downstream recovers it — slow the belt or raise the line rate at the capture stage.

Checks before you release the correction

  • Scan a gauge block of known height riding the belt for 30 consecutive scans and record max minus min. Target: below a quarter of the tolerance band, 0.025 mm against the example's ±0.05 mm.
  • Change belt speed by ±20% and repeat. The corrected spread must not scale with speed; if it does, the notch or the fitted wave has lost the true frequency.
  • Compare a same-profile differential measurement with the corrected absolute height on the same parts. Agreement within the corrected spread confirms both paths; a gap means one still carries ripple.
  • Log the drive frequency monthly. A motor swap, a belt change or a tension adjustment moves f, and the notch follows only if you re-measure.
  • Archive the raw profiles. Every correction here runs downstream of capture, so yesterday's scans can be re-processed with tomorrow's filter.

Where to go next

Pick the sensor for the speed and tolerance you actually run. The 3D sensors category lists the profiler range, the camera finder filters by type and series, and the system configurator walks the whole chain from sensor to mount. If a scan still will not settle after these checks, contact the applications team with your belt speed, tolerance and a raw height map. The rest of the 3D library sits on the 3D topic page.

Questions

How fast must a laser profiler sample to catch conveyor vibration?

At least twice the vibration frequency, and ten times is a comfortable working margin. A 25 Hz shake needs more than 50 profiles per second; a profiler running 2,000 profiles per second captures 80 profiles per period, which leaves filter design room. Below two profiles per period the ripple aliases into a slow wave that resembles real part form, and no filter can restore it.

Does vibration blur the height data inside a single profile?

No. One profile is captured in a single short exposure, typically tens of microseconds. A ±0.10 mm oscillation at 25 Hz moves the part at up to 2π × 25 × 0.10 ≈ 15.7 mm/s, so during a 40 µs exposure it travels about 0.6 µm — far below the profiler height resolution. The error is not blur inside the profile; it is the drift of the whole part between successive profiles along the belt.

Why does a 2D camera suffer more from the same vibration than a profiler?

A 2D system measures grey-level edges, and two things corrupt them: motion blur, and pixel scale that changes with part height. A 0.5 mm bounce on a 200 mm stand shifts scale by roughly 0.25%, so a 20 mm feature drifts about 50 µm — straight into the measurement with no trace in the image. A profiler measures the distance itself, so the same bounce becomes a visible ripple you can subtract.

How do I read the vibration frequency straight from the scan data?

Log the Z values of one position across the line for about two seconds — 4,000 profiles at a 2,000 per second line rate — and run an FFT on that series. The tallest peak between roughly 5 and 120 Hz is the shake. A motor turning 1,750 rpm puts a line near 29 Hz; components that move when you change belt speed are belt effects, while a stationary line belongs to the drive.

Can vibration corrupt the X and Y coordinates too, not just Z?

Pitching does. Pure up-and-down bounce shifts every point of a profile equally, so X and Y survive; a part that rocks about a horizontal axis gives nearby points opposite Z changes, and triangulation slides the edges of tall walls slightly in X and Y as well. The signature is flat heights rippling in Z while tall-wall edges wobble in X and Y. Treat it like flexure: fixture the part or slow the belt, because subtraction assumes one common wave.