Cameras & sensorsExplainer

Event camera data format: coordinates and timestamps, not pixels

An event camera sends no frames: its data format is a sparse stream of pixel coordinates, polarity bits and microsecond timestamps. How to read and use it.

LumaSpec Vision10 min read Share on LinkedIn

On this page 10 sections
  1. 01What sits in the stream: four numbers per event
  2. 02The numbers that drive the format
  3. 03Worked example: a part edge crossing at 0.5 m/s
  4. 04Turning events into images your tools accept
  5. 05Event camera versus a global-shutter area scan camera
  6. 06How to choose, and the cameras for the conventional cases
  7. 07Checks before you commit
  8. 08When the event answer is wrong
  9. 09The decision, case by case
  10. 10Questions

An event camera sends no pictures. Every pixel watches its own brightness and speaks only when that brightness crosses a fixed change threshold, so the output is a stream of small records — pixel column, pixel row, polarity, timestamp — and a pixel that stands still sends nothing. That inversion is what trips engineers up on first contact: there is no frame, no exposure time, no gray value, and no fixed number of bytes per second. This explainer covers what actually sits in that data format, how to read it, how to fold it into tools that expect images, and when the honest answer is a conventional global-shutter camera instead. A conveyor example works the arithmetic end to end.

What sits in the stream: four numbers per event

Each event carries exactly four values: the pixel's column x, its row y, a timestamp t, and a polarity p. Polarity is ON when the pixel got brighter past the threshold and OFF when it got darker; in code it usually arrives as +1 or −1. Timestamps typically carry microsecond precision, and the stream is just these tuples in time order.

Field Meaning
x Pixel column on the sensor
y Pixel row on the sensor
t Timestamp of the change, microsecond precision
p Polarity: ON (brighter) or OFF (darker)

Two consequences follow directly. No event ever carries a brightness value, so gray levels, color and surface appearance are simply not in the stream — only where each pixel changed, when, and in which direction. And the change threshold lives in the sensor's configuration, so changes smaller than it never appear; that is the number a trial on the real part, under the real lighting, has to confirm.

The numbers that drive the format

Temporal resolution better than 100 μs is the headline specification of this sensor class. Inverted, that is more than 10,000 timestamped changes per second from a single pixel, a rate a conventional camera only matches by running above 10,000 fps. The second number is data volume, and it is set by motion rather than by sensor size:

m = sensor width / field of view pixel speed (px/s) = object speed × m / pixel size events per second ≈ edge pixels in motion × pixel speed

A quiet scene costs almost nothing; a busy one bursts. Whatever interface and host you choose must survive the busiest moment of the cycle, not the average — event camera data throughput when events exceed the link covers exactly that failure.

Worked example: a part edge crossing at 0.5 m/s

Take illustrative but typical numbers: a 1/1.8"-class sensor with a 7.2 mm active width and 3.45 μm pixels (about 2,090 columns), a 180 mm field of view, a moving edge 200 pixels tall, and a 300 mm working distance.

  1. Magnification m = 7.2 mm ÷ 180 mm = 0.04 (1:25).
  2. One pixel covers 3.45 μm ÷ 0.04 = 86 μm of the part.
  3. At 0.5 m/s = 500,000 μm/s, the edge sweeps 500,000 ÷ 86 ≈ 5,800 pixels per second.
  4. A frame camera freezing that to one pixel of blur needs an exposure of 86 μm ÷ 500,000 μm/s ≈ 172 μs, and sampling the trajectory at one-pixel steps means about 5,800 fps. Even on a modest 640 × 480 region that is 307,200 pixels × 5,800 fps ≈ 1.78 GB/s of 8-bit data.
  5. The event camera fires on the leading and trailing edges instead: 2 × 200 pixels in motion × 5,800 px/s ≈ 2.3 million events per second. Packed as a plain 9-byte struct — a 32-bit timestamp, two 16-bit coordinates, an 8-bit polarity field — that is about 21 MB/s, roughly 85× less than the frame stream, and vendor encodings pack tighter still.
  6. The lens: f = working distance × m ÷ (1 + m) = 300 mm × 0.04 ÷ 1.04 ≈ 11.5 mm, so a 12 mm C-mount lens covers the field. The lens focal length calculator repeats this for any other distance.

Pick the f-number for the light you have: a pixel reports only after enough photons arrive, so a wider aperture tightens the response and quiets noise events.

Lens focal length, field of view and working distance
Units
Solve for
Focal length
– mm
Field of view
– mm
Working distance
– mm
Magnification
– x
Angle of view
– °
Pixel on the part
– mm

Thin-lens model: m = sensor width / field of view, f = WD × m / (1 + m). Accurate to a few percent above about 150 mm; check the lens's minimum object distance.

Find lenses with this focal length Open the full calculator

Turning events into images your tools accept

Most vision libraries expect an image, so you accumulate. Two reconstructions cover nearly everything: an event-count image — how many events each pixel produced inside the window — for presence and speed maps, and a last-polarity image — the most recent direction of change — for silhouettes. Both need a window Δt, and the blur budget sets it: Δt = one pixel ÷ pixel speed, which here is 86 μm ÷ 500,000 μm/s ≈ 172 μs. Tolerate two pixels of smear and double it; go much beyond that and separate objects merge.

You can also skip images entirely. The record stream answers timing questions — vibration frequency, arrival time, counts past a gate — with a time-slice query that no frame pipeline can match. Whichever path you take, pre-allocate and reuse buffers instead of allocating per burst; reusing image buffers instead of per-frame allocation shows the pattern.

A stopped scene, though, returns nothing at all.

One workaround is strobed illumination, which turns a static part into a brightness change on every flash.

Event camera versus a global-shutter area scan camera

Event camera Global-shutter area scan
Output Sparse (x, y, t, polarity) records Full frames of brightness values
Temporal resolution Better than 100 μs (over 10,000 fps equivalent) Sensor frame rate, typically tens to hundreds of fps
Motion blur None by design Set by exposure; budget ≤ 1 px ÷ edge speed
Static scene No output Full image every frame
Data in the example ≈ 21 MB/s ≈ 1.78 GB/s
Absolute brightness Not in the record Every pixel
Strong at Change detection, vibration, high-speed timing Presence, measurement, appearance, code reading

For the wider question — which paradigm wins for fast motion — the companion piece on event-based vision versus frame cameras works the trade-off; this one stays on the data format itself.

How to choose, and the cameras for the conventional cases

Run the arithmetic of the worked example on your own line, then decide:

  • Pixel speed under about 1,000 px/s — a blur budget of 1 ms or more — is ordinary territory for global-shutter frames, with standard tools and standard qualification.
  • To measure a frequency you need at least two samples per cycle: any 120 fps capture caps measurable vibration near 60 Hz, while microsecond stamps resolve well past 5 kHz. kHz-scale vibration, or triggering that must react inside a millisecond, is event territory.
  • If you also need appearance — the surface, the print, the color — take frames, or run both cameras on a shared clock. Global-shutter camera and IMU modules for fast-motion tracking covers the conventional side of that pairing.

Slow production motion is the common case, and a compact C-mount camera with a global shutter covers it. The MV-CU020-90GC is exactly that class of camera.

Area scan camerasHikrobot MV-CU020-90GC 2.5 MP Area Scan Camera, GigE, GMAX4002, ColorMV-CU020-90GC
Sensor format
1/1.7"
Lens mount
C-mount
Interface
GigE
Resolution
Up to 3 MP
$309.00View partBuild a system with it

For machines where the camera bolts directly onto the frame, board-level cameras bring the same shutter behavior in a much smaller package. The LS-BCM-0003 is a 3.1 MP USB3 board-level camera with a 1/1.8" global-shutter sensor at 120 fps.

Board-level cameras3.1 MP USB3 board-level camera, IMX252, 1/1.8" global shutter, 120 fps (LS-BCM-0003)LS-BCM-0003
Sensor format
1/1.8"
Lens mount
C-mount
Interface
USB3
Resolution
5 MP
$690.00View partBuild a system with it

When you need detail as well as speed, high-resolution global-shutter sensors hold the middle ground. The MV-CH120-11UC is a 12 MP USB3 camera, high-speed version, with a 1.1" sensor, C-mount and global shutter.

Area scan camerasHikrobot MV-CH120-11UC 12 MP Area Scan Camera, USB3, IMX304, High-speed version, ColorMV-CH120-11UC
Sensor format
1.1"
Lens mount
C-mount
Interface
USB3
Resolution
12 MP
$2,339.00 · quotedView and quoteBuild a system with it

Browse area scan cameras for housed models or board-level cameras to embed, filter everything in the camera finder, or start at the camera step of the system configurator.

Checks before you commit

  • Estimate events per second at the worst moment — parts crossing together, strobe firing — and double it for margin before checking it against the interface.
  • Read the SDK documentation for the record layout: field order, timestamp unit, coordinate origin, polarity encoding. Parse exactly what it documents, not what a tutorial implies.
  • Plan clock sync before fusing event times with frames or an encoder: align the clocks, then measure the residual offset. Mapping camera timestamps to PC time for recorded frames shows the measurement.
  • Trial the darkest and brightest surfaces at the real working distance; the change threshold, not the resolution, decides what you detect.
  • Fix the accumulation window from the blur budget before tuning any tool that runs on top of it.
  • If the timestamped records must land in a plant database, logging timestamped events to a SQL database shows the logging side of that pattern.

When the event answer is wrong

Static inspection is the big one: presence checks, defect finding and code reading need full frames of a part that is not moving, and a sensor that only reports change has nothing to say. Appearance measurement fails the same way — gray values never enter the record. A textureless surface sliding past fires only at its boundaries, and a drift slower than the threshold never fires at all. Do not choose events for cable bandwidth alone, either; most lines that feel fast still need only tens to a few hundred frames per second, which a global-shutter area scan camera delivers with far simpler tooling.

The decision, case by case

  • Vibration above about 60 Hz, kHz-scale timing, or a reaction inside a millisecond: event camera.
  • Sparse fast motion you only need to detect and time — parts in flight, sparks, droplets: event camera.
  • Any task that must see appearance, color or gray levels: global-shutter frames.
  • Pixel speed under roughly 1,000 px/s with an exposure budget of a millisecond or more: global-shutter frames; most production lines live here.
  • Tight mounting space at those moderate speeds: a board-level global-shutter camera.

If your line sits between two of these cases, send the part speed, the field of view and the fastest event you must catch through the contact page; free expert support comes with every order.

Questions

Does an event camera ever output a normal image?

Not from the event stream itself. Brightness values never appear in the record, so the best you can build from events alone is a map of which pixels changed, when, and in which direction. Systems that need true appearance pair the event camera with a frame camera, or use both data paths where a sensor offers them. For pure change detection the event map is enough.

How do I size the host and link for event bursts?

Size for the worst 10 milliseconds, not the average. In the worked example the average is about 2.3 million events per second, but a part entering the field of view delivers that rate the instant it crosses, stacked on whatever else moves. Multiply your own estimate — edge pixels in motion times their speed in pixels per second — by two for margin, pre-allocate ring buffers, and check the sum against the interface before ordering.

Is microsecond timestamp precision the same as microsecond accuracy?

No. Precision means the stamp ticks in one-microsecond steps; accuracy is how well two cameras, or a camera and an encoder, agree. Within one sensor the stamps are excellent. Across devices you get whatever the clock synchronization delivers, so sync the clocks first, then measure the residual offset before fusing event times with frame times or motion data.

Can a standard vision library read the stream directly?

Most expect images, so accumulate first. Sum events per pixel over a fixed window into a count image, or store the latest polarity per pixel into a silhouette image, then hand that to your normal blob and edge tools. Choose the window from the blur budget — one pixel divided by the fastest feature's speed in pixels per second — and the library sees a clean, high-speed difference image.

When is a global-shutter frame camera the better call?

When motion is slow enough that frames both freeze and sample it. Work out the blur budget: an exposure at or under one pixel divided by edge speed, and a frame rate at least twice the highest motion frequency you measure. If those land inside a normal global-shutter sensor — roughly a few hundred frames per second at full resolution — frames win on tooling, qualification effort and the appearance data that events never carry.