Vai al contenuto

Ridimensionamento dell'immagine

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Image scaling)
Un'immagine ingrandita con l'interpolazione del vicino più prossimo (a sinistra) e con l'algoritmo 2×SaI (a destra)

Il ridimensionamento dell'immagine (in inglese image scaling) è, in computer grafica e nell'elaborazione digitale delle immagini, la modifica delle dimensioni di un'immagine digitale. Nella tecnologia video l'ingrandimento è detto anche upscaling ed è una delle fasi principali del post-processing video, perché consente di adattare un segnale a un dispositivo di visualizzazione con una risoluzione diversa.[1]

Le immagini di grafica vettoriale possono essere riprodotte a qualunque risoluzione senza perdita di qualità, perché le primitive geometriche che le compongono vengono ridisegnate mediante trasformazioni geometriche;[2] per le immagini raster occorre invece generare una nuova immagine con un numero maggiore o minore di pixel, ricavandone i valori per interpolazione da quelli dell'immagine originale.[3] Dal punto di vista dell'elaborazione numerica dei segnali, il ridimensionamento di un'immagine raster è un caso bidimensionale di conversione della frequenza di campionamento di un segnale discreto.

Aspetti matematici

[modifica | modifica wikitesto]

Il ridimensionamento può essere interpretato come un ricampionamento, cioè come la ricostruzione di un segnale continuo a partire dai campioni dell'immagine originale e il suo successivo campionamento sulla nuova griglia di pixel.[3] Secondo il teorema del campionamento di Nyquist-Shannon, la riduzione di un'immagine può avvenire senza aliasing solo dopo l'applicazione di un filtro passa basso bidimensionale (filtro anti-aliasing), che limita il contenuto dell'immagine all'informazione rappresentabile dall'immagine più piccola; nell'ingrandimento la stessa funzione è svolta dal filtro di ricostruzione.

Un approccio più complesso all'ingrandimento tratta il problema come un problema inverso: si cerca un'immagine plausibile che, una volta ridotta, risulti simile all'immagine di partenza. A questo scopo sono state applicate tecniche di ottimizzazione con termini di regolarizzazione[4] e metodi di apprendimento automatico basati su esempi.[5]

Interpolazione del vicino più prossimo

[modifica | modifica wikitesto]
Immagine di partenza
La stessa immagine raddoppiata con l'interpolazione del vicino più prossimo

Il metodo più semplice è l'interpolazione del vicino più prossimo (nearest-neighbor interpolation), che assegna a ogni pixel dell'immagine di destinazione il valore del pixel più vicino dell'immagine di origine: nell'ingrandimento ogni pixel viene quindi replicato più volte con lo stesso colore.[3] Il risultato conserva i dettagli netti, ma presenta una caratteristica scalettatura dei contorni obliqui: nell'esempio a lato le linee diagonali della «W» assumono la tipica forma «a gradini».[6] È anche il modo più semplice di ingrandire la pixel art con fattori di scala interi.[6]

Interpolazione bilineare e bicubica

[modifica | modifica wikitesto]
Ingrandimento con l'interpolazione bilineare
Ingrandimento con l'interpolazione bicubica

L'interpolazione bilineare calcola i valori dei nuovi pixel interpolando linearmente, nelle due direzioni, quelli dei pixel vicini, e introduce così transizioni continue anche dove l'originale presenta transizioni nette: il metodo è adatto alle immagini a toni continui, come le fotografie, ma ammorbidisce i contorni e può creare colori assenti nell'originale, come il grigio tra un'area bianca e una nera.[6] L'interpolazione bicubica, basata sulla convoluzione cubica, offre risultati migliori a fronte di un maggiore costo computazionale.[7][3]

Ricampionamento sinc e di Lanczos

[modifica | modifica wikitesto]

In teoria il ricampionamento basato sulla funzione sinc fornisce la ricostruzione esatta di un segnale a banda perfettamente limitata, ma le ipotesi su cui si fonda non sono soddisfatte dalle immagini digitali reali e il suo supporto infinito lo rende inapplicabile nella pratica; se ne usano perciò versioni troncate mediante una funzione finestra.[3] Tra queste il ricampionamento di Lanczos usa come finestra la stessa funzione sinc dilatata.[8]

Campionamento a riquadro

[modifica | modifica wikitesto]

I metodi bilineare, bicubico e simili campionano un numero fisso di pixel: quando la riduzione supera una certa soglia, ad esempio quando l'immagine viene ridotta a meno della metà, finiscono per campionare pixel non adiacenti, con perdita di informazione e risultati grossolani. Il campionamento a riquadro (box sampling) risolve il problema considerando ogni pixel di destinazione come un riquadro sovrapposto all'immagine originale e calcolando la media di tutti i pixel che vi ricadono, in modo che ogni pixel dell'originale contribuisca al risultato.

Un'altra soluzione al problema della riduzione è l'uso delle mipmap, insiemi di copie dell'immagine precalcolate a risoluzioni progressivamente dimezzate: per ridurre l'immagine si parte dalla copia immediatamente più grande della dimensione desiderata, così da non scendere sotto la soglia utile dell'interpolazione bilineare. Il metodo è veloce, ma richiede un terzo di memoria in più rispetto all'immagine originale.[9]

Metodi basati sulla trasformata di Fourier

[modifica | modifica wikitesto]

L'interpolazione basata sulla trasformata di Fourier aggiunge componenti nulle nel dominio della frequenza; il metodo conserva bene i dettagli, ma produce artefatti di ringing (fenomeno di Gibbs) e uno sconfinamento circolare del contenuto da un bordo all'altro dell'immagine.

Interpolazione guidata dai contorni

[modifica | modifica wikitesto]

Gli algoritmi di interpolazione guidata dai contorni (edge-directed interpolation) mirano a preservare i contorni dell'immagine, evitando gli artefatti a gradini prodotti da altri metodi. Tra questi figurano la new edge-directed interpolation (NEDI),[10] ledge-guided image interpolation (EGII),[11] literative curvature-based interpolation (ICBI)[12] e la directional cubic convolution interpolation (DCCI).[13] Uno studio del 2013 ne ha confrontato le prestazioni con quelle dell'interpolazione bilineare e bicubica.[14]

Algoritmi per la pixel art

[modifica | modifica wikitesto]
Ingrandimento con l'algoritmo hq2x

Per ingrandire grafica a bassa risoluzione o con pochi colori si ottengono risultati migliori con algoritmi specifici, come hqx di Maxim Stepin, EPX, Eagle, 2×SaI o xBR, che producono contorni netti mantenendo un elevato livello di dettaglio.[6]

Vettorializzazione

[modifica | modifica wikitesto]

La vettorializzazione segue un approccio diverso: l'immagine viene convertita in una rappresentazione vettoriale, indipendente dalla risoluzione, che può poi essere riprodotta a qualunque dimensione. Per la pixel art sono stati proposti algoritmi di vettorializzazione specifici, i cui risultati sono stati confrontati con quelli di strumenti di uso generale come Live Trace di Adobe Illustrator.[2]

Reti neurali convoluzionali

[modifica | modifica wikitesto]
Particolare di Fosforo ed Espero di Evelyn De Morgan ingrandito del 200% con waifu2x, con riduzione del rumore

Per immagini più complesse, come fotografie e opere d'arte, si impiegano metodi di apprendimento profondo basati su reti neurali convoluzionali, come SRCNN.[5] Da SRCNN ha preso spunto waifu2x, un programma nato per ingrandire le illustrazioni in stile anime e poi esteso alle fotografie, che consente anche la riduzione del rumore.[15]

Gli strumenti di ingrandimento basati sull'intelligenza artificiale devono ricostruire dettagli assenti nell'originale e possono quindi introdurre artefatti fuorvianti. Nel 2025, ad esempio, una fotografia a bassa risoluzione di Donald Trump ingrandita con uno di questi strumenti fu diffusa su X come presunta prova di anomalie sul volto del presidente statunitense; secondo gli esperti le anomalie erano invece dovute alla distorsione introdotta dall'elaborazione.[16]

Il ridimensionamento delle immagini è impiegato, tra l'altro, nei programmi di grafica, nei visualizzatori di immagini, nello zoom digitale, nella creazione delle miniature e nella riproduzione delle immagini su schermo o in stampa. Anche i browser ridimensionano le immagini delle pagine web: secondo un'analisi condotta con lo strumento ResampleScope, alcune versioni di Firefox e Opera usavano l'interpolazione lineare anche per le riduzioni, metodo poco adatto a fattori di scala elevati, mentre altre versioni di Firefox e Chrome adottavano per le riduzioni un filtro di Lanczos a tre lobi.[17]

Nella riproduzione video il ridimensionamento serve ad adattare il segnale a sistemi di visualizzazione con risoluzioni diverse, ad esempio per riprodurre su un televisore ad alta definizione un contenuto a definizione standard. Il nucleo di uno scaler video è una funzione di interpolazione: le più comuni sono quelle bilineare, bicubica, spline, basata sulla trasformata discreta del coseno e gaussiana, mentre gli scaler di fascia alta usano interpolatori non lineari basati su modelli dell'immagine.[1]

La grafica in pixel art è di solito a bassa risoluzione e si basa sul posizionamento accurato dei singoli pixel, con una tavolozza di colori limitata, perciò il suo ridimensionamento è particolarmente difficile: l'interpolazione del vicino più prossimo produce contorni a gradini, mentre i metodi bilineare e bicubico sfocano i bordi. Gli algoritmi specifici per la pixel art sono stati sviluppati soprattutto per i videogiochi eseguiti negli emulatori, dove la visualizzazione in rapporto 1:1 risulterebbe troppo piccola sugli schermi moderni.[6]

Ridimensionamento in tempo reale

[modifica | modifica wikitesto]

Diverse aziende hanno sviluppato tecniche per ingrandire in tempo reale i fotogrammi dei videogiochi. Il DLSS di NVIDIA usa una rete neurale addestrata a generare pixel aggiuntivi, consentendo alla GPU di produrre la risoluzione piena dello schermo con una maggiore frequenza dei fotogrammi.[18] La prima versione di FidelityFX Super Resolution (FSR) di AMD, introdotta nel 2021, è invece un algoritmo di ingrandimento spaziale ottimizzato a mano che elabora il solo fotogramma corrente, senza usare la storia dei fotogrammi o i vettori di movimento; le versioni successive adottano un approccio temporale.[19] Tra le altre tecnologie figurano XeSS di Intel, che sostituisce l'antialiasing temporale con una rete neurale,[20] e NVIDIA Image Scaling (NIS), che esegue in un unico passaggio uno scaling direzionale e un filtro di nitidezza.[21]

  1. 1 2 Malepati
  2. 1 2 (EN) Johannes Kopf e Dani Lischinski, Depixelizing pixel art, in ACM Transactions on Graphics, vol. 30, n. 4, 2011, pp. 99:1-99:8, DOI:10.1145/2010324.1964994.
  3. 1 2 3 4 5 (EN) Philippe Thévenaz, Thierry Blu e Michael Unser, Interpolation revisited, in IEEE Transactions on Medical Imaging, vol. 19, n. 7, 2000, pp. 739-758, DOI:10.1109/42.875199.
  4. ↑ (EN) Sung Cheol Park, Min Kyu Park e Moon Gi Kang, Super-resolution image reconstruction: a technical overview, in IEEE Signal Processing Magazine, vol. 20, n. 3, 2003, pp. 21-36, DOI:10.1109/MSP.2003.1203207.
  5. 1 2 (EN) Chao Dong, Chen Change Loy, Kaiming He e Xiaoou Tang, Image Super-Resolution Using Deep Convolutional Networks, in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 38, n. 2, 2016, pp. 295-307, DOI:10.1109/TPAMI.2015.2439281.
  6. 1 2 3 4 5 (EN) Nick Berry, Pixel Scalers, su DataGenetics, 16 dicembre 2013. URL consultato il 27 ottobre 2026.
  7. ↑ (EN) Robert G. Keys, Cubic convolution interpolation for digital image processing, in IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 29, n. 6, 1981, pp. 1153-1160, DOI:10.1109/TASSP.1981.1163711.
  8. ↑ (EN) Claude E. Duchon, Lanczos Filtering in One and Two Dimensions, in Journal of Applied Meteorology, vol. 18, n. 8, 1979, pp. 1016-1022, DOI:10.1175/1520-0450(1979)018<1016:LFIOAT>2.0.CO;2.
  9. ↑ (EN) Lance Williams, Pyramidal parametrics, in ACM SIGGRAPH Computer Graphics, vol. 17, n. 3, 1983, pp. 1-11, DOI:10.1145/964967.801126.
  10. ↑ (EN) Xin Li e Michael T. Orchard, New edge-directed interpolation, in IEEE Transactions on Image Processing, vol. 10, n. 10, 2001, pp. 1521-1527, DOI:10.1109/83.951537.
  11. ↑ (EN) Lei Zhang e Xiaolin Wu, An edge-guided image interpolation algorithm via directional filtering and data fusion, in IEEE Transactions on Image Processing, vol. 15, n. 8, 2006, pp. 2226-2238, DOI:10.1109/TIP.2006.877407.
  12. ↑ (EN) Andrea Giachetti e Nicola Asuni, Real-Time Artifact-Free Image Upscaling, in IEEE Transactions on Image Processing, vol. 20, n. 10, 2011, pp. 2760-2768, DOI:10.1109/TIP.2011.2136352.
  13. ↑ (EN) Dengwen Zhou, Xiaoliu Shen e Weiming Dong, Image zooming using directional cubic convolution interpolation, in IET Image Processing, vol. 6, n. 6, 2012, pp. 627-634, DOI:10.1049/iet-ipr.2011.0534.
  14. ↑ (EN) Shaode Yu, Qingsong Zhu, Shibin Wu e Yaoqin Xie, Performance Evaluation of Edge-Directed Interpolation Methods for Images, in arXiv, 2013.
  15. ↑ (EN) nagadomi, waifu2x, su GitHub. URL consultato il 27 ottobre 2026.
  16. ↑ (EN) Matt Growcoot, Trump Photo Shows The Perils of AI Upscaling Tools, in PetaPixel, 5 settembre 2025. URL consultato il 27 ottobre 2026.
  17. ↑ (EN) Jason Summers, How web browsers resize images, su Entropymine. URL consultato il 27 ottobre 2026.
  18. ↑ (EN) Andrew Edelsten, NVIDIA DLSS: Your Questions, Answered, su NVIDIA, 15 febbraio 2019. URL consultato il 27 ottobre 2026.
  19. ↑ (EN) AMD FidelityFX Super Resolution 1 (FSR 1), su AMD GPUOpen. URL consultato il 27 ottobre 2026.
  20. ↑ (EN) Intel XeSS Super Resolution (XeSS-SR) Developer Guide 2.0, su Intel. URL consultato il 27 ottobre 2026.
  21. ↑ (EN) Jacob Roach, What is Nvidia Image Scaling? How to use the upscaling feature, in Digital Trends, 16 novembre 2021. URL consultato il 27 ottobre 2026.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica