Metodi di interpolazione di alto ordine per lo zooming di immagini: ENO e WENO Seminario di Metodi Matematici per l’ottimizzazione A.A. 2011/2012 Prof.ssa Rosa Maria Pidatella Valeria Borzì Andrea Francesco Fornaia Davide Stefano Sardina
Sommario Trattazione dell’operazione di zooming come problema di tipo interpolatorio Metodi tradizionali non adattivi (basso ordine) Efficienti in termini di tempo di esecuzione Non preservano le alte frequenze nelle immagini Metodi adattivi (alto ordine): ENO e WENO Maggior ordine di accuratezza Minore efficienza
Interpolazione sulle immagini (1) Il problema dell’interpolazione in generale consiste nell’approssimazione di una funzione o di un insieme di dati con una funzione che sia più semplice e che abbia buone proprietà di regolarità. Nel caso particolare delle immagini, si tratta di un metodo software grazie al quale si riesce a raggiungere una dimensione maggiore dell’immagine originale. L'ingrandimento digitale utilizza l'immagine originale per generare una nuova immagine che contiene un numero maggiore di punti.
Interpolazione sulle immagini (2) Il processo di interpolazione consiste nel disporre i pixel dell’immagine originale su una matrice come in figura e stimare il valore dei pixel mancanti utilizzando quelli noti.
Alta e bassa frequenza Nel dominio delle frequenze un’immagine digitale è costituita da componenti ad alta e bassa frequenza. Di notevole importanza per la nostra trattazione sono le prime perché rappresentano i particolari dell’immagine. Dato che i metodi di interpolazione tradizionali non sono in grado di preservare le alte frequenze, si ricorre ad altri metodi di interpolazione (detti adattivi). Questi sono caratterizzati per la nitidezza dei risultati e per la riduzione degli artefatti che, in un’immagine, costituiscono due fattori critici nella percezione visiva della qualità di un’immagine.
Artefatti I metodi di interpolazione tipicamente introducono artefatti del tipo: Aliasing Blurring Blocking Fenomeni di Gibbs (ringing)
Artefatti (2) Aliasing (scalettatura): le linee che definiscono gli edge appaiono frastagliate
Artefatti (3) Blurring (sfocatura): a causa dell’ingrandimento dell’immagine, essa può risultare sfocata
Artefatti (4) Blocking (quadrettatura): i contorni del soggetto non sono più percepiti come uniformi ma come una serie di quadrati accostati l'un l'altro
Artefatti (5) Fenomeni di Gibbs (ringing): oscillazioni nei pressi di discontinuità che provocano effetti ad anelli vicino gli edge
Metodi di interpolazione Metodi non adattivi: utilizzano gli stessi filtri lineari spazialmente invarianti su ogni regione dell’immagine. Fanno parte di questa categoria i metodi nearest neighbour, bilineare, bicubico. Si basano su interpolazione polinomiale: Grado = 1 (lineare) Grado > 1 basso ordine di accuratezza alto ordine di accuratezza ma oscilla nelle discontinuità
Metodi non adattivi Nearest neighbor: metodo semplice e rapido perché si limita a porre il valore di ogni pixel sconosciuto uguale al valore del pixel noto più vicino. Svantaggi: scalettature e seghettature specie sui contorni. Bilineare: il valore del pixel da interpolare è ottenuto facendo la media dei valori dei quattro pixel noti diagonalmente adiacenti. Svantaggio: immagine sfocata. Bicubico: sulla base dello stesso principio del metodo bilineare ma considerando un numero maggiore di pixel vicini, viene utilizzato un polinomio interpolante bicubico vincolato ai valori dei pixel noti che circondano il pixel da interpolare.
Nearest Neighbor (NN) Bilinear Bicubic
Metodi di interpolazione Metodi adattivi: fanno uso di tecniche diverse a seconda del tipo di regione che si provvede ad interpolare (edge o aree uniformi). Caratteristiche: evitano le discontinuità risolvono il problema delle oscillazioni nei punti di discontinuità, raggiungendo ordini di accuratezza maggiori viene selezionato un intorno ad alta regolarità del pixel da interpolare
Metodi adattivi A differenza dei non adattivi, questi metodi determinano i pixel da utilizzare all’interno di uno stencil (insieme di punti da usare per l’interpolazione) e tengono conto del tipo di regione che si sta interpolando escludendo i pixel che apportano una discontinuità I metodi adattivi che tratteremo sono i metodi ENO (Essentially Non-Oscillatory) e WENO (Weighted-ENO)
Ma cosa si intende per… discontinuità alta frequenza regolarità
Discontinuità Analiticamente, si dice punto di discontinuità di una funzione a valori reali f un punto appartenente al dominio di f nel quale la funzione non risulti continua. La tipologia di discontinuità che riscontriamo nella teoria delle immagini è quella di prima specie, anche detta ‘salto’.
Discontinuità Nella teoria delle immagini digitali Confronto analitico e Lena Le discontinuità in un’immagine si riscontrano principalmente nei contorni
Alta frequenza Il concetto di alta frequenza si riallaccia al concetto di discontinuità. Le componenti ad alta frequenza di un’immagine digitale, infatti, rappresentano i particolari dell'immagine e i disturbi di quantizzazione. In generale, ciò avviene in presenza di bordi (edge).
Regolarità Una funzione regolare è una funzione che non presenta "criticità", quali cuspidi, punti angolosi, flessi, asintoti verticali Dal punto di vista quantitativo, bisogna studiare le derivate della funzione e la loro continuità Quindi un’area di un’immagine ha un livello di regolarità che è inversamente proporzionale al numero di discontinuità che presenta al suo interno. Se questo livello è alto allora i valori dei pixel sono tutti pressoché uniformi Zone ad alta regolarità sono anche dette a bassa frequenza
… i metodi adattivi tornerebbero indietro! Concetto del burrone Mentre i metodi non adattivi andrebbero avanti, non curanti della discontinuità incontrata… … i metodi adattivi tornerebbero indietro!
Metodi di interpolazione METODI ADATTIVI METODI NON ADATTIVI PRO Precisione Attenti alle alte frequenze Migliore risoluzione nelle discontinuità No aliasing Efficienza Semplicità Usati principalmente in dispositivi mobile, o in applicazioni real-time CONTRO Lentezza Complessità Poco adatti a immagini irregolari e discontinue Artefatti
ENO e WENO
Passaggio dalla teoria alle immagini ENO e WENO furono creati come metodi numerici per la risoluzione delle PDE (Partial differential equations) nell’ambito della fluidodinamica Il passaggio dalla teoria delle PDE alle immagini è dovuto al Anil K. Jain, professore alla Michigan State University che ne parla nel suo articolo “Partial differential equations and finite-difference methods in image processing, part 1: Image representation” Sostanzialmente bisogna associare ad un’immagine una PDE e ottenere il risultato desiderato come la soluzione della PDE stessa equazioni differenziali alle derivate parziali
Campi di applicazione Metodi vengono utilizzati in molti ambiti scientifici: fluido dinamica computazionale (CFD) astronomia e astrofisica computazionale (i modelli sono simili alla CFD) simulazioni di dispositivi semiconduttori modelli di flusso di traffico biologia Metodi WENO sono i più usati, poiché a parità di ordine di accuratezza, sono più efficienti dei metodi ENO
Distinzione tra ENO e WENO Per ogni punto da interpolare si definisce un intorno di valori noti, detto cella Costruisce uno stencil (insieme di celle) partendo dalla cella base e aggiungendo ad ogni passo di estensione o la celle di destra o quella di sinistra. Tra le due celle, verrà scelta quella che, aggiunta allo stencil, permette di ottenere un grado di regolarità maggiore, che verrà stabilita attraverso il metodo delle differenze divise di Newton. Quindi si effettua l’interpolazione Costruzione adattiva dello stencil MOD ->
ENO stencil generato Quando ENO si accorge di aver incontrato una discontinuità, torna indietro
Distinzione tra ENO e WENO Utilizza tutti gli stencil possibili senza porre condizioni di estensione, ed assegna un peso diverso ad ognuno di essi in base alla loro regolarità; quindi effettua l’interpolazione Questo approccio “brute force” si dimostra sperimentalmente migliore di ENO grazie all’eliminazione dei costrutti condizionali che non sono molto efficienti su alcuni computer vettoriali
WENO alta regolarità bassa regolarità WENO considererà tutti gli stencil, dando peso differente ad ognuno in base alla loro regolarità. MOD alta regolarità bassa regolarità
Ricostruzione ad una dimensione Vediamo i metodi di interpolazione ENO/WENO applicato ad una generica Data un’insieme di punti nell’intervallo [a,b] con si definisce cella Ii : dove la dimensione di ogni cella è: per i=1,2,…,N Δxi MOD
Medie di cella Data la cella Ii, definiamo la media di cella : i=1,2,…,N Δxi MOD Nella tecnica ENO/WENO, queste medie di cella verranno usate come vincoli del polinomio interpolante. i=1,2,…,N
Polinomio interpolante Per ogni cella Ii cerchiamo un polinomio interpolante pi(x) che abbia le seguenti caratteristiche: Sia di grado al più k-1 L’ordine di accuratezza dell’approssimazione della funzione v(x) nella cella Ii sia k MOD In particolare, questo polinomio fornirà l’approssimazione della funzione v(x) ai bordi della cella Ii con un ordine di accuratezza k
Costruzione dello stencil Fissato un ordine di accuratezza k, per individuare il polinomio pi(x) interpolante la funzione v(x) nella cella Ii, si sceglie uno stencil di k celle, composto dalla cella di base Ii, da r celle a sinistra e s celle a destra, con il vincolo: r+s+1=k con r,s>=0 Denotiamo tale stencil nel seguente modo: S(i)={Ii-r,…, Ii+s} In ENO lo stencil verrà costruito in maniera adattiva Se la funzione è regolare a tratti, usando uno stencil fissato (non adattivo) si rischierebbe di includere delle discontinuità che darebbero luogo ad oscillazioni del polinomio interpolante, abbassandone l’accuratezza In WENO, per ogni cella Ii verranno considerati tutti i possibili stencil, combinando poi i risultati ottenuti MOD
Costruzione del polinomio Dato S(i), esiste un unico polinomio di grado k-1=r+s interpolante che soddisfi la seguente condizione di interpolazione: Ovvero, che per ogni cella dello stencil creato, le medie di cella per il polinomio interpolante coincidano con le medie di cella della funzione da interpolare Questo polinomio è l’approssimazione di ordine k che stiamo cercando, nella parte della regione ricoperta dallo stencil in cui la funzione si mantiene sufficientemente regolare .
Approssimazione ai bordi di cella Il polinomio generato fornisce in particolare l’approssimazione dei valori di v(x) ai bordi della cella Ii La dipendenza di tali valori dalle medie delle celle contenute nello stencil è espressa da delle costanti che sono ricavate dai polinomi di Lagrange <-MOD Poiché ovviamente per ogni cella possiamo considerare solo una delle approssimazioni ai bordi In maniera analoga, useremo questo metodo di interpolazione per ricavare il valore dei pixel non noti durante l’operazione di zooming
ENO per le immagini I concetti appena esposti si possono applicare al problema di zooming delle immagini, le quali possono essere rappresentate tramite funzioni a due dimensioni. Il problema da sviluppare sarà unidimensionale: si agisce prima sulle righe e in seguito sulle colonne
Definizione di cella Dato un pixel da interpolare all’interno di un’immagine, è possibile costruire un intorno di 2 pixel lungo una sola direzione così formato sx ? dx questa cella è detta cella di base
Definizione di stencil Accanto alla cella di base saranno presenti altre celle. Uno stencil è un insieme di celle contigue, contenenti la cella base ? cella di base I pixel noti contenuti all’interno di uno stencil, verranno utilizzati per poter interpolare il valore del pixel non noto all’interno della cella base: maggiore è il numero di punti considerati, maggiore sarà l’ordine di accuratezza raggiunto
In generale: Per un grado di accuratezza k, sono necessari k+1 punti per interpolare un pixel; partendo da una cella di base (2 punti), si estende lo stencil considerando tutte le possibilità. Verrà scelto quello in cui V(x) abbia la più alta regolarità in confronto agli altri potenziali stencil. Ciò viene realizzato suddividendo il compito in più step, in ognuno dei quali si aggiunge un punto allo stencil; effettuando quindi le differenze non divise, verrà scelto lo stencil con valore assoluto minore.
Scelta dello stencil L’idea di base è evitare di includere nello stencil le celle discontinue. Per fare ciò usiamo le differenze divise di Newton che forniscono una misura di regolarità della cella nello stencil. Per una griglia uniforme , e non occorre calcolare le differenze divise ma quelle non divise. Le differenze non divise di grado j, per j>=1, sono definite per induzione da:
Metodo ENO: esempio Sia k=2, lo stencil avrà k+1=3 punti. La cella di base è: Al successivo step, si hanno solamente due possibili scelte per espandere lo stencil: oppure
Metodo ENO: esempio Si effettua quindi il calcolo delle differenze non divise scegliendo lo stencil con il valore minore. Definito lo stencil, è possibile determinare il valore del pixel da interpolare secondo la formula:
Metodo ENO: esempio Passo 1. Cella di base Passo 2. … 212 213 196 139 Pixel da interpolare Passo 2. 2a. Espansione stencil a sinistra e calcolo differenze non divise. 2b. Espansione a destra e calcolo differenze non divise.
Metodo ENO Scelto lo stencil, si calcola il valore del pixel da interpolare, secondo la formula: l scorre gli elementi all’interno dello stencil k è l’ordine di accuratezza fissato (i punti nello stencil sono k+1, ma verranno usati solo i primi k) r è il numero di celle dello stencil a sinistra della cella base C sono dei coefficienti ricavati tramite il processo di interpolazione di Lagrange
Miglioriamo ENO: WENO Svantaggi di ENO Limita l’ordine di accuratezza scegliendo solo uno stencil tra k stencil candidati. In totale questi ricoprono 2k-1 celle Lento nelle operazioni vettoriali perché deve scegliere ad ogni passo una differenza non divisa, introducendo istruzioni condizionali
WENO WENO usa una combinazione convessa degli stencil permettendo di raggiungere un ordine di accuratezza 2k-1. Ad ogni stencil viene associato un peso 𝜔 𝑟 , direttamente proporzionale alla sua regolarità permettendo di migliorare la stabilità e la consistenza 𝜔 𝑟 ≥0, 𝑟=0 𝑘−1 𝜔 𝑟 =1
Metodo WENO Dati k stencil 𝑆 𝑟 𝑥 = 𝑥 𝑖−𝑟 ,…, 𝑥 𝑖−𝑟+𝑘−1 dove 𝑟=0, 1,…, 𝑘−1, WENO trova k differenti ricostruzioni del valore 𝑣 𝑖+ 1 2 , uno per ogni stencil. Per calcolare il valore approssimato considera la formula: 𝑟=0 𝑘−1 𝜔 𝑟 𝑣 𝑖+ 1 2 (𝑟)
Calcolo dei pesi Le formule per il calcolo dei pesi sono una conseguenza delle proprietà che vogliamo ottenere, riportate di seguito: i pesi dovrebbero dipendere dalle medie di cella coinvolte il calcolo dei pesi dovrebbe essere efficiente dal punto di vista computazionale quando la funzione v(x) ha una discontinuità in uno o più stencil i corrispondenti pesi dovrebbero tendere a zero
Formule per il calcolo dei pesi 𝜔 𝑟 = 𝛼 𝑟 𝑠=0 𝑘−1 𝛼 𝑠 , 𝛼 𝑟 = 𝑑 𝑟 (𝜀+𝛽 𝑟 ) 2 dove i valori 𝑑 𝑟 sono valori sempre positivi che soddisfano la condizione 𝑟=0 𝑘−1 𝑑 𝑟 =1 Per il calcolo di 𝛼 𝑟 sommiamo al denominatore 𝜀= 10 −6 per evitare che si annulli 𝑘=1 𝑑 0 =1 𝑘=2 𝑑 0 = 2 3 𝑑 1 = 1 3 𝑘=3 𝑑 0 = 3 10 𝑑 1 = 3 5 𝑑 2 = 1 10
Smoothness indicators 𝛽 𝑟 (parte 1) Questi valori, come dice il nome stesso, indicano la regolarità dello stencil. Per il calcolo utilizziamo la formula: 𝛽 𝑟 = 𝑙=1 𝑘−1 𝑥 𝑖− 1 2 𝑥 𝑖+ 1 2 ∆ 𝑥 2𝑙−1 𝜕 𝑙 𝑝 𝑟 𝑥 𝜕 𝑥 𝑙 𝑑𝑥
Smoothness indicators 𝛽 𝑟 (parte 2) La precedente formula permette di ricavare i valori degli smoothness indicators. Se k=2: 𝛽 0 = ( 𝑣 𝑖+1 − 𝑣 𝑖 ) 2 𝛽 1 = ( 𝑣 𝑖 − 𝑣 𝑖−1 ) 2 Se k=3 abbiamo i seguenti valori: 𝛽 0 = 13 12 ( 𝑣 𝑖 −2 𝑣 𝑖+1 + 𝑣 𝑖+2 ) 2 + 1 4 (3 𝑣 𝑖 −4 𝑣 𝑖+1 + 𝑣 𝑖+2 ) 2 𝛽 1 = 13 12 ( 𝑣 𝑖−1 −2 𝑣 𝑖 + 𝑣 𝑖+1 ) 2 + 1 4 ( 𝑣 𝑖−1 + 𝑣 𝑖+1 ) 2 𝛽 2 = 13 12 ( 𝑣 𝑖−2 −2 𝑣 𝑖−1 + 𝑣 𝑖 ) 2 + 1 4 ( 𝑣 𝑖−2 −4 𝑣 𝑖−1 +3 𝑣 𝑖 ) 2
Implementazione di WENO Il metodo WENO è stato sviluppato in diverse versioni che differiscono per dimensione dello stencil e calcolo degli smoothness indicators Noi non prenderemo in considerazione queste versioni, tuttavia può essere interessante sapere che Russo-Ferretti e Bryson-Levy risultano essere le migliori
Esempio di WENO
Risultati Sperimentali
Introduzione Per valutare la qualità di un algoritmo di zooming adotteremo tre approcci differenti, ognuno dei quali permette di osservare diversi aspetti sull’efficacia dei metodi studiati Analisi qualitativa Analisi quantitativa Analisi spettrale dell’immagine
Il PSNR Il Peack Signal-to-Noise Ratio è una misura adottata per valutare la differenza tra due immagini, che useremo per determinare la qualità dello zooming Dove: MSE è l’errore quadratico medio tra le due immagini I è l’immagine originale K è l’immagine che vogliamo comparare MAX{I} = valore massimo raggiunto da I M è l’altezza dell’immagine N è la larghezza dell’immagine
Utilizzo del PSNR
Analisi spettrale delle immagini (1) Un’immagine può essere vista come una funzione discreta a due dimensioni in cui i valori rappresentano i livelli di grigio di un determinato pixel La funzione “immagine” può essere vista come un segnale, cioè una funzione variabile in un dominio con una propria frequenza (costante o variabile) I metodi adattivi cercano di preservare quanto più possibile le alte frequenze di un’immagine Zone ad alta frequenza: parti ricche di dettagli o contenenti disturbi. In generale, ciò avviene in presenza di bordi (edge) Zone a bassa frequenza: zone di colore uniforme
Analisi spettrale delle immagini (2) È possibile adottare la Discrete Fourier Transform (DFT) per osservare l’immagine nel dominio della frequenza e non più nel dominio spaziale Un noto algoritmo degli anni ‘60 per il calcolo della DFT è la Fast Fourier Transform, già presente anche nella sua versione 2D tra le funzionalità di Matlab
Interpretazione dello spettro di un’immagine
Analisi spettrale delle immagini (3) Visualizzeremo e confronteremo gli spettri delle immagini per osservare in che modo agiscono i metodi di zooming sulle loro frequenze Una delle maggiori cause della perdita di dettagli in un’immagine zoomata è l’effetto blur (sfocatura) che tipicamente affligge i metodi non adattivi, soprattutto per immagini a bassa risoluzione Questo fenomeno causa una perdita sostanziale delle alte frequenze presenti in un’immagine Vediamo come un’esplicita operazione di smoothing modifichi lo spettro di un’immagine
Effetto dello smoothing sullo spettro (2) Lo smoothing altera chiaramente le alte frequenze dell’immagine, rendendo “nere” le aree periferiche nell’immagine dello spettro
Test affrontati (1) comparazione dei metodi all’aumentare della dimensione dell’immagine comparazione dei metodi variando la tipologia di immagine ricca di edge in presenza di strutture regolari immagini con testo immagini mediche
Test affrontati (2) Per evitare di alterare i risultati visivi con un eccessivo rimpicciolimento delle immagini, in questa presentazione verranno mostrati i risultati qualitativi solo per immagini di dimensione 256x256. Per immagini di dimensioni maggiori, verranno riportati dei dettagli delle immagini o solo i risultati quantitativi. Ricordiamo che ENO3 e WENO2 hanno lo stesso ordine di accuratezza, e quindi sono confrontabili Lo stesso vale con ENO5 e WENO3 Per lo zooming con metodi non adattivi, è stata utilizzata la imresize di Matlab imresize(I, 2, ‘nearest’) imresize(I, 2, ‘blinear’) imresize(I, 2, ‘bicubic’)
Test 1: Variazione della dimensione analisi qualitativa 256x256 - ENO ENO sembra introdurre dei disturbi proprio sui bordi, ma questo effetto scompare aumentando la risoluzione di partenza
Test 1: Variazione della dimensione analisi qualitativa 256x256 - WENO WENO non introduce i disturbi visti con ENO, già con immagini a bassa risoluzione. I risultati sono sicuramente paragonabili con il bicubico
Test 1: Variazione della dimensione analisi quantitativa I metodi adattivi danno quasi sempre risultati migliori, in particolare WENO2 I metodi adattivi sono però anche notevolmente onerosi rispetto ai non adattivi Discordanti i risultati con risoluzione 1024x1024, dove i non adattivi si comportano meglio, forse è il caso di provare su di un altro volto …
WENO2 da ancora risultati migliori Test 1: Variazione della dimensione analisi quantitativa per 1024x1024 con altro volto.. WENO2 da ancora risultati migliori Dimensione: 1024x1024
Test 2: Immagini con molti edge analisi qualitativa Dimensione: 512x512
Test 2: Immagini con molti edge analisi quantitativa Il nearest da dei buoni risultati quantitativi, ma osservando i risultati qualitativi si notano chiaramente i problemi di seghettatura ai bordi, presenti in maniera maggiore che in qualsiasi altro caso Dimensione: 512x512
Test 2: Immagini con molti edge analisi dello spettro ORIGINALE NEAREST BILINEARE BICUBICO ENO3 ENO5 WENO2 WENO5
Test 3: Immagini ad alta regolarità analisi qualitativa e quantitativa Dimensione: 256x256
Test 3: Immagini ad alta regolarità: analisi dello spettro ORIGINALE NEAREST BILINEARE BICUBICO ENO3 ENO5 WENO2 WENO5
Test 4: Immagini con testo analisi quantitativa e qualitativa Anche se il PSNR più alto è stato ottenuto per ENO3, i risultati qualitativi migliori sono stati ottenuti da WENO2 Dimensione: 1024X1024
Test 5: Immagini mediche analisi quantitativa e qualitativa Le immagini mediche sono tipicamente a risoluzione molto alta, permettendo un esecuzione ottimale dei metodi adattivi. Preservare i dettagli in immagini di questo tipo è, per ovvie ragioni, fondamentale Dimensione: 1024x1024
Riepilogo risultati ottenuti Per i metodi adattivi, all’aumentare della dimensione dell’immagine di partenza danno risultati migliori, potendo beneficiare di maggiori informazioni in prossimità dei bordi per costituire degli stencil con alta regolarità ENO applicato ad immagini di piccole dimensioni introduce delle informazioni fittizie che abbassano la qualità visiva dello zooming. L’effetto si attenua all’aumentare della dimensione Sia ENO che WENO, in presenza di edge, preservano le alte frequenze, diminuendo il fenomeno di smoothing ENO e WENO si dimostrano particolarmente efficaci con immagini mediche e contenenti testo A parità di ordine di accuratezza, WENO risulta essere più efficiente di ENO In generale, i metodi adattivi danno risultati migliori, ma a discapito dell’efficienza Il giusto compromesso tra qualità e efficienza è sempre WENO2
Implementazione di ENO e WENO MATLAB come ambiente di sviluppo Traduzione della teoria in codice Esecuzione dei test su diverse immagini Analisi dei risultati per evidenziare pro e contro dei metodi Verranno descritte in dettaglio le operazioni principali dei due metodi ENO e WENO.
Convertire l’immagine I metodi che abbiamo visto sono onerosi dal punto di vista dell’esecuzione e prendono in input una matrice bidimensionale. Eseguirli sui singoli canali R, G, B non sarebbe efficiente Come soluzione a questo problema scegliamo di convertire l’immagine nello spazio di colori YCbCr. Il canale della luminanza è quello che detiene le informazioni più importanti visibili all’occhio. Il metodo sarà applicato solo ad esso Per gli altri due canali utilizzeremo metodi di basso ordine
Zooming e interpolazione Il procedimento è riassunto nelle immagini successive: PASSO 1 I Z
Procedimento PASSO 2 L’immagine è scandita prima per righe e quindi per colonne Calcolo degli stencil e dei pesi per effettuare l’interpolazione (2)
Passaggi intermedi Calcolo dei pixel delle righe Calcolo dei pixel delle colonne
Pseudo codice
padarray(C,padsize,padval) ENO(IMAGE, k) C = CONVERT-TO-YCBCR(IMAGE) P = PADDING(C) [Y, Cb, Cr] = CHANNEL-SEPARATION(P) [m,n] = IMAGE-SIZE(Y) Z = INITIALIZE-ZERO-IMAGE(m*2, n*2) L = LAGRANGE-CONSTANTS(k) // applichiamo ENO alle righe FOR i = 1 TO m*2-1 WITH STEP 2 FOR j = 2 TO n*2 WITH STEP 2 I = CELL(i,j) STENCIL = {I} FOR l = 1 TO k-1 STENCIL-Sx = EXTEND-STENCIL-LEFT(STENCIL) STENCIL-Dx = EXTEND-STENCIL-RIGHT(STENCIL) STENCIL = NEWTON-COMPARISON(STENCIL-Sx, STENCIL-Dx) //restituisce lo stencil che in valore assoluto risulta minore Z[i, j] = PIXEL-INTERPOLATION(STENCIL, L) // applichiamo ENO alle colonne FOR j = 1 TO n*2 FOR i = 2 TO 2*m WITH STEP 2 // analogo al calcolo per riga [...] M = CHANNEL-MERGE(Y, NEAREST(Cb), NEAREST(Cr)) ZOOMED-IMAGE = CONVERT-TO-RGB(IMCROP(M)) RETURN ZOOMED-IMAGE rgb2ycbcr(image) padarray(C,padsize,padval) ycbcr2rgb(uint8(M)) imcrop(M,[1+padsize, 1+padsize, m-1, n-1])
WENO(IMAGE, k) C = CONVERT-TO-YCBCR(IMAGE) P = PADDING(C) [Y, Cb, Cr] = CHANNEL-SEPARATION(P) [m,n] = IMAGE-SIZE(Y) Z = INITIALIZE-ZERO-IMAGE(m*2, n*2) L = LAGRANGE-CONSTANTS(k) // applichiamo WENO alle righe FOR i = 1 TO m*2-1 WITH STEP 2 FOR j = 2*k TO 2*(n-k)+1 WITH STEP 2 I = CELL(i,j) FOR r = 0 TO k-1 DO STENCIL = GET-STENCIL(I, r) V[r] = PIXEL-INTERPOLATION(STENCIL, L) //per ogni stencil calcolo del pixel da interpolare W = GET-WEIGHTS(I,k) // calcoliamo i k pesi necessari Z[i,j] = Z[i,j] + V[r]*W[r] // valore del pixel da interpolare (combinazione tra i pesi e gli stencil) // applichiamo WENO alle colonne FOR j = 1 TO m*2-1 FOR i = 2*k TO 2*(n-k)+1 WITH STEP 2 // analogo al calcolo per riga [...] M = CHANNEL-MERGE(Y, NEAREST(Cb), NEAREST(Cr)) ZOOMED-IMAGE = CONVERT-TO-RGB(IMCROP(M)) RETURN ZOOMED-IMAGE
Grazie!