Nodes/FiL_Design_ImageMind/🎨 Color Wizard
ComfyUI Node

🎨 Color Wizard

Fix a green cast or match a whole batch to one reference frame, without burning a diffusion pass

By FiL-Design-Ai·Created 2 months ago·Updated 8 days ago· 8
🎨 Color Wizard
  • image
  • reference
  • wb_mask
  • image
methodFull Auto
strength0.80
saturate0.5
temperature0.00
tint0.00
preserve_skinfalse

Your render came back green. Or grey. Or it's a batch of fifty images where each one is a slightly different tint, and you want them all to look like they were shot under the same light. The wrong instinct - and it's a very common one - is to re-run the sampler or reach for img2img. The right one is a deterministic color operation that costs milliseconds and can't hallucinate. That's exactly what FiL Color Wizard is: an automatic color-correction node from the FiL Design ImageMind pack, with a full auto mode and a reference-match that pulls a whole batch toward one look.

The pack's own example is the one you'll actually want: wire a reference image in, and every frame in the batch gets graded to match that target's palette. For portraits, flip preserve_skin on so the white balance doesn't grey-wash faces.

How it works

Pick a method - that's the correction algorithm. The default Full Auto chains gray-world white balance with LAB contrast enhancement, which handles the "this is slightly wrong and I can't be bothered to diagnose it" case. The rest are the classic primitives, each doing exactly one thing:

  • Gray World - assumes the average of the scene should be neutral grey and corrects toward that.
  • White Patch - finds the brightest neutral-ish area and uses it as the white reference.
  • Channel Stretch - stretches per-channel histograms; the saturate slider (percentile saturation) is only used by this method.
  • LAB Enhance - contrast and color work in LAB space, which is where you get it without shifting hue.

strength is your overall dial (0 = no change, 1 = full correction). temperature and tint are the manual hand on top: -1 to +1 for cool/blue vs warm/yellow, and green vs magenta respectively. The whole thing is numpy/torch math - no model, no GPU requirement, instant.

The execution order matters if you combine tools: the method runs first, then an optional wb_mask (a white-balance picker - mask the area that should be neutral grey and it corrects the whole image's temperature from that sample), then reference palette matching, then temperature/tint, then preserve_skin blending back the original skin tones. It processes batches frame by frame, and a single mask works across a whole batch, so you can grade 50 images in one queue.

reference vs wb_mask - don't confuse them

These solve different problems and people conflate them constantly. reference grades your image to match another photo's overall palette - a statistics transfer, the same idea as a color-match node. wb_mask is a white balance pick: you're telling it "this one spot should be neutral grey, fix everything from that." They combine fine - white-balance first, then palette match - but if your goal is "match frame 3's look," you want reference, not a mask.

This is the classic post-processing lesson the KB keeps hammering: color matching is a deterministic, instant, $0 operation. Re-rolling a generation because "the colors are off" is neither deterministic nor instant. Use the wizard when the image is right and only the light is wrong.

Installing it

Ships in FiL Design ImageMind (MIT). ComfyUI Manager: search FiL_Design_ImageMind, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/FiL-Design-Ai/FiL_LLM FiL_Design_ImageMind
pip install -r FiL_Design_ImageMind/requirements.txt

Restart; the node lives under 🎨 FiL Design/Image. ComfyUI 0.3.60+ and Python 3.10+, dependencies are the pack's light set - nothing extra, no model downloads, no API keys. It's a pure pixel node, so it needs no provider at all.

Gotchas

The main trap is cranking strength to 1.0 on a heavily stylized image and being surprised when the "fix" flattens the look you actually wanted - a low strength preserves intent. preserve_skin defaults to off; turn it on for any portrait, because gray-world white balance is exactly the thing that eats skin tones. And remember the output is a corrected copy - if you were counting on an untouched original for comparison, keep the source wire around.

Category🎨 FiL Design/🖼️ Image

Inputs (9)

NameTypeDefaultDescription
imageIMAGEImage or batch to analyze. Leave disconnected to generate from Prompt field.
methodCOMBOFull AutoCorrection algorithm. Full Auto = Gray World white balance + LAB contrast enhancement.
strengthFLOAT0.800–1Overall correction strength. 0 = no change, 1 = full correction.
saturateFLOAT0.50–5Percentile saturation for Channel Stretch (only used by that method).
temperatureFLOAT0.00-1–1Colour temperature. -1 = cool (blue), 0 = neutral, +1 = warm (yellow).
tintFLOAT0.00-1–1Colour tint. -1 = green, 0 = neutral, +1 = magenta.
preserve_skinBOOLEANfalsePreserve skin tones — prevents white balance from grey-washing faces.
referenceoptIMAGEReference image whose colour distribution to match.
wb_maskoptMASKMask of a neutral-grey area to sample for white balance.

Outputs (1)

NameTypeDescription
imageIMAGE