1 / 105

Tecniche di interpolazione di basso ordine per lo zooming

Tecniche di interpolazione di basso ordine per lo zooming. Sturiale Alberto Billa Fabrizio Giuffrida Francesco. Università degli Studi di Catania CdL Magistrale in Informatica Seminario MMO A.A. 2011/2012. Argomenti trattati. Tematica del ridimensionamento delle immagini

diata
Download Presentation

Tecniche di interpolazione di basso ordine per lo zooming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tecniche di interpolazione di basso ordine per lo zooming Sturiale Alberto Billa Fabrizio Giuffrida Francesco Università degli Studi di Catania CdL Magistrale in Informatica Seminario MMO A.A. 2011/2012

  2. Argomenti trattati • Tematica del ridimensionamento delle immagini • Tecniche di interpolazione: • NearestNeighbor • Bilineare • Bicubica • Analisi qualitativa dei risultati ottenuti • Misurare la qualità delle immagini • Presentazione dell’applicativo sviluppato e degli script dimostrativi

  3. Ridimensionare un’immagine La tematica del ridimensionamento comprende in realtà due aspetti: • Ingrandimento • Riduzione Perché sono diversi?

  4. Riduzione di un’immagine Partiamo dalla riduzione. In questo caso il problema consiste nel selezionare alcuni pixel (ovviamente non a caso!) per effettuare il cosiddetto “campionamento” dell’immagine di partenza. In questo modo avremo una riduzione delle dimensioni dell’immagine. Cosa implica questo processo?

  5. Riduzione di un’immagine 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 un’immagine Ben diverso è il problema relativo all’ingrandimento di un’immagine. Se precedentemente il nostro problema era quello di selezionare delle informazioni, adesso la tematica è diametralmente opposta. Per quale motivo ingrandire un’immagine è più complesso?

  7. Ingrandimento di un’immagine In questo caso il nostro target è di aumentare le dimensioni di un’immagine. 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 dell’interpolazione.

  9. Fare delle ipotesi Il concetto di base è quello di ipotizzare quale valore può assumere il pixel del quale non conosciamo l’informazione relativa alla propria intensità, in modo tale da riempire gli spazi vuoti che si vengono a creare in seguito all’ingrandimento.

  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 l’algoritmo 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. L’altra faccia della medaglia I metodi non adattivi, trattati in questo seminario, sebbene risultino meno precisi rispetto all’altra 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 un’immagine 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 Idi intensità, in base ai valori dei pixel del suo intorno. Le caratteristiche di quest’ultimo variano con l’algoritmo utilizzato. In questo modo risulta possibile effettuare una stima del pixel “senza informazione”.

  15. Alcune considerazioni Come abbiamo già detto, i valori risultanti dall’interpolazione saranno delle stime, dunque l’immagine zoomata risultante non avrà mai la qualità dell’immagine originale. Tuttavia i metodi che presenteremo risulteranno generare immagini con qualità sempre crescente.

  16. Breve richiamo all’interpolazione Faremo di seguito un breve excursus su questoargomento, dando una rapidaocchiataaiprincipalitipi di interpolazionepiùutilizzati. • Lineare • Polinomiale • 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?

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

  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, nell’interpolazione 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 n−1 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 ‪a1,a2...an‬ per cui sono noti i valori ‪f(a1), f(a2)...f(an)‬ 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 l’interpolazione in una o due dimensioni: • interp1 • interp2

  29. Concentriamoci su interp2 y=interp2(X,Y,Forig(x,y),XInterp,YInterp,tipoInterp) dove: • y: è l’insieme 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): è l’insieme dei nodi originali • XInterp: è l’insieme dei valori x per i quali si vuole conoscere il valore assunto dalla funzione f (x,y) calcolata da interp2 • YInterp: è l’insieme 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 l’applicazione 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 NearestNeighbor, 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, un’immagine può essere vista come una matrice di nrigheed 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 nell’esecuzione dell’interpolazione NearestNeighbor, con la possibilità di effettuare zoom al livello che preferiamo con l’unico 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 interpolativaNearestNeighbor, nonostante la sua estrema semplicità risulta avere alcune applicazioni: • Rendering 3D in real-time per l’approssimazionedeivalori di colore di unasuperficiepoligonale; • 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 all’interpolazione nearestneighbor, assegnando il valore della funzione nel punto dato a tutti i punti all'interno della cella.

  41. Interpolazione Bilineare In matematica l’interpolazione Bilineare è l’estensione 2D dell’interpolazione 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). Passo 1: interpolazione lineare nella direzione x. I quattro puntini rossi indicano i punti dati e il punto verde è il punto in cui si vuole interpolare. dove Q11= (x1,y1) Q12= (x1,y2) Q21= (x2,y1) Q22= (x2,y2) dove

  43. Passo 2: interpolazione lineare nella direzione y. Infine determino la f(x,y), che ci fornisce l’intensità del pixel (x,y) : nota: Se avessimo eseguito prima l’interpolazione 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 l’intensità 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. Algoritmo sviluppato L’interpolazione bilineare stima quindi il valore del pixel da determinare considerando le intensità dei 4 pixel intorno ?

  48. Passo 1:zooming immagine Disponiamo i pixel noti sulla matrice da interpolare, passando da un’immagine originale 3x3 ad una 6x6

  49. Passo 2: riempimento dei bordi Tre diverse tecniche per risolvere il problema Zero padding Fixedvaluepadding Diagonalsymmetricpadding

More Related