Nodes/Enviral Design Node Pack/Enviral Color Match V2
ComfyUI Node

Enviral Color Match V2

Make one image's palette live in another — on CPU or GPU

By EnviralDesign·Created 4 months ago·Updated 21 days ago· 1
Enviral Color Match V2
  • image_target
  • image_ref
  • image
methodreinhard
strength1.00
multithreadtrue

Color matching is the boring-but-powerful trick behind a lot of "that looks professional" outputs: you generate a batch, one frame has the exact moody teal-and-orange grade you want, and you want that palette on the other frames without re-prompting. Enviral Color Match V2 is a focused tool for exactly that - reference batch in, target batch in, recolored target out.

It's the image-work node this pack actually carries weight behind: seven methods, CPU and GPU paths, batch-aware, and no model downloads.

How it works

Two implementation paths, both doing the same conceptual job - matching the target's color statistics to the reference's:

  • CPU methods (mkl, hm, reinhard, mvgd, hm-mvgd-hm, hm-mkl-hm) use the color-matcher library, which does proper reference-to-target histogram/statistics transfer per method. reinhard is the classic mean/std shift; mkl and hm handle more complex mappings; the two hybrid methods chain algorithms for tougher cases.
  • reinhard_lab_gpu skips color-matcher entirely and does a Reinhard transfer in Lab space using ComfyUI's Kornia dependency, running on the GPU. That's the one for large or multi-image batches where CPU churn would hurt.

Reference frames are broadcast to the target batch (one ref frame can style the whole batch; extra ref frames are used per-index), and strength blends between the original target (0) and the full match (1), with values above 1 extrapolating. multithread parallelizes the CPU path for multi-image batches.

The inputs that matter

  • image_target - what gets recolored.
  • image_ref - where the color comes from.
  • method - the algorithm. Default reinhard is the sensible first try; try mkl or hm-mvgd-hm when it looks off.
  • strength - blend amount, 0–10. Start at 1.0.
  • multithread - default on; fine to leave.

Output: a single image - the recolored target batch.

Install

In the Enviral Design Node Pack. ComfyUI Manager: search "Enviral Design Node Pack". Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/EnviralDesign/comfyUI-enviral-design-node-pack

then restart. This is the one node in the pack with a real dependency: color-matcher for the CPU methods. It's declared in the pack's pyproject and ComfyUI Manager installs it; if you cloned manually and hit a missing color_matcher import, pip install color-matcher into the same Python environment that runs ComfyUI. The reinhard_lab_gpu path instead needs ComfyUI's Kornia dependency available.

Gotchas

reinhard_lab_gpu requires both inputs to be RGB with 3 channels - an RGBA or single-channel batch will fail loudly, which is the intended behavior. strength of 0 short-circuits and returns the target untouched (useful for A/B). If a CPU item in a batch errors, that frame passes through unmodified and a warning is logged, so a failing frame won't nuke the whole run. color-matcher is a small, niche library, so read its per-method behavior before assuming mkl beats reinhard for your content - on skin tones especially, methods differ a lot.

CategoryEnviralDesign/image

Inputs (5)

NameTypeDefaultDescription
image_targetIMAGE
image_refIMAGE
methodCOMBOreinhard7 options: mkl, hm, reinhard, mvgd, hm-mvgd-hm, hm-mkl-hm, +1
strengthFLOAT1.000–10
multithreadBOOLEANtrue

Outputs (1)

NameTypeDescription
imageIMAGE