Enviral Color Match V2
Make one image's palette live in another — on CPU or GPU
- image_target
- image_ref
- image
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 thecolor-matcherlibrary, which does proper reference-to-target histogram/statistics transfer per method.reinhardis the classic mean/std shift;mklandhmhandle more complex mappings; the two hybrid methods chain algorithms for tougher cases. reinhard_lab_gpuskips 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. Defaultreinhardis the sensible first try; trymklorhm-mvgd-hmwhen 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_target | IMAGE | — | |
| image_ref | IMAGE | — | |
| method | COMBO | reinhard | 7 options: mkl, hm, reinhard, mvgd, hm-mvgd-hm, hm-mkl-hm, +1 |
| strength | FLOAT | 1.000–10 | — |
| multithread | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |