Super Resolution
La super-risoluzione ricostruisce un’immagine a risoluzione più alta partendo da una a bassa risoluzione, prevedendo dettagli che l’interpolazione non può recuperare. Modelli e codice.
La super-risoluzione (SR) è una famiglia di tecniche di visione artificiale che ricostruiscono un’immagine o un video a risoluzione più alta a partire da un input a risoluzione inferiore. I metodi classici di ingrandimento, come l’interpolazione bicubica, si limitano a distribuire i pixel esistenti su una griglia più ampia, rendendo sfumati i bordi e sfocate le texture fini. Un modello SR addestrato prevede i dettagli mancanti ad alta frequenza, come bordi netti, tratti di testo e texture di tessuti o fogliame, sulla base di schemi appresi da coppie di immagini a bassa e alta risoluzione. La super-risoluzione di singole immagini (SISR) usa una sola immagine, mentre quella video si avvale anche dei fotogrammi vicini, ognuno dei quali contiene informazioni leggermente diverse sulla stessa scena.
Come funziona la super-risoluzione#
La super-risoluzione è un problema mal posto: molte immagini ad alta risoluzione diverse si riducono alla stessa immagine a bassa risoluzione, quindi il modello deve scegliere la risposta più plausibile in base a ciò che ha appreso sulle immagini naturali. Le coppie di addestramento si ottengono degradando immagini ad alta risoluzione con sfocatura, ridimensionamento a fattori come 2× o 4×, rumore e compressione. Il modello di degradazione determina quali input reali la rete è in grado di gestire; Real-ESRGAN viene addestrato con degradazioni concatenate casualmente, così da poter ripristinare foto e video reali oltre alle immagini ridimensionate in modo pulito.
Le architetture si sono evolute seguendo il resto del deep learning. Nel 2014, SRCNN ha dimostrato che una rete neurale convoluzionale (CNN) a tre strati supera i metodi classici. ESPCN esegue le convoluzioni a bassa risoluzione e ingrandisce l’immagine solo alla fine con una convoluzione sub-pixel, che riorganizza i canali in un’immagine più grande, rendendola abbastanza veloce per il video 1080p in tempo reale. EDSR ha impilato numerosi blocchi residui, SwinIR ha costruito il proprio modello con blocchi di Transformer per la visione a finestre scorrevoli, mentre i modelli di diffusione generano dettagli attraverso una denoising iterativa.
La funzione di perdita determina cosa si intende per «migliore». Le perdite sui pixel, come L1 o l’errore quadratico medio, massimizzano la fedeltà all’originale, ma fanno la media delle possibili risposte, producendo un risultato uniforme. SRGAN ha introdotto una perdita percettiva sulle caratteristiche profonde e una perdita avversaria derivata da una rete generativa avversaria (GAN), ottenendo texture nitide e realistiche che potrebbero non corrispondere all’immagine reale pixel per pixel. Ciò comporta un rischio in ambito medico e nelle immagini forensi, dove un dettaglio inventato può essere scambiato per una prova.
Misurare la super-risoluzione#
La fedeltà si misura con il rapporto segnale/rumore di picco (PSNR), una misura logaritmica in decibel dell’errore quadratico medio, e con l’indice di similarità strutturale (SSIM). Le metriche percettive come LPIPS confrontano le caratteristiche profonde e rispecchiano più da vicino i giudizi umani sul realismo. Il confronto seguente ridimensiona un’immagine di 4× e la ricostruisce con l’interpolazione bicubica e con un modello ESPCN preaddestrato di OpenCV:
import urllib.request
import cv2 # cv2.dnn_superres requires: pip install opencv-contrib-python
# Download a pretrained 4x ESPCN model and a test image cropped to a multiple of 4
urllib.request.urlretrieve("https://github.com/fannymonori/TF-ESPCN/raw/master/export/ESPCN_x4.pb", "ESPCN_x4.pb")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
original = cv2.imread("bus.jpg")[:1080, :808]
# Simulate a low-resolution capture by shrinking the image 4x
low_res = cv2.resize(original, (202, 270), interpolation=cv2.INTER_CUBIC)
# Upscale 4x with bicubic interpolation and with the learned ESPCN model
bicubic = cv2.resize(low_res, (808, 1080), interpolation=cv2.INTER_CUBIC)
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("ESPCN_x4.pb")
sr.setModel("espcn", 4)
espcn = sr.upsample(low_res)
# Higher PSNR means the reconstruction is closer to the original image
print(f"Bicubic: {cv2.PSNR(original, bicubic):.2f} dB, ESPCN: {cv2.PSNR(original, espcn):.2f} dB")Stampa Bicubic: 19.51 dB, ESPCN: 20.52 dB. Il guadagno di 1 dB corrisponde a un errore quadratico medio inferiore di circa il 21%, con un file del modello di circa 100 KB.
Super-risoluzione e termini correlati#
- Ripristino delle immagini: ambito più ampio che consiste nel recuperare un’immagine pulita a partire da una degradata; comprende la rimozione del rumore, la deblur e la rimozione degli artefatti di compressione. La super-risoluzione è l’attività di ripristino che aumenta anche il numero di pixel, e i modelli moderni spesso gestiscono più degradazioni contemporaneamente.
- Inpainting delle immagini: riempie le regioni mancanti o mascherate, mentre la super-risoluzione aggiunge dettagli in tutta un’immagine completa ma grossolana.
- Interpolazione dei fotogrammi: aumenta la risoluzione temporale generando fotogrammi tra quelli esistenti, l’equivalente della super-risoluzione spaziale sull’asse temporale.
- IA generativa: i modelli testo-immagine creano immagini a partire da prompt. La super-risoluzione è condizionata da un’immagine di input e deve restare fedele al suo contenuto; molti generatori di immagini usano un upscaler basato sulla diffusione come fase finale.
Applicazioni nel mondo reale#
- Gaming: NVIDIA DLSS esegue il rendering dei fotogrammi a risoluzione inferiore e li ingrandisce con una rete neurale, aumentando la frequenza dei fotogrammi con una qualità visiva simile.
- Streaming video e archivi: emittenti e restauratori cinematografici ingrandiscono filmati a definizione standard e d’archivio per schermi HD e 4K.
- Analisi delle immagini satellitari: gli analisti rendono più nitide le immagini a basso costo per mappare edifici, strade e veicoli.
- Analisi delle immagini mediche: sistemi di ricerca ricostruiscono immagini MRI ad alta risoluzione da acquisizioni più rapide e a risoluzione inferiore, riducendo il tempo che il paziente trascorre nello scanner.
La super-risoluzione funge anche da fase di pre-elaborazione per rilevare oggetti di piccole dimensioni in sorgenti a bassa risoluzione. Ultralytics YOLO26 ridimensiona ogni input alla dimensione specificata da imgsz, pari a 640 pixel per impostazione predefinita, usando l'interpolazione bilineare, quindi un fotogramma acquisito da una telecamera a 320×240 viene ingrandito di 2× prima del rilevamento; un modello di super-risoluzione 2×, al posto di tale interpolazione, fornisce al rilevatore bordi ricostruiti per oggetti piccoli e distanti, come volti, targhe e veicoli nelle immagini aeree.










