L’interpolazione digitale delle immagini si verifica in tutte le foto digitali che vengono, in un qualche modo,
manipolate, sia che si applichi un riduzione, un ingrandimento o una rimappatura sull’immagine stessa. Il ridimensionamento delle immagini, tanto per fare un esempio, è praticato quando è necessario aumentare o diminuire il numero totale di pixel mentre la rimappatura accade quando è necessario intervenire sulla fotografia per apportare una correzione per la distorsione della lente, un cambio di prospettiva o la rotazione di un’immagine.
L’interpolazione di un’immagine non è univoca ma varia da programma a programma, o meglio da algoritmo ad algoritmo, impiegato per realizzarla. L’interpolazione va, in poche parole, considerata come un’approssimazione dell’immagine originale e, per giungere a quest’approssimazione, esistono differenti strade che possono essere seguite.
Il concetto base dell’interpolazione digitale delle immagini
L’interpolazione funziona utilizzando dati noti per stimare valori in punti sconosciuti . Ad esempio, se si vuole conoscere la temperatura a mezzogiorno ma si conosce solo la temperatura misurata alle 11:00 ed alle 13:00, è possibile stimare il valore a mezzogiorno eseguendo un’interpolazione lineare :
L’interpolazione diviene più complessa (polinomiale)nel caso fosse presente un ulteriore valore di temperatura, per esempio alle 11:30. La seconda interpolazione porta ad un risultato più preciso ma richiede una maggiore potenza di elaborazione.
Nell’ambito dell’interpolazione delle immagini avviene più o meno la stessa cosa cercando, per ogni pixel, di ottenere la migliore approssimazione possibile del colore e dell’intensità leggendo i valori dei pixel limitrofi.
Nel disegno qui sopra l’esempio di un ingrandimento al 183%. Il colore e l’intensità di ogni pixel “blu” viene calcolato facendo una media dei quattro pixel limitrofi ed il risultato è l’immagine interpolata in alto. Al contrario, se non si facesse l’interpolazione, il pixel aggiuntivo blu avrebbe il colore e l’intensità del pixel alla sia sinistra (una specie di copia, insomma) ed il risultato sarebbe l’immagine non interpolata in basso. Come si evince, l’immagine interpolata ha una risoluzione (in termini di dettagli) decisamente superiore.
Ovviamente più l’immagine si allarga, meno preciso sarà il risultato finale.
La Rotazione e l’interpolazione digitale delle immagini
L’interpolazione si verifica anche ogni volta che si ruota o distorce un’immagine.
Una rotazione di 90° non comporta alcun tipo di perdita di dati in quanto i pixel vengono risistemati in uno schema identico a quello originale. Quando però si effettua una rotazione da 45°, per esempio, è necessario “ricreare” il pixel “mancante” tra due ch vengono riposizionati. E questo problema si ha ogni qual volta si effettua una successiva rotazione, il che porta alla perdita di informazione per ogni rotazione che viene effettuata. Ecco perché bisogna evitare di ruotare le foto quando è possibile.
I risultati di cui sopra utilizzano quello che è chiamato un algoritmo “Bicubic” e mostrano alterazioni significative. Si noti la diminuzione complessiva del contrasto con aloni scuri che si vanno a formare vicino ai pixel azzurri (questo perché la media tra azzurro e nero è un azzurro più scuro). Cambiando interpolazione ed impiegando degli algoritmi più evoluti è possibile migliorare il risultato. Vediamo addesso quali sono gli algoritmi più importanti.
Gli Algoritmi di interpolazione digitale delle immagini
Gli algoritmi di interpolazione possono essere raggruppati in due categorie: adattativi e non adattativi. I metodi adattivi cambiano a seconda di ciò che stanno interpolando (spigoli vivi oppure linee morbide), mentre i metodi non-adattivi trattano tutti i pixel allo stesso modo.
Gli algoritmi non adattativi includono: nearest neighbor, bilinear, bicubic, spline, sinc, lanczos ed altri. A seconda della loro complessità, questi algoritmi usano ovunque 0-256 (o più) pixel adiacenti per ottenere l’interpolazione. Più pixel adiacenti vengono inclusi, più accurata sarà l’interpolazione finale, a scapito ovviamente del tempo di elaborazione. Questi algoritmi possono essere utilizzati sia per distorcere che per ridimensionare una foto.
Gli algoritmi adattativi includono molti algoritmi proprietari, inclusi quindi in alcune suite grafiche, come: Qimage, PhotoZoom Pro, Genuine Fractals e altri. Molti di questi algoritmi applicano una versione differente dello stesso algoritmo in funzione dell’area che si sta interpolando, al fine di minimizzare gli artefatti. In pratica l’algoritmo usato su un’area sarà differente da quello impiegato in presenza di un bordo o di una linea. Gli algoritmi adattativi sono progettati principalmente per massimizzare i dettagli privi di artefatti nelle foto ingrandite il che li rende non utilizzabili nell’ambito delle distorsioni o delle rotazioni delle immagini.
L’algoritmo nearest neighbor
L’algoritmo nearest neighbor è l’algoritmo base e richiede minor tempo di elaborazione rispetto a tutti gli altri algoritmi di interpolazione perché considera solo un pixel , il più vicino al punto interpolato. Questo ha l’effetto di rendere “semplice” ogni pixel più grande.
L’algoritmo di interpolazione bilinear
L’algoritmo di interpolazione bilineare considera quattro pixel limitrofi presi da una matrice 3×3 dove il punto centrale è quello da interpolare.
L’algoritmo di interpolazione bicubica
L’algoritmo di interpolazione bicubica va un passo oltre quello bilineare, considerando una matrice 7×7. I pixel che vengono presi in considerazione sono ben 16. Poiché questi pixel sono a varie distanze dal pixel sconosciuto, ai pixel più vicini viene dato un peso maggiore nel calcolo. L’interpolazione bicubica produce immagini notevolmente nitide rispetto ai due metodi precedenti ed è forse la combinazione ideale tra il tempo di elaborazione e qualità finale, tanto che è uno standard in molti programmi di editing di immagini ( tra cui Adobe Photoshop).
Gli algoritmi d’interpolazione complessi: SPLINE e SINC.
Ci sono molti altri interpolatori che prendono in considerazione più pixel circostanti e quindi sono anche molto più avidi di tempo e di potenza computazionale . Questi algoritmi sono chiamati spline e sinc e la loro caratteristica principale è di conservare un maggior numero di informazioni nell’immagine interpolata rispetto agli altri algoritmi elencati prima. Questi due algoritmi sono quindi estremamente utili quando l’immagine richiede più distorsioni o più rotazioni in fasi successive. Tuttavia, per ingrandimenti o per singole rotazioni, questi due algoritmi forniscono un risultato visivamente meno piacevole degli altri.
Gli Artefatti dovuti all’interpolazione
Tutti gli algoritmi di interpolazione non adattativi tentano di trovare un equilibrio ottimale tra tre artefatti indesiderati : aloni sui bordi, sfocature ed aliasing.
Anche gli interpolatori non adattativi più avanzati restituiranno un’immagine dove uno dei tre artefatti è predominante: non esiste un algoritmo in grado di ridurli tutti e tre del medesimo valore.
Gli algoritmi di interpolazione adattativi, invece, possono o non possono produrre gli artefatti elencati sopra, ma possono anche introdurre delle texture estranee all’immagine originale o dei pixel che nulla c’entrano con la stessa immagine.
Anti-Aliasing
L’ anti-aliasing è un processo il cui scopo è minimizzare la comparsa di frastagliature sui bordi diagonali.
Nelle immagini seguenti viene visualizzata la differenza:
L’immagine “aliased” è scalinata, mente nell’immagine anti-aliased la scalinatura viene ammorbidita grazie alla presenza di pixel il cui colore è un mix tra il nero a destra ed il grigio a sinistra. Riportando l’immagine a dimensioni non così ingrandite, la linea derivata dall’immagine di destra sarà molto più piacevole da vedere.
L’anti- aliasing, in pratica, rimuove i bordi frastagliati e fornisce all’immagine dei bordi dall’aspetto più regolare. Questo processo si ottiene considerando per ogni pixel del bordo e per i suoi adiacenti un valore intermedio: in questo modo si va ad aggiungere una sorta di “ombra” al bordo, ombra che, all’occhio umano, renderà più piacevole il bordo stesso. L’anti-aliasing, in pratica, non è un incremento delle informazioni presenti nell’immagini ma al contrario riduce le informazioni stesse.