Nodes/Luminance Stack Processor/Luminance Stack Processor (5 Stops)
ComfyUI Node

Luminance Stack Processor (5 Stops)

The 5-stop Luminance Stack Processor

By sumitchatterjee13·Created 12 months ago·Updated 11 months ago· 45
Luminance Stack Processor (5 Stops)
  • ev_plus_4
  • ev_plus_2
  • ev_0
  • ev_minus_2
  • ev_minus_4
  • hdr_image
exposure_step2.0
exposure_adjust0.0
hdr_algorithmdetail_injection
auto_calibratetrue
debevec_exposure_comp-8.0
debevec_anti_bandingtrue

The Luminance Stack Processor (5 Stops) is the 3-stop version with two extra brackets bolted on: EV+4 and EV−4 on top of the EV+2 / EV0 / EV−2 set. Same algorithms, same knobs, same output - just a wider net. Instead of a 4x dynamic range (EV+2 to EV−2), you're covering 16x, which matters when the scene has both a sunlit window that's still blowing out at EV−2 and shadows that are still crushed at EV+2.

When to reach for it

If the 3-stop merge leaves your highlights clipped or your shadows empty, this is the upgrade. The detail injection algorithm maps EV−2 detail into the 1.0–2.0 HDR range and EV−4 detail into 2.0–4.0, so extreme highlights actually recover when you expose down in Nuke. Same story in the shadows with the EV+2 / EV+4 overexposed frames. Real-world bracketing with this kind of spread demands a tripod and locked white balance, because five misaligned images merge about as well as you'd expect.

Where the 5-stop version genuinely shines is the AI workflow: generate five exposure variants from one source image with the author's FLUX.1 Kontext exposure LoRAs, and you get a perfectly aligned EV+4…EV−4 stack for free. No tripod required, and the 8-stop spread is exactly the range those LoRAs are trained to produce.

Inputs and knobs

Five IMAGE inputs, in order: ev_plus_4, ev_plus_2, ev_0, ev_minus_2, ev_minus_4. EV+4 is the brightest (longest exposure), EV−4 the darkest - wire them in that order or the math gets confused. Everything else is shared with the 3-stop node: hdr_algorithm (default detail_injection, with radiance_fusion, debevec, robertson, and friends in the list), exposure_step, exposure_adjust, and the three Debevec-only knobs. Output is a single hdr_image tensor with values above 1.0.

Caveats worth knowing

Five brackets means five images of memory in flight, so this is heavier than the 3-stop. And more inputs is more surface for one bad bracket to poison the merge - if your EV+4 variant came out of the sampler looking like a blown-out gray smear, the result inherits that. The median-based statistics in the detail injection and Debevec paths help reject outliers, but garbage in, HDR out.

Honestly, most people don't need this node's full range. Start with the 3-stop, and only reach for five brackets when you can see the clipping. For everything else - install via ComfyUI Manager ("Luminance Stack Processor") or git clone https://github.com/sumitchatterjee13/Luminance-Stack-Processor.git into ComfyUI/custom_nodes, then pip install -r requirements.txt. Same pack, same rules, and it still wants OpenCV installed before you restart ComfyUI.

Categoryimage/luminance

Inputs (11)

NameTypeDefaultDescription
ev_plus_4IMAGE
ev_plus_2IMAGE
ev_0IMAGE
ev_minus_2IMAGE
ev_minus_4IMAGE
exposure_stepoptFLOAT2.00.5–5
exposure_adjustoptFLOAT0.0-5–5
hdr_algorithmoptCOMBOdetail_injection7 options: detail_injection, radiance_fusion, natural_blend, mertens, debevec, robertson, +1
auto_calibrateoptBOOLEANtrueEnable adaptive calibration for AI-generated brackets (Debevec/Robertson only)
debevec_exposure_compoptFLOAT-8.0-15–15Exposure compensation for Debevec/Robertson output (in stops). Default -8.0 optimal for AI brackets.
debevec_anti_bandingoptBOOLEANtrueApply optional gradient-adaptive dithering to reduce banding (Debevec/Robertson only). Disable for pure lambda=100 smoothness with no color changes.

Outputs (1)

NameTypeDescription
hdr_imageIMAGE