Nodes/Eric_Image_Processing_Nodes/Image Quality Assessment
ComfyUI Node

Image Quality Assessment

Stop eyeballing whether your restoration actually helped

By EricRollei·Created 9 months ago·Updated 8 months ago· 9
Image Quality Assessment
  • processed_image
  • original_image
  • assessed_image
  • quality_report
assessment_typeno_reference
show_detailed_analysistrue
output_metricsfalse
create_comparisonfalse

You just ran an image through Real-ESRGAN, SwinIR, or DiffBIR - did it actually get better? Eyeballing two images side by side is unreliable, especially at typical screen zoom, and this node exists specifically to replace the eyeball test with numbers. Wire it after any of the pack's restoration or enhancement nodes and it'll grade the result instead of just showing it to you.

How it works

It runs in two modes. no_reference scores the processed image on its own - the kind of assessment that has to infer quality from statistical properties of the image itself (sharpness, noise characteristics, blockiness) without knowing what the "correct" answer looks like, because there isn't an original to compare against. full_reference requires the original and compares the two directly, which is the more reliable mode whenever you actually have an unprocessed source to check against - it can measure real differences instead of guessing. both runs the two together. This is the node you put at the end of an experimentation chain when you're trying to decide between two restoration nodes or two parameter settings and want a number instead of a vibe.

The inputs and outputs that matter

  • processed_image - required. The image you're grading.
  • original_image (optional) - needed for full_reference or both; skip it if you're only doing no_reference.
  • assessment_type (optional, default no_reference) - no_reference, full_reference, or both.
  • show_detailed_analysis (optional, default true) - prints the breakdown to console.
  • output_metrics (optional, default false) - overlays the metrics as text directly on the returned image, handy if you're saving outputs for later review and don't want to dig through console logs.
  • create_comparison (optional, default false) - builds a side-by-side comparison image; requires original_image to be wired in.
  • Outputs: assessed_image (the processed image, possibly with the metrics overlay or comparison layout depending on your toggles) and quality_report - the string with the actual numbers.

How to install it

Search Eric_Image_Processing_Nodes in ComfyUI Manager, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Eric_Image_Processing_Nodes
cd Eric_Image_Processing_Nodes
pip install -r requirements.txt

Restart ComfyUI. This is an analysis node, not a pretrained restorer - it needs only the pack's core requirements (numpy, opencv-python, scikit-image, scipy, PyWavelets), so there's nothing to download and it's ready as soon as the pack imports cleanly.

Common issues & troubleshooting

full_reference mode isn't producing anything useful, or errors. Check that original_image is actually wired in - it's optional in the schema because no_reference mode doesn't need it, but full_reference and both silently depend on it.

create_comparison didn't produce a comparison. Same root cause - it needs original_image connected regardless of what assessment_type you picked, since the comparison layout is built from both images.

Numbers don't match what you'd expect from a metric you know (PSNR, SSIM, etc.). The info_schema doesn't specify the exact metrics computed under the hood, and this pack's README doesn't document the assessment internals either - treat the report as this node's own scoring rather than assuming it matches a specific named metric you've seen elsewhere. Use it for relative comparisons (this setting vs. that setting) rather than as an absolute number to quote.

Just want a quick sanity check, not a full report. Leave show_detailed_analysis on and skip output_metrics/create_comparison - console output is faster to read than an image overlay when you're just iterating on settings.

CategoryEric's Image Processing/Analysis

Inputs (6)

NameTypeDefaultDescription
processed_imageIMAGE
original_imageoptIMAGE
assessment_typeoptCOMBOno_referenceType of quality assessment: • no_reference: Analyze processed image only • full_reference: Compare to original • both: Perform both types of assessment
show_detailed_analysisoptBOOLEANtrueShow detailed analysis in console
output_metricsoptBOOLEANfalseOutput metrics as text overlay on image
create_comparisonoptBOOLEANfalseCreate side-by-side comparison image (requires original)

Outputs (2)

NameTypeDescription
assessed_imageIMAGE
quality_reportSTRING