Laser-Stripe Scanner

2D twin of the 3D structured-light scanner: the same pinhole-camera and laser-plane model, seen from above so the triangulation geometry is visible.

Presets

Playback

Scanner settings

Each acquisition intersects the camera ray through a measured pixel with the known laser plane. A longer baseline makes the two rays meet at a wider angle, so the depth is less sensitive to pixel noise.

Specimen

Model checks

The science

What is modelled

A laser emitter at the top of the plan view projects a vertical light plane that sweeps in angle. The camera, offset sideways by the baseline, sees where the stripe falls on the specimen. For each visible stripe point the model adds pixel noise and laser-angle jitter, then intersects the pixel ray with the (noisy) laser plane to get the 3D point and its error against the true surface. The specimen turns on a turntable so the cloud covers all sides.

Equations

  • Pinhole camera: u = f x / z + cx, focal length f = h / (2 tan(FOV/2)).
  • Triangulation: ray C + t d meets the plane n · (X - P) = 0 at t = n · (P - C) / (n · d).
  • Depth error rule of thumb: σz ≈ z² σpx / (f b), proportional to 1/baseline.

Checks run in the page

  • Exact triangulation of points on the laser plane.
  • Consistency of projection and back-projection through the pinhole camera.
  • The error doubles when the pixel noise doubles.
  • The error halves when the baseline doubles.

Honest simplifications

An ideal pinhole camera with no lens distortion, a perfectly calibrated laser plane, a simple visibility and dropout model and no speckle, inter-reflection or sub-pixel peak detection. Real scanners need calibration and have error sources not modelled here.

What to try
  • Press Short baseline: the cloud gets noticeably noisier (orange points).
  • Press Long baseline, clean: the error falls to a fraction of a millimetre.
  • Press Fast turntable and watch coverage build up in a few seconds.
Reconstruction error over time
Point cloud size
Depth error against baseline
Distribution of point errors
Made with 🤖 ChatGPT