La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sturiale Alberto Billa Fabrizio Giuffrida Francesco.

Presentazioni simili


Presentazione sul tema: "Sturiale Alberto Billa Fabrizio Giuffrida Francesco."— Transcript della presentazione:

1 Sturiale Alberto Billa Fabrizio Giuffrida Francesco

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

3 Ridimensionare unimmagine La tematica del ridimensionamento comprende in realtà due aspetti: Ingrandimento Riduzione Perché sono diversi?

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?

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

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?

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?

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.

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.

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.

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?

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?

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.

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.

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.

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

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.

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)

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?

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) = 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)

21 Pro e contro L'interpolazione lineare è rapida e facile, ma non è molto precisa, come si può apprezzare dal grafico.

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.

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à.

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:

25 Un esempio Esprimiamo prima il polinomio precedente nella seguente forma: con

26 Calcolo del polinomio interpolante

27 Pochi punti… Il risultato tuttavia è poco preciso a causa dello scarso grado del polinomio

28 Interpolazione con Matlab Matlab mette a disposizione due funzioni per effettuare linterpolazione in una o due dimensioni: interp1 interp2

29 Concentriamoci su interp2 y=interp2(X,Y,Forig(x,y),XInterp,YInterp,tipoInterp) dove: y: è linsieme dei valori che la f(x,y) calcolata assume nei punti richiesti X: è un vettore che contiene le coordinate x dei punti (x,y,f(x,y)) noti Y: è un vettore che contiene le coordinate y dei punti (x,y,f(x,y)) noti Forig(x,y): è linsieme dei nodi originali XInterp: è linsieme dei valori x per i quali si vuole conoscere il valore assunto dalla funzione f (x,y) calcolata da interp2 YInterp: è 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.

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?

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):

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.

33 Prodotto di Kronecker Se A è una matrice m×n e B una matrice p×q, allora il loro prodotto di Kronecker è una matrice mp×nq definita a blocchi nel modo seguente: Vediamone un esempio per capire meglio

34 Un esempio funzionale Consideriamo 2 matrici A e B così strutturate: A=B= Il prodotto di Kronecker risultante sarà dato da:

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).

36 Uno sguardo al risultato

37 Nel dettaglio aliasing sui bordi

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).

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, …).

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.

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

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.

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.

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.

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.

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.

47

48 Algoritmo sviluppato Linterpolazione bilineare stima quindi il valore del pixel da determinare considerando le intensità dei 4 pixel intorno

49 Passo 1:zooming immagine Disponiamo i pixel noti sulla matrice da interpolare, passando da unimmagine originale 3x3 ad una 6x6

50 Passo 2: riempimento dei bordi Tre diverse tecniche per risolvere il problema Zero paddingFixed value paddingDiagonal symmetric padding

51 In pratica,scegliendo la tecnica fixed value padding otteniamo:

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 +

53 Risultato

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().

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

56 Primo passo : Creazione della matrice risultante tramite il valore di scaling. 300x …… …… x600

57 Secondo passo Calcolo dellinterpolazione bicubica nel punto celeste nellintorno dei 16 pixel della matrice 4x4 nellimmagine originale. 4x4

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.

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).

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).

61 Loperazione del calcolo del pixel da ricreare va estesa su tutta limmagine. 4x4 …….……… 4x4 ………………… ………………… ………………… ………………… ………………… …………… 300x x600 8x8 …….…………8x8 …….………… … …………………… …………………… …………………… …………………… …………………… 8x8…….…………8x8

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.

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:

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

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.

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 {

67 X0X1X2X3X0X1X2X3 Z f(x 3) = f(x 3,y 0 ) Mantenendo Y k costante.

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

69 Passo 2 Determinare i coefficienti del polinomio cubico interpolante lungo lasse Y: q(y) e calcolare il valore q(y s )

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)

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 )

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 )

73 Mesh di uninterpolazione bicubica.

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.

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).

76 Originale Bicubica Risultato

77 Nel dettaglio

78 A colpo docchio

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

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 ripetibilità.

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

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

83 PSNR E lacronimo di Peak Signal-to Noise Ratio e si calcola con la seguente formula: dove: MSE è il Mean Square Error L è il range dinamico dei valori dei pixel, cioè per un segnale che presenta n bits/pixel, L è uguale a 2n-1

84 SSIM E lacronimo di Structural SIMilarity e misura la similarità tra due immagini. Si basa sul fatto che il sistema visivo umano è in grado di estrarre informazioni strutturali dal campo visivo. Pertanto, una misurazione della perdita di informazione strutturale può 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

85 Applicazioni MATLAB

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

87 Zoomer

88 Caratteristiche principali

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

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

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

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

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

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)

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 x<=0 x=1; end if y<=0 y=1; end if x>NumColonne x=NumColonne; end if y>NumRighe y=NumRighe; end f=Matrice(y,x); %Polinomio di 3°grado %Problema del padding

96 Interpolazione con Matlab

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

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));

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));

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));

101 Analisi dei risultati Tempi di esecuzione Replication BilineareBicubica

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

103 Analisi dei risultati Qualità

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

105 FINE


Scaricare ppt "Sturiale Alberto Billa Fabrizio Giuffrida Francesco."

Presentazioni simili


Annunci Google