Strapazziamo le immagini… La matematica nascosta nella manipolazione di immagini digitali. Ingrandimento. Algoritmi di interpolazione. L. Lotti Montevarchi, 20 Marzo 2004
Cosa è un’immagine digitale? Un immagine digitale è composta da una matrice m*n pixel. Se l’immagine è a colori ciascun elemento della matrice contiene 3 numeri che indicano il contenuto di rosso,verde,blu di ciascun pixel. I valori numerici assunti dagli elementi di queste matrici sono numeri interi in [0,255].
Ingrandimento di immagini Supponiamo di volere ingrandire di 2 volte l’immagine accanto. Si tratta di un’immagine quadrata in formato bmp di 200 pixel di lato.
Ingrandimento di immagini
Ingrandimento di immagini Per ingrandire un’immagine si possono usare vari programmi: da Paint a Photoshop. Qual è la differenza? Che tipi di algoritmi usano?
Ingrandire un’immagine Per ingrandire un’immagine occorre aumentare il numero di pixel dell’immagine stessa. E’ necessario ricostruire i pixel intermedi. Come è possibile? Vengono usate tecniche di interpolazione.
Gli algoritmi usati Semplice duplicazione dei pixel Interpolazione bilineare composita Spline quadratiche Spline cubiche
Duplicazione dei pixel L’algoritmo si basa sulla semplice duplicazione dei pixel.
Interpolazione bilineare Il valore dei pixel mancanti è ottenuto facendo una media dei pixel già presenti
Interpolazione mediante funzioni spline. L’uso di funzioni polinomiali di ordine n-esimo per interpolare n+1 punti noti in alcuni casi fornisce dei risultati inadeguati. Un approccio alternativo consiste nell’interpolare con diverse polinomiali di ordine inferiore alcuni sottoinsiemi dei punti dati. Le polinomiali così ottenute vengono dette “funzioni Spline”.
Definizione di funzioni Spline. Siano xi , per i = 0,…..,n, n + 1 nodi distinti e ordinati sull'intervallo [a; b], con a = x0 < x1 < ……… < xn = b. La funzione sm : [a; b] → R è una funzione spline di grado m relativa ai nodi xi se: sm(x) per x Є [xi-1; xi], i = 1, …., n, é un polinomio di grado m. La funzione sm è continua nell’intervallo [a; b] insieme alle sue derivate fino all'ordine m - 1. La spline s1 è una funzione lineare a tratti continua. La spline più usata è la spline cubica s3.
Perché le Spline? Le funzioni polinomiali interpolanti di ordine elevato tendano a oscillare in modo evidente in prossimità di una brusca variazione. Invece le funzioni Spline, pur collegando tutti i punti, riducono al minimo le oscillazioni perché le variazioni si limitano a quelle del terzo ordine e quindi approssimano meglio l’andamento di funzioni caratterizzate da variazioni ampie in una regione ristretta.
Spline lineari La funzione più semplice che permette di collegare due punti è una retta. Tale tecnica di interpolazione è uguale all’interpolazione lineare.
Spline quadratiche L’espressione generale delle funzioni polinomiali del secondo ordine è: f i (x) = a i x 2 + b i x + c i Per i = 0, 1 , 2, …… n punti noti ci sono n intervalli e 3 n costanti incognite (a, b, c). Le condizioni per determinarle sono: 1) i valori della funzione devono essere uguali in corrispondenza dei nodi interni. f (x i - 1) = a i -1 x i - 1 2 + b i -1 x i - 1 + c i - 1 f (x i - 1) = a i x 2 i - 1 + b i x i - 1 + c i i = 1 …… n. tali equazioni forniscono 2 n – 2 condizioni
Spline quadratiche 2) la prima e l’ultima funzione devono passare per i corrispondenti punti esterni. f (x 0 ) = a 1 x 0 2 + b 1 x 0 + c 1 f (x n ) = a n x n 2 + b n x n + c n tali equazioni forniscono 2 n condizioni. 3) le derivate prime di ciascuna coppia di Spline adiacenti devono essere uguali nei nodi corrispondenti: 2 a i - 1 x i + b i - 1 = 2 a i x i + b i i = 2 …… n. 4) La derivata seconda sia zero in corrispondenza del primo punto.
Spline cubiche I nodi delimitanti ogni intervallo vengono connessi mediante funzioni polinomiale del terzo ordine. Nel caso si abbiano n+1 punti risulta necessario calcolare 4n incognite e quindi si devono imporre 4n condizioni. I valori assunti dalle funzioni devono essere identici in corrispondenza dei nodi interni; questo ci fornisce 2n – 2 condizioni. La prima e l’ultima funzione devono passare per i relativi nodi esterni; questo ci fornisce altre 2 condizioni. Le derivate prime di Spline adiacenti devono essere uguali in corrispondenza dei nodi in comune; questo ci fornisce n-1 condizioni. Le derivate seconde di Spline adiacenti devono essere uguali in corrispondenza dei nodi in comune; questo ci fornisce n-1 condizioni. Le derivate seconde, infine, devono essere nulle in corrispondenza dei nodi esterni; questo ci fornisce altre 2 condizioni.
Esempi Immagine di partenza: Duplicazione
Esempi Immagine di partenza: Bilineare
Esempi Immagine di partenza Spline quadratiche
Esempi Immagine di partenza Spline cubiche
Esempi a confronto Duplicazione Spline quadratiche
Gli algoritmi usati Paint usa la duplicazione dei pixel Photoshop usa la duplicazione, l’interpolazione lineare e le spline cubiche.
Photoshop Duplicazione Bilineare Bicubica
Come usare Excel… E’ possibile usare Excel per capire come agiscono questi algoritmi. Si tratta di uno strumento con valore puramente didattico in questo ambito (cfr. con Matlab). Consideriamo un’immagine nei toni del grigio delle dimensioni di 5x5 pixel.
Come usare Excel… L’immagine viene rappresentata tramite una griglia quadrata di 5 caselle di lato contenenti numeri compresi fra lo 0 (nero) e 255 (il bianco).