3.1 KiB
3.1 KiB
AutoAdjustNode
Overview
AutoAdjustNode performs a chained series of global tone corrections on an RGB image. It can optionally apply automatic levels, per-channel or monochrome tone stretching, neutral colour balancing in YCbCr, and a final horizontal flip. The implementation assumes floating-point tensors in [0, 1] and always returns RGB output.
Inputs
image(IMAGE): Source image tensor shaped[B, H, W, C](C must be 3 or 4; the alpha channel is discarded).precision(STRING): Selects percentile estimation mode for level/tone calculations."Histogram (fast)"approximates quantiles via 256-bin histograms, while"Exact"usestorch.quantile.auto_levels(BOOLEAN, defaultTrue): Enables global min/max remapping based on luma percentiles.levels_shadow_clip_pct(FLOAT, default0.1): Percentage of darkest pixels to clip when computing the low anchor for levels.levels_highlight_clip_pct(FLOAT, default0.1): Percentage of brightest pixels to clip when computing the high anchor.levels_gamma_normalize(BOOLEAN, defaultFalse): When enabled, nudges midtones toward 50% grey if the median luma falls between 35% and 65%.auto_tone(BOOLEAN, defaultTrue): Toggles the tone mapping stage.tone_mode(STRING, default"Per-channel"):"Per-channel"stretches each channel independently;"Monochromatic"applies a single stretch derived from luma.tone_shadow_clip_pct(FLOAT, default0.1): Shadow percentile used by the tone stage.tone_highlight_clip_pct(FLOAT, default0.1): Highlight percentile used by the tone stage.auto_color(BOOLEAN, defaultTrue): Enables neutral balance in YCbCr space (centres Cb/Cr components).snap_neutral_midtones(BOOLEAN, defaultFalse): WhenTrue, only midtone pixels (luma in 0.2–0.8) contribute to the Cb/Cr statistics, reducing highlight/shadow bias.flip_horizontal(BOOLEAN, defaultFalse): Horizontally mirrors the result.
Outputs
IMAGE: The processed RGB tensor with all three stages (levels, tone, colour) applied in order, plus any optional flip.
Processing Notes
- All stages operate on float32 tensors in
[0, 1]; the node casts incoming data accordingly and clamps the final output. - Levels and tone stages guard against degenerate ranges (when high equals low) and fall back to minimal stretching.
- The colour balance stage works in YCbCr and uses either masked medians or simple means depending on
snap_neutral_midtones. - Alpha channels are intentionally dropped so downstream nodes always receive RGB tensors.
Tips
- Theoretically, use
"Histogram (fast)"when performance matters or when feeding large batches; switch to"Exact"for reproducibility-sensitive work. In actual practice,"Exact"is usually faster, so there's no reason not to use it. - Keep
levels_shadow_clip_pct/levels_highlight_clip_pctat zero when you need strict dynamic range preservation (e.g., HDR preparation). - Combine this node with
AutoColorConfigNodeto share toggle states across multiple branches of a workflow.*** End Patch