Saturation
The one saturation knob you'll actually use
- images
- IMAGE
Diffusion models have a habit of shipping colors that are either washed-out gray or radioactive neon, depending on the checkpoint and sampler. This node is the middle ground: one multiplier that takes your image from full grayscale to double-saturated, with a sane default at the "do nothing" spot. It wraps Kornia's adjust_saturation, and it's about as straightforward as a color node gets.
How it works
The image goes into HSV color space, and the saturation channel gets multiplied by your factor:
s_out = clamp(s * factor, 0, 1)
factor = 1 is identity - the image passes through unchanged. Below 1 it drains toward gray, and factor = 0 produces a proper black-and-white image with luminance intact. Above 1 it pumps the colors up. Because saturation is clamped at 1, you can't create out-of-gamut colors - the math is safe, just occasionally flat.
The inputs
- images - a ComfyUI IMAGE, typically off the VAE or after your upscale.
- factor (0–2, default 1) - the only dial. 1 = no change; 0 = grayscale; 1.2–1.5 is the "punch it up" zone.
Output is an IMAGE at the same resolution. That's it. If you want a clean grayscale version of a render for a style transfer or a mask workflow, dropping this to 0 is a nicer result than a blind RGB average.
Installing it
One of seven nodes in the ImageProcessing pack by bvhari, all of them thin wrappers over the Kornia library:
cd ComfyUI/custom_nodes
git clone https://github.com/bvhari/ComfyUI_ImageProcessing
# restart ComfyUI - kornia auto-installs from requirements.txt
Or ComfyUI Manager → search "ImageProcessing" → Install → restart. It shows up under the ImageProcessing category, no models or keys involved, and it runs on CPU like the rest of the pack - instant on a single image.
When it bites
Two things to keep in mind. First, the clamp works both ways: cranking the factor to 2 doesn't give you 2× color - anything already near full saturation just stays there, so heavily-colored regions can flatten into poster-like blobs instead of getting punchier. If an image already looks neon, desaturating slightly (0.85–0.95) is often the better edit than leaving it. Second, it's global - there's no mask input, so you can't boost just the subject's clothing. And while factor = 0 gives grayscale, note this operates on saturation only; if you want a moodier black-and-white with contrast shaping, pair it with the pack's Gamma node. Missing kornia at startup? pip install kornia and restart.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| factor | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |