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

Transcript of Sturiale Alberto Billa Fabrizio Giuffrida Francesco.

  • Slide 1
  • 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
  • Slide 105
  • FINE