Skip to content

BurstSR

As of November 2026: 12 MP bursts merged to 28 MP in under 3 s on a Vivo X100 Ultra · up to 50 MP output · RAW bursts at 60 FPS · runs on the Vivo and a Pixel 6a

Your hand is never perfectly still. When a phone shoots a burst, each frame lands a fraction of a pixel away from the last, so together the frames sample the scene more finely than any one of them can. BurstSR captures a burst of RAW frames, lines them up, and merges them into one photo with more detail and much less noise than a single shot. It runs entirely on the phone, with its own pipeline instead of the phone’s image processor.

Side-by-side crop of an apartment building's windows and balconies: the single frame on the left is soft and noisy, the merged burst on the right has crisp railings and window frames
A courtyard at 100%: one frame of a 16-frame burst enlarged 2× (left) and the merged result (right).

How it works

The merge follows Wronski et al.’s Handheld Multi-Frame Super-Resolution (SIGGRAPH 2019), the method behind Google’s Super Res Zoom. Each frame is aligned to the first, tile by tile, down to a fraction of a pixel. Every RAW sample is then added at its exact position into an output grid up to twice the sensor’s resolution, spread along edges so they stay sharp. Anything that moved between frames is detected and left out, so people walking through the shot don’t leave ghosts.

I rewrote an open-source desktop CUDA implementation in C++ and Vulkan, so the same code runs on Windows and on Android. Fitting it on a 6 GB phone meant streaming frames straight from the camera and merging large outputs in bands. A finishing step then corrects lens shading, exposure, tone, and clipped highlights, so the result looks like a photo rather than a raw dump.

The camera

  • Auto and Pro modes, with dials for shutter, ISO, focus, and white balance, plus a histogram, focus peaking, and a timer.
  • 1×, 1.5×, or 2× output, with photos developed in the background so you can keep shooting.
  • A viewer that compares each result against the phone’s own photo of the same moment.
  • Lossless 16-bit DNGs of every merge, for editing in a RAW editor.
  • Lens and sensor-mode discovery, which finds hidden cameras and vendor modes like the Vivo’s 46 mm in-sensor zoom.

HDR and a second engine

An HDR mode merges a −2/0/+2 EV bracket on the phone. It saves a floating-point HDR DNG and an Ultra HDR JPEG that shows the extra brightness on HDR screens. A RAW bracket mode saves up to ±4 EV of original frames for processing on a computer.

An experimental build adds a second, model-based super-resolution engine. It picks its own exposure for each burst, keeping highlights intact while using the longest shutter that’s still safe handheld.

What I learned

On the Pixel 6a, a 1.5× merge enlarged to 2× looked the same as a true 2× merge, because the lens can’t resolve more than that. So 1.5× is the default. Next to Google’s own camera, BurstSR’s photos are cleaner but flatter. The difference is Google’s local contrast and tone mapping, not the merge itself.