Nodes/ComfyUI-Dickson-Nodes/Dickson Color Match
ComfyUI Node

Dickson Color Match

Steal one image's palette without a single slider

By dicksondickson·Created 2 years ago·Updated 2 years ago· 11
Dickson Color Match
  • color_ref_image
  • image
  • IMAGE
color_match_mode

You've got a render that's technically fine but the colors are off, and there's a reference photo whose grading you'd kill for. Dickson Color Match is the shortcut: it takes your image plus a reference image and remaps the color and lighting of the first to match the second. No strength slider, no prompt, just pick a mode and go.

It's a fork of the color-match code from StableSR, which the author grabbed because that project stopped being maintained - so you're getting battle-tested logic in a standalone node. The pack is one person's convenience collection, so don't expect a polished settings panel. Expect a node that does one thing well.

How it works

The color_match_mode dropdown is the whole story. Two options:

  • Wavelet - decomposes both images into high-frequency (detail) and low-frequency (color and illumination) components, keeps your image's detail, and swaps in the reference's low-frequency component. The result keeps your structure but wears the reference's color. This is the one the example workflow ships with, and the changelog says v1.0.4 made it 15–17x faster. It also runs on CUDA or Apple's MPS when available, so it's your pick if you have a GPU.
  • AdaIN - adaptive instance normalization, the classic style-transfer trick: it normalizes each color channel of your image to have the same mean and standard deviation as the reference's channels. Simpler and cruder - it shifts the overall tint per channel rather than swapping lighting structure. Fine for a quick tint match, softer than Wavelet on anything with real lighting.

One detail worth knowing: in Wavelet mode the reference is resized to match your image's dimensions before matching, so a wildly different aspect ratio still works - the palette is what's borrowed.

Inputs and outputs

The inputs that matter are exactly three: image (the one being recolored), color_ref_image (the one whose palette you want), and color_match_mode. The output is a single IMAGE - wire it into a VAE Encode for an img2img pass, into a Save Image node, or into an upscale chain where you want the final color graded to a reference.

Installing it

The whole pack comes from one repo: dicksondickson/ComfyUI-Dickson-Nodes. Install via ComfyUI Manager (search for dicksondickson) or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/dicksondickson/ComfyUI-Dickson-Nodes

Then restart ComfyUI. Dependencies are light - Pillow and opencv-python-headless - so Manager handles it without drama. No model downloads needed for this node; the TTPlanet preprocessors in the same pack are the ones that want a model.

Things to know

The node prints a stream of [DICKSON-NODES] debug lines to your console on every run. Harmless, noisy, ignore it. On CPU-only machines Wavelet still works but loses most of its speed advantage, so AdaIN becomes the sensible default. And set expectations: this is a global color match, not per-object recoloring. If you want "only the sky changes", this isn't the tool - for that you'd be masking and applying the match locally. For "make my render look like that photo's lighting and palette", it's about as frictionless as ComfyUI gets.

CategoryDickson-Nodes/Color

Inputs (3)

NameTypeDefaultDescription
color_ref_imageIMAGE
imageIMAGE
color_match_modeCOMBO2 options: Wavelet, AdaIN

Outputs (1)

NameTypeDescription
IMAGEIMAGE