Image Quality Assessment
Stop eyeballing whether your restoration actually helped
- processed_image
- original_image
- assessed_image
- quality_report
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 forfull_referenceorboth; skip it if you're only doingno_reference.assessment_type(optional, defaultno_reference) -no_reference,full_reference, orboth.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; requiresoriginal_imageto be wired in.- Outputs:
assessed_image(the processed image, possibly with the metrics overlay or comparison layout depending on your toggles) andquality_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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| processed_image | IMAGE | — | |
| original_imageopt | IMAGE | — | |
| assessment_typeopt | COMBO | no_reference | Type of quality assessment: • no_reference: Analyze processed image only • full_reference: Compare to original • both: Perform both types of assessment |
| show_detailed_analysisopt | BOOLEAN | true | Show detailed analysis in console |
| output_metricsopt | BOOLEAN | false | Output metrics as text overlay on image |
| create_comparisonopt | BOOLEAN | false | Create side-by-side comparison image (requires original) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| assessed_image | IMAGE | — |
| quality_report | STRING | — |