Nodes/CRT-Nodes/Color Isolation FX (CRT)
ComfyUI Node

Color Isolation FX (CRT)

Keep one hue, kill the rest

By PGCRT·Created 2 years ago·Updated 7 days ago· 129
Color Isolation FX (CRT)
  • image
  • target_color
  • IMAGE
hue_shift0.00
window_function
hue_width0.070
curve_steepness0.40
mode
output_mode

You've seen this effect a thousand times even if you didn't know its name: the black-and-white photo where one object stays in full color - a red umbrella, a pair of yellow shoes. It's a selective-color technique, and it's older than digital photography, but doing it well means controlling exactly which hues survive and how the transition between "kept" and "desaturated" is handled. That's what this node is for.

What it's for

Color Isolation FX picks a target hue and either keeps only that hue in color while desaturating everything else (Isolate), or does the reverse - desaturates just that hue while leaving the rest of the image alone (Reject). It's a hue-band selection, not a flat-color match, so it responds to how close a pixel's hue is to your target rather than requiring an exact color match - which is what makes it usable on real photographic content instead of flat illustration.

The inputs and outputs that matter

  • image - required IMAGE input.
  • target_color (default #DE827B, a COLOR picker) - the hue you're isolating or rejecting. The RGB value you pick is converted internally to a hue for the comparison.
  • hue_shift (default 0, range −0.5 to 0.5) - nudges the target hue without needing to repick the color.
  • window_function (Gauss or Triangle) - the falloff shape used around the target hue. Gauss gives a smoother, more gradual transition; Triangle a more linear one.
  • hue_width (default 0.07, range 0.001–2) - how wide the hue band is. Narrow catches only near-exact matches; wide sweeps in a broader range of similar colors.
  • curve_steepness (default 0.4, range 0–10) - how hard the transition falls off at the edge of that band.
  • mode (Isolate or Reject) - isolate keeps the target hue colorful and desaturates everything else; reject does the opposite.
  • output_mode (Final Image or Show Mask) - switch to Show Mask to preview exactly which pixels the hue selection is catching, before committing to the final composite. This is the fastest way to dial in hue_width and curve_steepness without guessing.

Output: a single IMAGE.

Installing it

Part of CRT-Nodes' twelve-node CRT/FX category, alongside Contour FX, Arcane Bloom FX, and the rest of the post-processing suite - all bundled in PGCRT's larger CRT-Nodes pack.

ComfyUI Manager - search CRT-Nodes, install, restart.

Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/PGCRT/CRT-Nodes.git
pip install -r requirements.txt

Restart ComfyUI. Color-space math like this leans on opencv-contrib-python and color-matcher from the pack's shared base requirements - nothing to install specifically for this node.

Common issues

  • Nothing looks isolated, or the whole image stays in color - the number one workflow mistake with any selective-color node is dialing hue_width and curve_steepness blind. Flip output_mode to Show Mask first, confirm the mask is actually catching your target object and nothing else, then switch back to Final Image.
  • Isolation catches too much or bleeds into nearby colors - narrow hue_width down, or raise curve_steepness for a sharper cutoff at the band edge.
  • Target color picked from a reference image doesn't match what gets isolated - remember target_color is a hue selection, not an exact RGB match; lighting and saturation differences between your reference and the actual pixels in your image shift the apparent hue. Use hue_shift to compensate rather than repicking the color repeatedly.
  • Effect looks harsh with a hard edge between color and gray - that's window_function set to Triangle with a low hue_width; switch to Gauss for a softer falloff.
CategoryCRT/FX

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
target_colorCOLOR#DE827B
hue_shiftFLOAT0.00-0.5–0.5
window_functionCOMBO2 options: Gauss, Triangle
hue_widthFLOAT0.0700.001–2
curve_steepnessFLOAT0.400–10
modeCOMBO2 options: Isolate, Reject
output_modeCOMBO2 options: Final Image, Show Mask

Outputs (1)

NameTypeDescription
IMAGEIMAGE