π¨ Color Match
Transfer a color palette between images
- image
- ref_image
- image
This node makes one image adopt the color and tone of another. You give it your image plus a reference, pick a matching method, and it re-grades your image so its palette lines up with the reference's. It's the fix for a very specific, very common annoyance: colors drifting during processing. Run an img2img pass or a model upscale and the output often comes back subtly warmer, cooler, or more washed out than the source - Color Match snaps it back.
The other big use is consistency. If you're generating a set that needs to feel like it was shot on the same day with the same camera, grade them all against one reference and they'll match. It's also the standard trick for compositing: paste an element into a scene, then color-match it to the background so it stops looking pasted.
How it works
It's a color-transfer algorithm: it reads the color statistics of the reference and remaps your image's colors to fit. SDVN's version is built on the same color-matcher approach as the popular Image Color Match node in ComfyUI-Easy-Use, which is where the method list comes from. It's a pixel operation - no model, no diffusion - so it's fast and deterministic.
The inputs and outputs that matter
image- the one getting re-graded.ref_image- the look you want to copy. This is the target palette, not something that appears in the output.method- the transfer algorithm.waveletis the default and the one to reach for first; it handles photographic images cleanly and rarely produces artifacts.reinhardis the classic simple global transfer. The rest (adain,mkl,mvgd,hm, and the hybridhm-mvgd-hm/hm-mkl-hm) are statistical variants - swap methods ifwaveletovershoots or muddies a particular image.blend(0-1) - how far to push it.1is a full match; dial it down toward0.5when a full transfer is too aggressive and you only want to nudge the grade.
One image out - the re-graded result.
How to install it
ComfyUI Manager: search SDVN_Comfy_node, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/StableDiffusionVN/SDVN_Comfy_node
then pip install -r custom_nodes/SDVN_Comfy_node/requirements.txt from your ComfyUI root, and restart. It's under SDVN β Image.
Common issues & troubleshooting
The match is too strong and looks unnatural. Pull blend down. A full 1.0 transfer forces your image's whole distribution onto the reference, which can crush contrast or shift skin tones. 0.5-0.8 usually reads better.
One method produces weird color casts; another doesn't. That's expected - the methods trade differently between accuracy and stability. If wavelet misbehaves on a given pair, try reinhard or mkl. There's no universally best one; it's image-dependent.
Nothing changes. Make sure image and ref_image are actually wired to different sources and blend isn't at 0. Matching an image against itself is, correctly, a no-op.
Missing dependency error on load. The color-transfer backend is installed by the pack's requirements.txt. If the node fails to load, you skipped that step - run pip install -r custom_nodes/SDVN_Comfy_node/requirements.txt and check the console.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| ref_image | IMAGE | β | |
| method | COMBO | wavelet | 8 options: wavelet, adain, mkl, hm, reinhard, mvgd, +2 |
| blend | FLOAT | 1.000β1 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |