◎ Radiance Flicker Analyze
Measure the flicker in your AI video before you try to fix it
- images
- images
- flicker_report
If you've generated AI video, you know the artifact: a texture or light level that shimmers between frames even though the scene is static. It's the giveaway that a clip is generated, and it's the thing every video workflow ends up fighting. Radiance Flicker Analyze is the measurement side of that fight - it computes a per-frame flicker index (the luma delta between frames) across a batch, and hands you a JSON report of exactly how bad the flicker is, where it's worst, and which channel it's coming from. Measure before you treat: it's designed to be run before the pack's own temporal smoothing node so you can prove the treatment worked.
The mechanism is straightforward and honest: it extracts a signal per frame (luma by default - Rec.709-weighted RGB - or a single color channel, or "All" taking the max across channels), computes each frame's mean, then derives the flicker index as the standard deviation of those means relative to the overall mean, plus the maximum frame-to-frame delta. A high index = strong shimmer; a low one = stable. Because it reports per-frame means and the max delta, you can see whether the flicker is a constant buzz or one bad jump at a specific frame.
The settings
- images - the batch of frames to analyze (the IMAGE type holds a video as a frame batch).
- channel - Luma (Y), Red, Green, Blue, or All (max). Luma is the default and usually what you want, since flicker lives in brightness. Switch to a single channel to chase a specific color cast - skin-tone shimmer will show up in Red, sky banding in Blue. "All" catches anything but reads noisier.
Outputs: images (the exact batch you fed in, passed through unchanged - this is a passthrough analysis node, so you can drop it into an existing chain without disturbing the render) and flicker_report, a JSON string with the per-frame means, the flicker index, max frame delta, and overall mean. Wire the report to a text preview to read it in the UI instead of the console.
The honest take
It's a diagnostic, and like all diagnostics it doesn't fix anything - the fix is the sibling Radiance Temporal Smooth node, or your own EMA/deflicker pass. The workflow is: run Analyze on your raw batch, note the index, run the smoother, run Analyze again, and let the numbers tell you whether you actually improved it or just blurred it. Where it's genuinely useful beyond that: catching the flicker on a specific channel when you only have one budget to fix, and batch QC - if you're rendering a lot of clips, an index over a threshold is an automatic "look at this one."
One caveat worth knowing: it operates on whole-frame means, so it's a global measurement, not a spatial one. Flicker localized to one region (a shimmering background) can read as small in the index while being visually obvious. It's the right tool for "is this clip stable," not "where exactly is it unstable."
Install
In fxtdstudios/radiance - Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt # or windows/mac_silicon
Restart after; Linux needs libopenexr-dev before pip, and the heavy dependency set (OpenEXR, OpenColorIO, colour-science, transformers) makes first boot slow. If Manager's security level blocks the install, clone manually per the README.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| channel | COMBO | Luma (Y) | 5 options: Luma (Y), Red, Green, Blue, All (max) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| flicker_report | STRING | — |