Imitation Hue
Fix that AI color-cast by feeding it a clean reference
- imitation_image
- target_image
- mask
- image
If you've ever generated a "painting" or "vintage photo" and gotten back an image drenched in a mustard-yellow cast that no amount of negative prompting will shake, this is the node for that exact problem. ImitationHueNode does color transfer: it takes the color characteristics of one image and imposes them onto another, so instead of fighting your prompt you just point it at a reference with the colors you actually want and let it do the correction in post. It's turned up as the fix in real "why is everything yellow" threads - someone linked it to a frustrated user chasing a color-cast bug for weeks, and the reply back was essentially "this eliminated the problem instantly." That's the node working as intended.
How it works
Per the pack author's own description, it's modeled on the color-matching feature from Pixocake (a popular mobile photo app) - you give it a reference image whose color grade you want to imitate, and a target image to apply that grade to, and it migrates the color characteristics across. strength controls how aggressively the migration happens. There's also a dedicated skin-tone safeguard, because naive color transfer is notorious for making skin look wrong (too orange, too green, whatever the reference's dominant cast happens to be) - skin_protection pulls skin areas back toward the original image's tones the higher you set it.
On top of the core transfer, it can optionally auto-adjust brightness, contrast, and saturation as part of the same pass, each within a configurable percentage range rather than an absolute amount - and there's a separate "tone" mode that mimics the tonal character (think: overall light/dark mood) of the reference image independently of its hue.
One README note worth repeating verbatim because it'll save you a headache: if your source is a straight-off-camera JPG or PNG, convert it in Photoshop (or similar) first. Camera color spaces can differ from what the node expects, and skipping that step is a common cause of results that look subtly wrong for no obvious reason.
The inputs and outputs that matter
Two images and a strength dial are the core of it:
imitation_image- the reference: the image whose color you want to copy.target_image- the image getting corrected to match that reference.strength(0.1–1, default 1) - how much of the imitation to apply.skin_protection(0–1, default 0.2) - higher values keep skin tones closer to the target's original colors instead of fully adopting the reference's cast.
Then four auto-adjust toggle pairs, each a boolean switch plus a range float (0.1–1, default 0.5, meaning "auto-adjust within this percentage of range"): auto_brightness/brightness_range (auto_brightness defaults on, the only one of the four that does), auto_contrast/contrast_range, auto_saturation/saturation_range, and auto_tone/tone_strength.
Optionally, a mask input restricts the color migration to a region instead of the whole frame - useful if you only want, say, the background re-toned and not the subject. The README mentions pairing this with a SAM segmentation node to generate that mask automatically.
One output: image, the corrected result.
How to install it
Via ComfyUI Manager: search "ComfyUI-MingNodes," install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/mingsky-ai/ComfyUI-MingNodes
then restart. This node needs no model downloads or extra dependencies beyond the base pack install.
Common issues & troubleshooting
Skin looks wrong after the transfer. Push skin_protection up. It defaults low (0.2), so if your reference image has a strong cast, skin can pick up more of it than you'd like unless you deliberately dial protection higher.
The auto-adjust toggles are doing something unexpected. Remember auto_brightness is on by default while the other three auto-toggles are off - if your output's exposure shifted and you didn't touch anything, that's why. Turn it off if you only want the pure color migration with nothing else moving.
Result looks like a wash, not a correction. Usually strength set too high against a reference that's very different in overall tone from your target. Back it down toward 0.5–0.7 and see if it reads as a correction rather than a repaint.
Colors are subtly off even with a good reference. Check whether your images came straight from a camera - per the README, convert camera-original JPG/PNG files to a standard color space first, since camera color spaces can diverge from what the node assumes.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| imitation_image | IMAGE | — | |
| target_image | IMAGE | — | |
| strength | FLOAT | 1.00.1–1 | — |
| skin_protection | FLOAT | 0.20–1 | — |
| auto_brightness | BOOLEAN | true | — |
| brightness_range | FLOAT | 0.50.1–1 | — |
| auto_contrast | BOOLEAN | false | — |
| contrast_range | FLOAT | 0.50.1–1 | — |
| auto_saturation | BOOLEAN | false | — |
| saturation_range | FLOAT | 0.50.1–1 | — |
| auto_tone | BOOLEAN | false | — |
| tone_strength | FLOAT | 0.50.1–1 | — |
| maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |