Explainer · The physics

Why LED lights put stripes on your photos

The lights look steady to you. They aren't. Most LEDs are dimmed by flicking them fully on and off hundreds or thousands of times a second, and a camera sensor doesn't capture the whole frame at the same instant. Put those two facts together and you get bands.

8 min read3 interactive figures

01LEDs dim by blinking

An incandescent bulb dims by getting cooler and redder. An LED can't do that well: its colour shifts and its efficiency drops if you just turn the current down. So most LED drivers use pulse-width modulation (PWM). They switch the LED between full power and off at a fixed rate, and set brightness by how much of each cycle it spends on. That fraction is the duty cycle.

Your eye blends anything faster than roughly 60–90 flashes a second into a steady glow. It only sees the average, so a 30% duty cycle simply looks like 30% brightness.

Figure 1 · PWM outputLive
The cyan trace is the light output over 4 ms. The dashed line is what your eye sees. The magenta window is one camera exposure: slide it shorter and it starts catching very different amounts of light depending on where it lands.

Typical PWM rates run from a few hundred hertz on cheap fixtures to several kilohertz on stage lighting. LED video walls commonly refresh at 1,920, 3,840 or 7,680 Hz. Mains-powered LEDs with basic drivers also ripple at twice the mains frequency (100 Hz in the UK, 120 Hz in the US).

02Your sensor reads one line at a time

Almost every camera exposes the frame as a moving slit, not all at once. With an electronic shutter the sensor resets and reads out its rows one after another. With a mechanical focal-plane shutter, two curtains travel across the sensor with a gap between them. Either way, each row gets the same exposure time, but starts a little later than the row above it. The time to sweep the whole frame is the readout time.

  • Mechanical curtains sweep the frame in about 1/250–1/400 s.
  • Electronic shutters range from about 1/300 s on fast stacked sensors to 1/15 s on older ones.

Under continuous light that stagger doesn't matter. Under a light that blinks, each row samples a different slice of the blink pattern.

Figure 2 · Rolling shutter simulatorLive
Exposure timeline
Resulting photo
Light type
Timing
Blinks per exposure
–
Band spacing
–
Band depth
–
Left: the LED's on/off pattern over time, with a selection of sensor rows shown as bars covering the moment each one was exposing. A bar's shade is how much light that row caught. Right: the same rows applied to a scene. Try 1/60 s (smooth), then 1/4000 s (deep bands), then switch on Video to see why bands crawl in footage.

Why fast shutter speeds make it worse

What matters is how many on/off cycles fit inside one row's exposure:

  • Many cycles. Every row catches nearly the same share of light, and the stripes almost vanish. At 1/60 s under a 1,440 Hz light, each row sees 24 blinks.
  • One cycle or less. Some rows land in the on part and some in the off part. At 1/4000 s, the darkest rows can catch almost nothing, so the bands go deep.

Event photographers need fast shutters to freeze speakers and performers, which puts them right in this range.

Free fix in cameraIf your camera offers fine shutter steps ("variable shutter", "high-frequency flicker reduction" or "synchro scan"), choose an exposure that's an exact multiple of the flicker period. Every row then catches exactly the same number of whole cycles, and the bands disappear. In the simulator, try a 1/1000 s shutter with the frequency at exactly 1,000 or 2,000 Hz.

03What sets the band spacing

One full band, dark and light, is however many rows the sensor reads during one blink:

band spacing (rows) = rows read per second ÷ flicker frequency = sensor rows ÷ (readout time × frequency)

A 4,000-row sensor that reads out in 1/60 s covers 240,000 rows a second. Under a 3,840 Hz LED wall that's one band every 62.5 rows. Shrink that photo to 1,365 pixels tall for delivery and the spacing becomes about 21 pixels, which matches the bands Bandaid found in real festival shots (17–26 px). So spacing tells you something about the setup:

  • Faster readout (a mechanical shutter, a stacked sensor) gives fewer, wider bands.
  • Higher flicker frequency gives more, narrower bands.
  • The shutter speed doesn't change the spacing at all. It only changes how deep the bands are.

04Why the bands are often magenta or green

Coloured LED fixtures and video walls mix red, green and blue emitters. To make a particular colour, each one runs at its own duty cycle. On some fixtures their pulses are also staggered in time. So a row that misses the green pulse but catches the red and blue ones comes out magenta, and the next row might be green-tinted.

That's why banding usually carries a colour cast as well as a brightness change. It's also why Bandaid corrects red, green and blue separately rather than just brightening the dark rows.

05LED walls: every tile has its own clock

A video wall is a grid of modules, each driven by its own controller. Each tile refreshes at the same rate, but they usually aren't synchronised to each other. So the bands are the same spacing everywhere, but the dark stripe falls in a different place on each tile.

Figure 3 · Tile phase on an LED wallLive
Tiles
Same band rhythm, different timing per tile. A fix that assumes one band pattern for the whole frame lines up on some tiles and makes others worse. Bandaid's first version had exactly this problem with the Cheltenham backdrop.

06The useful part: banding is a simple multiplier

The LED doesn't change colour or blur anything. It just delivers more or less light to each row. In linear light (before the camera's brightness curve), a banded photo is the clean photo multiplied by a gain that depends only on the row and the colour channel:

observed(x, y, colour) = true(x, y, colour) × gain(y, colour) // gain is the same all the way along each row

That structure is what makes banding fixable rather than just something you blur away. If you can measure gain(y), you divide it out and get the original exposure back. Measuring it reliably, when faces, lettering and shadows are in the way, is the hard part. How Bandaid does that is the next article.

Not the same as gradient banding"Banding" also describes stepped skies from heavy compression or 8-bit editing. That's a different problem: missing tonal values, not a lighting effect. Bandaid only targets the flicker kind.