Nodes/SDVN_Comfy_node/🎨 Color Match
ComfyUI Node

🎨 Color Match

Transfer a color palette between images

By StableDiffusionVNΒ·Created 2 years agoΒ·Updated about a month agoΒ· 118
🎨 Color Match
  • image
  • ref_image
  • image
β—„methodwaveletβ–Ί
β—„blend1.00β–Ί

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. wavelet is the default and the one to reach for first; it handles photographic images cleanly and rarely produces artifacts. reinhard is the classic simple global transfer. The rest (adain, mkl, mvgd, hm, and the hybrid hm-mvgd-hm / hm-mkl-hm) are statistical variants - swap methods if wavelet overshoots or muddies a particular image.
  • blend (0-1) - how far to push it. 1 is a full match; dial it down toward 0.5 when 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.

CategoryπŸ“‚ SDVN/🏞️ Image

Inputs (4)

NameTypeDefaultDescription
imageIMAGEβ€”
ref_imageIMAGEβ€”
methodCOMBOwavelet8 options: wavelet, adain, mkl, hm, reinhard, mvgd, +2
blendFLOAT1.000–1β€”

Outputs (1)

NameTypeDescription
imageIMAGEβ€”