Nodes/Jovi_Measure/BLUR EFFECT (JOV_MEASURE)
ComfyUI Node

BLUR EFFECT (JOV_MEASURE)

The JOVI blur detector

By Amorano·Created 2 years ago·Updated about a year ago· 2
BLUR EFFECT (JOV_MEASURE)
  • image
  • FLOAT
h_size11

Every so often you generate a batch and a few come out mushy - the classic "faces come out blurry" situation. You could eyeball every PNG, or you could make the graph tell you. That's what BLUR EFFECT (JOV_MEASURE) is for: feed it any image, and it hands back a single FLOAT between 0 and 1 telling you how blurry the thing is. 0 means sharp, 1 means maximal blur. That's the whole job, and it's genuinely useful once you have it.

It's one of two nodes in Jovi_Measure, a tiny metrics pack by Alexander Morano (Joviex on Reddit) - the same author behind the much bigger Jovimetrix image-toolbox pack. Where Jovimetrix is a Swiss Army knife of effects, Jovi_Measure is the boring little sibling: no effects, no model downloads, no API keys. Pure computation. It's the pack you install when you want to stop feeling like your output is soft and start knowing it.

Why you'd reach for it

The real payoff is automation. If you run batch generations, a blur score lets you build a quality gate: pipe the output through this node, compare the FLOAT against a threshold, and route the losers back into a re-roll (or a higher-denoise pass) while the winners go to upscale. Denoise too high, a lazy sampler, an upscaler that blurs instead of sharpening - they all push this score up. You can also use it the lazy way, comparing two upscalers or two CFG settings by number instead of squinting at side-by-sides.

How it works

Under the hood it's scikit-image's blur_effect, a "no-reference" perceptual blur metric - no sharp original needed for comparison. The trick is self-comparison: it re-blurs your image with a uniform filter, then measures how different the original is from its own re-blurred version. A sharp image loses its edges the moment you blur it, so the difference is big and the score is low. An image that's already mush barely changes, so the difference is small and the score climbs toward 1. It computes this per color channel and averages them.

The inputs that matter

There are only two, and you'll only ever touch one.

  • image (required) - RGBA, RGB, or grayscale. Anything with pixels works.
  • h_size (INT, default 11) - the size of the re-blurring filter. It controls how big a window is used to build the "reference" blur. The default is fine for almost everything; if small amounts of softness aren't registering, bump it up. Don't overthink it.

Output: a FLOAT, 0→1.0, one value per image in the batch. One thing to know: since v1.1.0 all Jovi_Measure outputs come out as lists - feed in one image and you still get a single-element list. If the node you're wiring into doesn't accept lists, you'll need a list-aware connection or an unwrap step.

How to install it

The usual two ways. If you have ComfyUI Manager, search "Jovi Measure" and install from its database. Or, manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Amorano/Jovi_Measure
cd Jovi_Measure
pip install -r requirements.txt   # on Windows: .\python_embed\python.exe -s -m pip install -r requirements.txt

Restart ComfyUI and it appears under the JOVI_MEASURE 📐 category in your node menu. No weights to download - it's numpy and scikit-image doing the math, and that's the one real gotcha: scikit-image is a chunky dependency (it drags in scipy), and the pack pins numpy < 2. If another pack on your machine has bumped numpy to 2.x, Jovi_Measure (and the cozy_comfyui core it's built on) can refuse to import. The README's changelog shows the author chasing numpy pins across several releases, so when install goes sideways, check pip show numpy first. The other moving part: cozy_comfyui installs straight from git main, so it shifts whenever the author updates it - normal for his packs, just don't be surprised when an update changes behavior.

CategoryJOV_MEASURE 📐

Inputs (2)

NameTypeDefaultDescription
imageIMAGERGBA, RGB or Grayscale image
h_sizeoptINT11Size of the re-blurring filter.

Outputs (1)

NameTypeDescription
FLOATFLOATThe amount of blurriness (0->1.0) of the input image.