Jitter Image
Sub-pixel nudges for DIY supersampling
- images
- IMAGE
This node borrows a trick straight out of real-time rendering: temporal anti-aliasing (TAA) works by rendering the same scene multiple times with a tiny sub-pixel camera offset each frame, then averaging the results back together - noise and aliasing cancel out across the samples while the actual image content stays put. Jitter Image, paired with UnJitterImage, brings that same pattern into ComfyUI as a manual, three-node building block rather than something baked into a renderer.
What it's for
On its own, this node just shifts an image (or a batch of images) by a small random sub-pixel offset each time. That's not useful in isolation - the value shows up when you jitter, run some operation, then use UnJitterImage to shift everything back into alignment before averaging the results together (the README lists a third node in this same family, BatchAverageUnJittered, for exactly that last step). The net effect is a poor-man's supersampling pass: instead of rendering natively at a higher resolution, you generate several slightly-offset samples at your normal resolution and blend them, which softens aliasing and can reduce fine noise without the VRAM cost of actually upscaling.
Inputs and outputs
images(IMAGE) - the image or batch you want jittered. If you feed in a batch, each frame typically gets its own random offset, which is the point if you're building up multiple samples to average later.jitter_scale(default 1, minimum 0.1) - controls how large the sub-pixel offset is. Higher values push the image further off its original position per sample.
Output is a single IMAGE - the shifted version. Note that this node doesn't remember or output the offset it applied; UnJitterImage has to be told the same jitter_scale to reverse it correctly (it doesn't read the exact offset back from this node, it recomputes a matching one), so keep that value consistent between the two.
Installing it
ComfyUI Manager: search "ComfyUI-Image-Filters," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/spacepxl/ComfyUI-Image-Filters
pip install -r requirements.txt (or install.bat on Windows), restart ComfyUI. Pure image-tensor operation, no weights to download.
Same OpenCV note applies here as everywhere in this pack: it depends on opencv-contrib-python, and if a different node pack already installed a conflicting opencv build, you'll see cv2-related import errors on startup for the whole repo, not just this node. Run import_error_install.bat to reinstall the single correct variant instead of fighting version conflicts by hand.
Common issues
The most common confusion is expecting this single node to do something visible or useful by itself - a lone jittered image just looks like a slightly shifted copy of the original, which isn't the point. This is a three-node pattern (JitterImage → your processing step → UnJitterImage → average), and skipping any part of that chain means you're just looking at a shifted image with no antialiasing benefit. The other thing to watch: if you set jitter_scale differently between the jitter and un-jitter steps, the realignment will be off, and averaging misaligned frames produces a blurry, ghosted result rather than a clean antialiased one - keep that value identical on both ends of the pair.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| jitter_scale | FLOAT | 1.0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |