Video Tone Mapping on GPUAuthor: Fyodor Serzhenko
Video tone mapping is essential because modern cameras capture high dynamic range (HDR) scenes that far exceed the display capabilities of standard dynamic range (SDR) screens, and even most HDR displays. The core challenge is compressing this massive range of brightness (often 10,000+ nits) into the 100-400 nits of a typical monitor without destroying detail, color, and temporal stability.
Original raw frame captured with XIMEA 8.9 MPix camera
The Core Problem: HDR Capture vs. LDR DisplayImage sensors in professional digital cinema cameras, machine vision cameras, drones, and even smartphones capture 12-16 stops of dynamic range linearly. This linear data is scientifically accurate but visually unviewable — it appears flat, washed out, or with crushed blacks and clipped highlights. Tone mapping applies a non-linear transform to make this data visually appealing. However, video is not just a sequence of images. Processing each frame independently could create catastrophic artifacts unique to motion. Why Video Tone Mapping is Different (and Harder)1. The Flickering Problem (Temporal Instability)This is the #1 killer of video quality. Frame-by-frame tone mapping causes brightness and color to fluctuate unnaturally:
Why it happens: Local tone mapping algorithms (like CLAHE or bilateral grid) compute parameters per-frame. Small changes in camera position or sensor noise cause these parameters to oscillate, creating temporal incoherence. Without temporal coherence:
2. Motion Artifacts (Ghosting and Halos)Local methods that work great on photos create halos that move with objects:
This occurs because local operators don't respect motion — they treat each frame as isolated. 3. Real-Time Performance ConstraintsUnlike photo processing (which can take seconds on the CPU), video often requires real-time performance or even faster:
This forces algorithm choices that balance quality vs. speed, often sacrificing spatial quality (algorithm strength) for temporal stability. What Happens Without Proper Video Tone Mapping?
Side by side video with/without ALTMapperVideo from XIMEA 8.9 MPix camera with GPU-based ISP, with tone mapping (on the left) and without tone mapping (on the right) Summary: Why We Need ItWithout video tone mapping:
With proper video tone mapping:
The need is not just technical — it's foundational to modern visual storytelling across cinema, streaming, gaming, and communication. ALTMapper Performance DemonstrationWe evaluated the performance by running tests on the NVIDIA GeForce RTX 3060. We used the XIMEA MC089CG-SY camera, which has an output of 8.9 megapixels at 40 frames per second (12-bit mode). We used the full image processing pipeline (ISP) for RAW processing on the GPU, which includes tone mapping. ALTMapper on that GPU takes about 2.5 milliseconds to process. This means that ALTMapper can process around 4 gigapixels per second on that hardware. Speed isn't just a feature — it's a requirement. On the NVIDIA GeForce RTX 4090, ALTMapper processes 62-megapixel frames in just 3.86 milliseconds. That's over 16 Gigapixels per second, enabling real-time 8K video tone mapping with minimal GPU memory footprint. Use CasesWe've included ALTMapper algorithm on the NVIDIA GPU to the following software:
Some of our customers have already embedded that tonemapper into their solutions for high performance raw processing. References |