Cinematic Color Match PRO
Steal the exact grade of any movie frame, statistically
- image
- reference_image
- IMAGE
You found a movie frame with exactly the mood you want - teal shadows, warm skin, that specific contrast curve - and you want your render to look like it. Hand-matching a grade by eye takes forever. Cinematic Color Match PRO does it in one connection: you feed it your image and a reference image, and it transfers the reference's color palette and contrast onto your render using Reinhard color transfer in Lab* space, with a strength slider to blend how far the match goes. It's the pack's "grab a still from Blade Runner and go" node.
The family lineage is legit: Reinhard et al.'s 2001 color transfer paper is the canonical algorithm for this, and it's the statistical core behind a lot of "match color" tools you've used in photo editors. It matches the distribution of color, not pixel-for-pixel content - which is exactly what you want for a grade.
How it works
For each image it converts to Lab* color space (perceptually uniform - the "L" is lightness, "a" and "b" are the color axes), then computes the mean and standard deviation of every channel. The transfer is pure statistics: it shifts your image's channels so their mean and standard deviation match the reference's, then converts back to RGB. Because it's a global stats match, it transfers the mood - overall temperature, contrast, saturation spread - rather than the geometry of the reference scene. The strength slider then crossfades between the fully-matched result and your original, so you can borrow 40% of the grade and keep the rest of your render.
The inputs that matter
image- your render to be regraded.reference_image- the frame whose look you're stealing. The node uses the first image of the reference batch as the statistical target.strength(default 1.0, 0–1) - how much of the match to apply. 1.0 is full transfer; ~0.5–0.7 is the sweet spot when the reference is very different from your image, because a 100% stats match can overreach.
Output: a single IMAGE of the same size.
Installing it
Same pack as everything else - ComfyUI Manager → search "Post Processing PRO", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Guillaume-127/ConfyUI_Post_Processing_PRO
Restart. No requirements, no models - OpenCV color space conversions and mean/std math, runs on CPU.
Where people get tripped up
The honest limitation: it's a global match. It aligns overall mean and spread, but it can't do a local grade (e.g., "shadows teal, highlights warm" when the reference's local structure differs). That's a real gap - a pure Reinhard match on a frame with a big bright window will drag your whole image brighter than you wanted. Two practical fixes: keep strength under 1 so the render keeps its own character, and pair it with FPE Kodak 2383 PRO afterward - the 2383 node's split-tone (cyan shadows, warm highlights) is exactly the local grade that a global stats match can't produce. That pairing - statistical mood match, then a film-print density pass - gets you shockingly close to "I want this to look like that film."
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| reference_image | IMAGE | — | |
| strength | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |