Sturiale Alberto Billa Fabrizio Giuffrida Francesco
105
interpolazione di basso ordine per lo zooming Università degli Studi di Catania CdL Magistrale in Informatica Seminario MMO A.A. 2011/2012 Sturiale Alberto Billa Fabrizio Giuffrida Francesco
Sturiale Alberto Billa Fabrizio Giuffrida Francesco
Sturiale Alberto Billa Fabrizio Giuffrida Francesco
Slide 2
Argomenti trattati Tematica del ridimensionamento delle
immagini Tecniche di interpolazione: Nearest Neighbor Bilineare
Bicubica Analisi qualitativa dei risultati ottenuti Misurare la
qualit delle immagini Presentazione dellapplicativo sviluppato e
degli script dimostrativi
Slide 3
Ridimensionare unimmagine La tematica del ridimensionamento
comprende in realt due aspetti: Ingrandimento Riduzione Perch sono
diversi?
Slide 4
Riduzione di unimmagine Partiamo dalla riduzione. In questo
caso il problema consiste nel selezionare alcuni pixel (ovviamente
non a caso!) per effettuare il cosiddetto campionamento
dellimmagine di partenza. In questo modo avremo una riduzione delle
dimensioni dellimmagine. Cosa implica questo processo?
Slide 5
Riduzione di unimmagine Ci che accade la perdita di alcune
informazioni. Vengono selezionati soltanto alcuni pixel, mentre
quelli scartati vengono eliminati, e con essi anche le informazioni
correlate. Si parla di compressione lossy
Slide 6
Ingrandimento di unimmagine Ben diverso il problema relativo
allingrandimento di unimmagine. Se precedentemente il nostro
problema era quello di selezionare delle informazioni, adesso la
tematica diametralmente opposta. Per quale motivo ingrandire
unimmagine pi complesso?
Slide 7
Ingrandimento di unimmagine In questo caso il nostro target di
aumentare le dimensioni di unimmagine. Questo implica
necessariamente un aumento del numero di pixel. Come possiamo
inventare delle informazioni che non conosciamo?
Slide 8
Una base comune La risposta al quesito non banale e varia in
base alla tecnica che si decide di utilizzare. Tuttavia, tutte le
tecniche che coprono questo genere di problematica, trovano una
base comune sulla quale svilupparsi, ovvero la teoria
dellinterpolazione.
Slide 9
Fare delle ipotesi Il concetto di base quello di ipotizzare
quale valore pu assumere il pixel del quale non conosciamo
linformazione relativa alla propria intensit, in modo tale da
riempire gli spazi vuoti che si vengono a creare in seguito
allingrandimento.
Slide 10
Su cosa basarsi? Sappiamo ora in che direzione muoverci, serve
una stima dei valori sconosciuti. Ma in base a cosa? Ci su cui
possiamo basarci sono ovviamente le informazioni a disposizione. Il
modo in cui queste vengono sfruttate, determina lalgoritmo adottato
e la precisione della stima ottenuta.
Slide 11
Due grandi famiglie I tipi di interpolazione per lo zooming di
immagini sono classificabili in due gruppi: Non adattivi (o di
basso livello) Adattivi (o di alto livello) Dove sta la
differenza?
Slide 12
Perch due categorie? I metodi adattivi utilizzano tecniche
diverse a seconda del tipo di regione che stanno interpolando (in
presenza di edge o di aree uniformi). I metodi non adattivi invece
trattano tutti i pixel allo stesso modo. Perch utilizzare dei
metodi di basso livello se ne esistono di migliori?
Slide 13
Laltra faccia della medaglia I metodi non adattivi, trattati in
questo seminario, sebbene risultino meno precisi rispetto allaltra
categoria, hanno dalla loro una complessit computazionale piuttosto
contenuta. Questo aspetto li rende molto utilizzati per
applicazioni senza troppe pretese, come possono esserlo ad esempio
ritoccare una nostra foto utilizzando una delle tante suite
grafiche disponibili in commercio, ma non solo.
Slide 14
Come la vede un matematico Dal punto di vista matematico,
effettuare lo zooming su unimmagine significa trovare una funzione
f che associ per ogni pixel p(x,y) della matrice risultante
(immagine zoomata), il cui valore risulti sconosciuto (?), un
valore I di intensit, in base ai valori dei pixel del suo intorno.
Le caratteristiche di questultimo variano con lalgoritmo
utilizzato. In questo modo risulta possibile effettuare una stima
del pixel senza informazione.
Slide 15
Alcune considerazioni Come abbiamo gi detto, i valori
risultanti dallinterpolazione saranno delle stime, dunque limmagine
zoomata risultante non avr mai la qualit dellimmagine originale.
Tuttavia i metodi che presenteremo risulteranno generare immagini
con qualit sempre crescente.
Slide 16
Breve richiamo allinterpolazione Faremo di seguito un breve
excursus su questo argomento, dando una rapida occhiata ai
principali tipi di interpolazione pi utilizzati. Lineare
Polinomiale o Interpolazione di Lagrange
Slide 17
Di che si tratta? Per interpolazione si intende un metodo per
individuare nuovi punti del piano cartesiano a partire da un
insieme finito di punti dati, nell'ipotesi che tutti i punti si
possano riferire ad una funzione f(x) di una data famiglia di
funzioni di una variabile reale.
Slide 18
Un quesito Si supponga di avere la seguente tabella, che d
alcuni valori di una funzione. Diagramma dei punti dati. Ci
chiediamo: quanto vale la funzione per esempio, in x =2.5? xf(x) 00
10.84 20.90 30.14
Slide 19
Criteri di scelta Per capire se il metodo scelto e la funzione
interpolante trovata sono adatti, occorre rispondere ad alcuni
quesiti: Quanto esatto il metodo? Quanto costoso? Quanti punti dati
sono necessari per procedere?
Slide 20
Interpolazione lineare Si tratta di uno dei metodi pi semplici.
Poich 2.5 il punto medio fra 2 e 3, ragionevole assegnare a f(2.5)
il valore medio fra f(2) e f(3) ovvero f(2.5) = 0.52. In generale
l'interpolazione lineare per ogni coppia di punti dati consecutivi,
(xa, ya) e (xb, yb), definisce come funzione interpolante
nell'intervallo [ xa, xb ] la seguente: xf(x) 00 10.84 20.90
30.14
Slide 21
Pro e contro L'interpolazione lineare rapida e facile, ma non
molto precisa, come si pu apprezzare dal grafico.
Slide 22
Interpolazione polinomiale L'interpolazione polinomiale pu
considerarsi, grosso modo, una generalizzazione dell'interpolazione
lineare. Mentre l'interpolazione lineare data da una sequenza di
funzioni lineari, nellinterpolazione polinomiale si cerca come
interpolante un unico polinomio di un grado opportuno. In generale,
se abbiamo n punti dati, esiste esattamente un polinomio di grado
n1 che passa attraverso tutti tali punti. L'errore di
interpolazione proporzionale alla distanza fra i punti dati elevata
alla potenza n-esima.
Slide 23
Pro e contro Nonostante questo tipo di interpolazione sia
decisamente pi precisa (come si pu vedere dalla morbidezza del
grafico), risulta anche pi costosa dal punto di vista della
complessit.
Slide 24
Interpolazione di Lagrange E un particolare tipo di
interpolazione polinomiale che si pu cos definire: Data una
funzione f(x) e n punti a 1,a 2...a n per cui sono noti i valori
f(a 1 ), f(a 2 )...f(a n ) si definisce il polinomio interpolante
di Lagrange della funzione f il polinomio:
Slide 25
Un esempio Esprimiamo prima il polinomio precedente nella
seguente forma: con
Slide 26
Calcolo del polinomio interpolante
Slide 27
Pochi punti Il risultato tuttavia poco preciso a causa dello
scarso grado del polinomio
Slide 28
Interpolazione con Matlab Matlab mette a disposizione due
funzioni per effettuare linterpolazione in una o due dimensioni:
interp1 interp2
Slide 29
Concentriamoci su interp2
y=interp2(X,Y,Forig(x,y),XInterp,YInterp,tipoInterp) dove: y: e
linsieme dei valori che la f(x,y) calcolata assume nei punti
richiesti X: e un vettore che contiene le coordinate x dei punti
(x,y,f(x,y)) noti Y: e un vettore che contiene le coordinate y dei
punti (x,y,f(x,y)) noti Forig(x,y): linsieme dei nodi originali
XInterp: e linsieme dei valori x per i quali si vuole conoscere il
valore assunto dalla funzione f (x,y) calcolata da interp2 YInterp:
e linsieme dei valori y per i quali si vuole conoscere il valore
assunto dalla funzione f (x,y) calcolata da interp2 tipoInterp: il
tipo di interpolazione: nearest, bilinear, bicubic. Vedremo
lapplicazione dei tre metodi con interp2 dopo averli illustrati in
dettaglio.
Slide 30
Interpolazione Nearest Neighbor Si tratta del primo dei tre
metodi che vedremo in dettaglio. Risulta essere il pi semplice ed
anche il meno accurato, ma il pi veloce. Come funziona questa
tecnica?
Slide 31
Funzionamento Il metodo di interpolazione Nearest Neighbor,
detto anche pixel replication, non fa altro che applicare ai valori
privi di informazione un valore di intensit pari a quello del pixel
pi vicino (appunto replicandolo):
Slide 32
Come realizzarlo? Come sappiamo, unimmagine pu essere vista
come una matrice di n righe ed m colonne. Dal punto di vista
matematico, uno strumento molto utile per la realizzazione di
questa tecnica interpolativa quella rappresentata dal prodotto di
Kronecker.
Slide 33
Prodotto di Kronecker Se A una matrice mn e B una matrice pq,
allora il loro prodotto di Kronecker una matrice mpnq definita a
blocchi nel modo seguente: Vediamone un esempio per capire
meglio
Slide 34
Un esempio funzionale Consideriamo 2 matrici A e B cos
strutturate: A=B= Il prodotto di Kronecker risultante sar dato
da:
Slide 35
Vantaggi di questa applicazione In questo modo otteniamo un
notevole risparmio di tempo nellesecuzione dellinterpolazione
Nearest Neighbor, con la possibilit di effettuare zoom al livello
che preferiamo con lunico accorgimento di modificare la grandezza
della matrice B in base ad esso (livello 2: m=n=2, livello 3:
m=n=3).
Slide 36
Uno sguardo al risultato
Slide 37
Nel dettaglio aliasing sui bordi
Slide 38
Pro e contro Pro: Rapidit di calcolo; Bassa complessit
computazionale; Buon risultato per immagini che presentano aree
uniformi; Contro: Qualit scarsa per immagini ad alta risoluzione;
Si verificano fenomeni di aliasing (bordi seghettati).
Slide 39
Applicazioni di questa tecnica La tecnica interpolativa Nearest
Neighbor, nonostante la sua estrema semplicit risulta avere alcune
applicazioni: Rendering 3D in real-time per lapprossimazione dei
valori di colore di una superficie poligonale; Thumbnails;
Diagrammi di Voronoi (GIS, Pattern Matching, Fisica dei polimeri,
).
Slide 40
Voronoi? Per un dato insieme di punti nello spazio, un
diagramma di Voronoi una decomposizione dello spazio in celle, una
per ogni punto dato, in modo che ovunque nello spazio, il punto pi
vicino risiede all'interno della cella. Ci equivale
allinterpolazione nearest neighbor, assegnando il valore della
funzione nel punto dato a tutti i punti all'interno della
cella.
Slide 41
Interpolazione Bilineare In matematica linterpolazione
Bilineare lestensione 2D dellinterpolazione lineare per interpolare
funzioni di 2 variabili. Per passare al campo bidimensionale, basta
applicare successivamente lo stesso procedimento lungo entrambe le
direzioni degli assi cartesiani
Slide 42
Problema : trovare il valore della funzione f al punto P = (x,
y). Q11= (x1,y1) Q12= (x1,y2) Q21= (x2,y1) Q22= (x2,y2) dove Passo
1: interpolazione lineare nella direzione x. dove I quattro puntini
rossi indicano i punti dati e il punto verde il punto in cui si
vuole interpolare.
Slide 43
Passo 2: interpolazione lineare nella direzione y. Infine
determino la f(x,y), che ci fornisce lintensit del pixel (x,y) :
nota: Se avessimo eseguito prima linterpolazione lineare nella
direzione y e poi in direzione x, il risultato sarebbe lo
stesso.
Slide 44
Dalla teoria alla pratica Un'immagine pu essere rappresentata
per ogni canale su uno spazio tridimensionale in cui su x e y
abbiamo la disposizione dei pixel mentre su z intensit riferita al
canale.
Slide 45
Supponiamo di voler trovare il valore del pixel centrato sui 4
rossi Effettuando le varie interpolazioni: Il valore della funzione
ottenuta interpolando lungo y i punti I0 e I1 su ys rappresenta
lintensit del pixel interpolato.
Slide 46
Esempio Matlab interpolazione bilineare : [x,y,z]=peaks(10);
[x1,y1]=meshgrid(linspace(-3,3,40),linspace(-3,3,40));
z1=interp2(x, y, z,x1,y1,bilinear'); mesh(x1,y1,z1); IMMAGINE IN
FUNZIONE DELLE INTENSITA DEI PIXEL.
Slide 47
Slide 48
Algoritmo sviluppato Linterpolazione bilineare stima quindi il
valore del pixel da determinare considerando le intensit dei 4
pixel intorno
Slide 49
Passo 1:zooming immagine Disponiamo i pixel noti sulla matrice
da interpolare, passando da unimmagine originale 3x3 ad una
6x6
Slide 50
Passo 2: riempimento dei bordi Tre diverse tecniche per
risolvere il problema Zero paddingFixed value paddingDiagonal
symmetric padding
Slide 51
In pratica,scegliendo la tecnica fixed value padding
otteniamo:
Slide 52
Passo 3: interpolazione 1 caso: i pixel noti sono posizionati a
forma di x 2 caso: i pixel noti sono posizionati a forma di +
Slide 53
Risultato
Slide 54
Pro e contro Pro: La resa visiva migliora rispetto al metodo
precedente. Risoluzione del problema aliasing presentato sul
Nearest-neighbor. costo computazione comunque basso Contro:
Sfocatura diffusa su tutta limmagine evidenziata in particolare sui
contorni, che pu comunque essere ridotta applicando un filtro per
laumento del contrasto allimmagine, come lunsharp mask, applicabile
tramite i comandi fspecial() e imfilter().
Slide 55
Un metodo di interpolazione migliore si ottiene utilizzando
quella bicubica, che utilizza funzioni smoothing o smussamento,
interpolando sui 16 pixel vicini. Con questo metodo l'effetto
visivo generalmente migliore, anche se comunque introduce della
distorsione che quindi non lo rende sempre adatto per certe
tipologie di applicazioni, come ad esempio quelle mediche. La
superficie interpolata risulta pi liscia rispetto alle superfici
corrispondenti ottenute utilizzando l'interpolazione bilineare ed
hanno meno artefatti di interpolazione. Nel processamento delle
immagini, l'interpolazione bicubica il metodo pi scelto per il
ricampionamento dell'immagine, quando il costo computazionale non
risulta un problema. Interpolazione Bicubica
Slide 56
Primo passo : Creazione della matrice risultante tramite il
valore di scaling. 300x300 1 2 3 4 300 1 2 3 4 600 600x600
Slide 57
Secondo passo 255 - Calcolo dellinterpolazione bicubica nel
punto celeste nellintorno dei 16 pixel della matrice 4x4
nellimmagine originale. 4x4
Slide 58
Per ogni coppia di punti ((i,j),(x,y)), si calcolano i due
delta : Dx=i-x Dy=j-y Essi rappresentano lo scarto tra la posizione
calcolata analiticamente e quella effettiva del punto nellimmagine
originale.
Slide 59
Questi due valori ci servono per calcolare il polinomio
interpolatore di 3 grado a due variabili: ed f(x,y) uguale al
valore RGB dellimmagine originale nel punto (x,y).
Slide 60
I pesi della sommatoria sono direttamente proporzionali alla
distanza di ogni punto dellintorno da (x,y). Il polinomio R(x) di 3
grado, e di conseguenza g(x,y) un polinomio di 3 grado, costruito
in modo da calcolare il valore del pixel in posizione (x,y) come
una somma pesata dei valori dei pixel nellimmagine originale
posizionati in un intorno 4x4 di (x,y).
Slide 61
Loperazione del calcolo del pixel da ricreare va estesa su
tutta limmagine. 4x4 . 4x4 300x300 600x600 8x8 .8x8 . 8x8.8x8
Slide 62
Aspetti generali dellintepolazione bicubica Potremmo pensare
che esista una griglia ( griglia di interpolazione) che si sposta
lungo x ed y, tutte le volte che bisogna interpolare 16 pixel. Gli
indici della griglia servono per calcolare in maniera rapida dal
punto di vista dellimplementazione le coordinate dei punti. Ecco
come potrebbe essere rappresentata la nostra matrice griglia.
Slide 63
Analisi matematica La tecnica dellinterpolazione Bicubica
esattamente unestensione della cubica, ed entrambi, dunque, usano
il metodo dei coefficienti indeterminati. Questo ci servir per
calcolarci lintensit del pixel nel punto da ricreare. Il metodo
consiste nellimporre le condizioni di interpolazione ad un generico
polinomio: e nel risolvere il sistema lineare:
Slide 64
Passi dellinterpolazione Bicubica Si vuole determinare il
valore di Z nel punto Q=(x s,y s ), per fare ci interpoleremo i
punti Q ij con polinomi cubici prima lungo la direzione X e
successivamente lungo la direzione Y, da qui il nome di
interpolazione bicubica. Si assume di conoscere i valori di f nei
punti Q 00 =(x 0,y 0 ), Q 01 =(x 0,y 0 ).Q ij =(x i,y j ) con
i=0,..,3 e j=0,..,3. Gli Qij sono i punti disposti nella griglia
regolare a due dimensioni. x 0 = 0 ; y 0 = 0 x 1 = 1 ; y 1 = 1 x 2
= 2 ; y 2 = 2 x 3 = 3 ; y 3 = 3 z=f(xi,yj) con i,j=0,1,2,3
Slide 65
Passo 1 Determinare i coefficienti dei 4 polinomi cubici
interpolanti lungo lasse X: p0(x),p1(x),p2(x),p3(x) e calcolare i
valori p0(x s ),p1(x s ),p2(x s ),p3(x s ). Cerchiamo 4 polinomi
cubici, ciascuno del tipo: p k (x)=a k +b k x+c k x 2 +d k x 3 per
k=0,1,2,3 Secondo i vincoli: p k (x 0 )=f(x 0,y k ); p k (x 1 )=f(x
1,y k ) p k (x 2 )=f(x 2, y k ); p k (x 3 )=f(x 3,y k ) Eseguendo
linterpolazione lungo x per ciascun polinomio, y k mantenuta
costante. Per ciascun p k ci sono esattamente 4 vincoli di
interpolazione. E visto che k=4 abbiamo in totale 4x4=16 vincoli di
interpolazione. I coefficienti a k,b k,c k ed k si trovano
risolvendo 4 sistemi di 4 equazioni in 4 incognite.
Slide 66
Il sistema di 4 equazioni nelle 4 incognite : p k (x 0 )=a k +b
k x+c k x 2 +d k x 3 =f(x 0,y k ) p k (x 1 )=a k +b k x+c k x 2 +d
k x 3 =f(x 1,y k ) p k (x 2 )=a k +b k x+c k x 2 +d k x 3 =f(x 2,y
k ) p k (x 3 )=a k +b k x+c k x 2 +d k x 3 =f(x 3,y k ) per
k=0,1,2,3 Complessivamente 16 equazioni con 16 incognite. Lungo
asse X {
Slide 67
X0X1X2X3X0X1X2X3 Z f(x 3) = f(x 3,y 0 ) Mantenendo Y k
costante.
Slide 68
Trovati gli p k non ci resta che calcolare i valori p k (x s )
: p k (x s )=a k +b k x s +c k x 2 s +d k x 3 s per k=0,1,2,3 I
valori p k (x s ) ci serviranno quando dovremo interpolare lungo la
direzione dellasse y, ma prima bisogna calcolare il polinomio
interpolante lungo y. Lungo asse X
Slide 69
Passo 2 Determinare i coefficienti del polinomio cubico
interpolante lungo lasse Y: q(y) e calcolare il valore q(y s )
Slide 70
Lungo asse Y Procedendo come prima si vuole determinare un
polinomio cubico del tipo: q(y)=a+b y +c y 2 +d y 3 Secondo i
vincoli: q(y 0 )=p 0 (x s ); q(y 1 )=p 1 (x s ) q(y 2 )=p 2 (x s );
q(y 3 )=p 3 (xs)
Slide 71
Lungo asse Y Il sistema di 4 equazioni nelle 4 incognite : q(y
0 )=a+by 0 +cy 0 2 +dy 0 3 =p 0 (x s ) q(y 1 )=a+by 1 +cy 1 2 +dy 1
3 =p 1 (x s ) q(y 2 )=a+by 2 +cy 2 2 +dy 2 3 =p 2 (x s ) q(y 3
)=a+by 3 +cy 3 2 +dy 3 3 =p 3 (x s )
Slide 72
Lungo asse Y A questo punto determinare il valore di Z di (x
s,y s ) con: q(y s )= a+ by s + cy s 2 + dy s 3 Mantenendo X k
costante. Y0Y1Y2Y3Y0Y1Y2Y3 Z f(x 3) = f(x 3,y 0 )
Slide 73
Mesh di uninterpolazione bicubica.
Slide 74
Per avere un'idea di come l'immagine viene ricampionata, sono
stati riportate le funzioni utilizzate per il calcolo delle diverse
tipologie di interpolazione. (a)Funzione di partenza. (b)Funzione
nearest neighbour. (c)Interpolazione bilineare. (d)Interpolazione
bicubica.
Slide 75
Vantaggi e Svantaggi del metodo: Vantaggi: Questo metodo
assicura migliori risultati relativamente a nitidezza e qualit
(risolve meglio i problemi di sfocatura ) Svantaggi: Risulta
oneroso dal punto di vista computazionale. Talvolta provoca una
lieve distorsione sullimmagine (a volte non idonea per applicazioni
mediche).
Slide 76
Originale Bicubica Risultato
Slide 77
Nel dettaglio
Slide 78
A colpo docchio
Slide 79
Una valutazione oggettiva E possibile valutare in modo
oggettivo la qualit delle immagini grazie alle cosiddette metriche
di qualit. Esistono due categorie di metriche di qualit: soggettive
oggettive
Slide 80
Metriche soggettive Si basano su un sistema di rating di
campioni di tester che valutano soggettivamente limmagine che viene
loro sottoposta. Richiedono elevate risorse umane, tempi lunghi e
forniscono scarsa ripetibilita.
Slide 81
Metriche oggettive E a questo tipo di metrica che ci
affideremo. Si tratta di un indice di qualit che scaturisce da una
serie di calcoli matematici, dunque oggettivi, tra limmagine di
origine e quella distorta. Non previsto lintervento umano nella
valutazione. Utilizzeremo questa categoria di metriche per le
nostre valutazioni, in particolare: MSE PSNR SSIM
Slide 82
MSE E lacronimo di Mean Square Error e si calcola con la
seguente formula: dove: N il numero di pixel presenti nellimmagine,
cio N=n*m x ed y rappresentano rispettivamente laltezza e la
larghezza dellimmagine, e si riferiscono alli-esimo pixel,
rispettivamente, nellimmagine di riferimento e nellimmagine
distorta
Slide 83
PSNR E lacronimo di Peak Signal-to Noise Ratio e si calcola con
la seguente formula: dove: MSE il Mean Square Error L e il range
dinamico dei valori dei pixel, cioe per un segnale che presenta n
bits/pixel, L e uguale a 2n-1
Slide 84
SSIM E lacronimo di Structural SIMilarity e misura la
similarita tra due immagini. Si basa sul fatto che il sistema
visivo umano e in grado di estrarre informazioni strutturali dal
campo visivo. Pertanto, una misurazione della perdita di
informazione strutturale puo fornire una buona approssimazione alla
distorsione dellimmagine percepita. dove: x e y sono due segnali
non negativi corrispondenti rispettivamente allimmagine campione e
a quella distorta x ed y sono la media di x e y 2x e 2y sono la
varianza di x e y xy la covarianza di x e y C1 e C2 sono due
costanti
Slide 85
Applicazioni MATLAB
Slide 86
Applicativi Per questo seminario sono stati realizzati due
applicativi principali Zoomer 2X con analisi dei risultati Script
che raccoglie lapplicazione degli algoritmi Matlab per
linterpolazione
Slide 87
Zoomer
Slide 88
Caratteristiche principali
Slide 89
Componenti principali Lapplicativo si compone delle seguenti
componenti principali: GUI Algoritmo di interpolazione Nearest
Neighbor Algoritmo di interpolazione Bilineare Algoritmo di
interpolazione Bicubico Funzioni per il calcolo di tempi di
esecuzione e metriche
Slide 90
Nearest Neighbor mg=double(imread(kodim21.png)); [rows colums
planes]=size(img); %matrice di dimensioni doppie
new=zeros(rows*2,columns*2,planes); for i=1:1:rows for
j=1:1:columns new(2*i,2*j,:)=img(i,j,:);% copia del valore
originale in new(2*i,2*j) new(2*i-1,2*j,:)=img(i,j,:);% valore
replicato in new(2*i-1,2*j) new(2*i-1,2*j-1,:)=img(i,j,:);% valore
replicato in new(2*i-1,2*j-1) new(2*i,2*j-1,:)=img(i,j,:);% valore
replicato in new(2*i,2*j-1) end Come avremmo potuto
implementarlo
Slide 91
Nearest Neighbor A=double(imread(kodim21.png)); % matrice con
la quale effettuare il prodotto di Kronecker B=ones(2,2);
Re=kron(double(A(:,:,1)),B);% canale rosso
Gr=kron(double(A(:,:,2)),B);% canale verde
Bl=kron(double(A(:,:,3)),B);% canale blu % ricomposizione
dellimmagine img(:,:,1)=uint8(Re); img(:,:,2)=uint8(Gr);
img(:,:,3)=uint8(Bl); Come lo abbiamo implementato
Slide 92
Bilineare for i=1:1:M % Definizione di partenza della matrice a
dimensione doppia. for j=1:1:N img2 (i*2,j*2,:)=img(i,j,:); end for
i=1:1:M %Ciclo che definisce i bordi immagine for j=1:1:N
%Definizione prima colonna %Definizione prima riga if(i==1)
if(j==1) img2(1,2*j,:)=img(i,j,:); img2(2*i,1,:)=img(i,j,:);
img2(1,2*j-1,:)=img(i,j,:); img2(2*i-1,1,:)=img(i,j,:); end
%Definizione ultima colonna %Definizione ultima riga if(i==M)
if(j==N) img2(M*2,2*j,:)=img(i,j,:); img2(2*i,N*2,:)=img(i,j,:);
img2(M*2,2*j-1,:)=img(i,j,:); img2(2*i-1,N*2,:)=img(i,j,:);
end
Slide 93
if((mod(i,2)~=0 && mod(j,2)~=0)) %Ricerca posizioni
dispari pixel=[img2(i-1,j-1,:) img2(i-1,j+1,:) img2(i+1,j+1,:)
img2(i+1,j-1,:)]; %Ricerca dei valori a x img2(i,j,:)=mean(pixel);
%Calcolo del valore del pixel if((mod(i,2)==0 | mod(j,2)==0) &
(~(mod(i,2)==0 & mod(j,2)==0))) % Ricerca delle posizioni
pari-dispari pixel=[img2(i,j-1,:) img2(i,j+1,:) img2(i-1,j,:)
img2(i+1,j,:)]; % Ricerca dei valori a + img2(i,j,:)=mean(pixel);
%Calcolo del valore del pixel Fasi di interpolazione
Slide 94
Bicubica function Interpolata =
Bicubica(Interpolata,ImmagineOriginale,Z) [NumRighe
NumColonne]=size(Interpolata); [NumRigheOriginali
NumColonneOriginali]=size(ImmagineOriginale);
RapportoRighe=NumRigheOriginali/NumRighe;
RapportoColonne=NumColonneOriginali/NumColonne;
H=waitbar(0,'Interpolazione in corso'); for y1=1:NumRighe
i=y1*RapportoRighe; y=floor(i); dy=j-y; for x1=1:NumColonne
j=x1*RapportoColonne; x=floor(j); dx=i-x; Interpolata(y1,x1)=0; for
m=-1:2 Diffx=m-dx; Sommax=x+m; for n=-1:2
Interpolata(y1,x1)=Interpolata(y1,x1)+f(ImmagineOriginale,NumRigheOriginali,NumColonneOriginali,Sommax,y+n)*R(Diffx)*R(dy-n);
end waitbar(y1/NumRighe,H); end close(H); %Calcolo in tutta
limmagine interpolata %Calcolo g(x, y)
Slide 95
Bicubica % Funzione R function R = R(x) R = (P(x+2)^3 -
4*P(x+1)^3 + 6*P(x)^3 - 4*P(x-1)^3)/6; % Funzione P function P =
P(x) if x > 0 P = x; else P = 0; end % Funzione per ottenere il
valore di un pixel dell'immagine originale function f =
f(Matrice,NumRighe,NumColonne,x,y) %i-->y, j-->x if xNumRighe
y=NumRighe; end f=Matrice(y,x); %Polinomio di 3grado %Problema del
padding
Slide 96
Interpolazione con Matlab
Slide 97
Funzioni principali Lo script si compone delle seguenti
funzioni principali: Algoritmo di interpolazione Nearest Neighbor
Algoritmo di interpolazione Bilineare Algoritmo di interpolazione
Bicubico Funzioni per il calcolo delle metriche
Slide 98
Nearest Neighbor src=imread(kodim21.png'); n=size(src); %
Matrici di origine e destinazione [x,y] = meshgrid(1:n); [xi,yi] =
meshgrid(1:0.50:n); for k = 1:3 output(:,:,k)=
interp2(x,y,double(src(:,:,k)),xi,yi,'nearest');% applicazione
interp2 end figure; imshow(uint8(output));
Slide 99
Bilineare src=imread(kodim21.png'); n=size(src); % Matrici di
origine e destinazione [x,y] = meshgrid(1:n); [xi,yi] =
meshgrid(1:0.50:n); for k = 1:3 output(:,:,k)=
interp2(x,y,double(src(:,:,k)),xi,yi,bilinear');% applicazione
interp2 end figure; imshow(uint8(output));
Slide 100
Bicubica src=imread(kodim21.png'); n=size(src); % Matrici di
origine e destinazione [x,y] = meshgrid(1:n); [xi,yi] =
meshgrid(1:0.50:n); for k = 1:3 output(:,:,k)=
interp2(x,y,double(src(:,:,k)),xi,yi,bicubic');% applicazione
interp2 end figure; imshow(uint8(output));
Slide 101
Analisi dei risultati Tempi di esecuzione Replication
BilineareBicubica
Slide 102
Analisi dei risultati aliasing sfocatura Altre distorsioni
tipiche sono: edge halo: comparsa di aloni luminosi sui bordi
distorsioni sulle zone di alta frequenza (eliminazione dei
dettagli) Distorsioni introdotte
Slide 103
Analisi dei risultati Qualit
Slide 104
Una piccola annotazione Per il calcolo delle metriche di qualit
tra due immagini, necessario disporre di due immagini di dimensioni
identiche. Per questo motivo i nostri applicativi effettuano un
campionamento sullimmagine originale. Limmagine risultante viene
utilizzata per effettuare le operazioni di zooming, mentre quella
originale rappresenta il termine di paragone con le immagini
ingrandite. RICAMPIONAMENTO ZOOMING CALCOLO METRICHE DI QUALITA 1 1
2 2 3 3