ComfyUI Node

FFT Image

Filter an image in frequency space, not pixel space

By aria1th·Created 3 years ago·Updated 7 months ago· 116
FFT Image
  • image
  • IMAGE
mask_radius50

Most image nodes work directly on pixels - blur this, sharpen that, blend these two. This one takes a genuinely different approach: it converts the image into the frequency domain with a Fast Fourier Transform, masks out a circular region of that frequency spectrum by mask_radius, then transforms it back into a normal image. You're not touching pixels at all until the very last step - you're editing which visual frequencies are allowed to exist, then letting the inverse transform rebuild the picture from what's left.

If that sounds abstract, the intuition is: after an FFT, the center of the spectrum holds the image's broad, low-frequency structure (overall shapes, gradients, color blocks), and the further out from center you go, the higher-frequency the content gets - fine detail, sharp edges, noise, repeating patterns. A circular mask around the center is the classic way to isolate one from the other. That makes this the kind of node you'd reach for to hunt down periodic artifacts (tiling seams, upscaler grid patterns, checkerboard noise) that are obvious in frequency space but hard to spot by eye in the final image, or to build a deliberate blur/sharpen/glitch effect that behaves differently from a normal Gaussian blur node.

The one thing to be honest about

The README ships with essentially zero documentation for this node - no explanation of whether mask_radius zeroes out the frequencies inside the circle (which would strip low-frequency structure and leave a high-pass, edge-heavy result) or outside it (a low-pass blur that keeps broad shapes and discards fine detail). Both are standard FFT masking moves, and nothing in the schema settles which one this does. The honest answer is: try it on a test image at a small mask_radius first and look at the result - you'll know within one run which side of the mask you're on.

Inputs and outputs

  • image - the IMAGE to transform.
  • mask_radius (default 50) - the size, in pixels, of the circular cutoff in frequency space. Bigger radius, bigger swing in how much of the spectrum gets zeroed.

Output is a single IMAGE, reconstructed from the masked spectrum.

Installing ComfyUI-LogicUtils

ComfyUI Manager: Install Custom Nodes → search "ComfyUI-LogicUtils" → install → restart. Or:

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

Restart ComfyUI. FFT is just math on tensors - no models to download, no extra Python packages beyond what ComfyUI already ships with.

Worth knowing

This is one of the more niche, "I wrote this while playing with signal processing" corners of aria1th's LogicUtils pack - a large, loosely-documented grab-bag of utility nodes from the same person who trains Illustrious XL as AngelBottomless, though this repo is unrelated to that work. The README's own words are "proper documentation is being prepared, however there are too many nodes," and this node is a clear example of why: there's no write-up, no example workflow, nothing beyond the node's own input names to go on. Public commits to the pack stopped in January 2026, so treat this as a fixed, unsupported utility rather than something that'll get clarified later - experiment locally rather than waiting on docs that aren't coming.

Categoryimage

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
mask_radiusINT50

Outputs (1)

NameTypeDescription
IMAGEIMAGE