ComfyUI Node

Image Filters

One node that does brightness, contrast, saturation and sharpness on any IMAGE

By Visionatrix·Created 2 years ago·Updated about a year ago· 3
Image Filters
  • image
  • IMAGE
brightness0.00
contrast1.00
saturation1.00
sharpness1.00
blur0
gaussian_blur0.0
edge_enhance0.00

VixImageFilters is the one node in the ComfyUI-Visionatrix pack that's genuinely useful outside the Visionatrix ecosystem. It takes an image and lets you tune brightness, contrast, saturation, sharpness, blur, Gaussian blur and edge enhancement - all in one node - and hands you the result as an IMAGE. That's it. It's the "give the output a final polish before Save Image" node.

It ships from the Visionatrix repo mostly because the team's flows use it to post-process results, but nothing about it cares about Visionatrix. Wire any IMAGE in - a VAE-decoded latent, an upscaled image, a batch - and it works the same.

The inputs that matter

Seven sliders, and the defaults are all identity (or off):

  • brightness (-1.0 to 1.0, default 0) - additive, not multiplicative. 0 is untouched; positive lifts, negative darkens. Because it's additive on pixel values, pushing it hard clips highlights - that's the one control here that can wreck an image.
  • contrast (-1.0 to 2.0, default 1.0) - multiplicative, so 1.0 is neutral.
  • saturation (0.0 to 5.0, default 1.0) - 1.0 neutral, 0.0 grayscale.
  • sharpness (-5.0 to 5.0, default 1.0) - below 1.0 softens, above 1.0 sharpens.
  • blur (INT, 016) - a plain box-ish blur applied repeatedly, once per step. Keep it small.
  • gaussian_blur (0.01024.0, default 0) - Pillow Gaussian blur radius. If you need one or the other, Gaussian is usually the one you want.
  • edge_enhance (0.01.0, default 0) - the odd one out. It blends in an edge-enhanced version of the image based on this strength, rather than running at a fixed strength.

The single IMAGE output feeds straight into a Save Image node, or back into a model for a second pass. Batches work: images are processed individually and re-stacked, so a whole batch of faces or avatars gets the same treatment.

How it works

Under the hood it's Pillow plus a touch of numpy. Brightness and contrast are applied first in raw pixel space, then saturation, sharpness and blur go through Pillow's ImageEnhance and ImageFilter classes. The edge enhance is the clever bit: it composites an EDGE_ENHANCE_MORE version under a gray mask scaled by the strength, so 0.5 gives you a halfway blend rather than an on/off toggle.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Visionatrix/ComfyUI-Visionatrix

Restart ComfyUI after cloning, or just install "ComfyUI-Visionatrix" from ComfyUI Manager's node search. No models, and the dependencies (torch, pillow, numpy) are already present in a stock ComfyUI.

Gotchas

Nothing exotic here - the traps are the slider semantics. brightness is additive and contrast is multiplicative, so "neutral" is 0 for one and 1.0 for the others; if you twist a slider and see no change, check whether you moved it off its identity value. And remember this is a filter, not a model: sharpness above 1.0 can start ringing on hard edges, and heavy blur is a destroyer, not a fixer. For real sharpening, an upscale model does the job better - this node is for color and tone work, and it's solid at that.

CategoryVisionatrix/Image

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
brightnessFLOAT0.00-1–1
contrastFLOAT1.00-1–2
saturationFLOAT1.000–5
sharpnessFLOAT1.00-5–5
blurINT00–16
gaussian_blurFLOAT0.00–1024
edge_enhanceFLOAT0.000–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE