• Cos’è una wavelet? • Applicazioni della trasformata wavelet • Analisi multirisoluzione Tre tecniche: • Piramidi di immagine • Trasformata di Haar • Codifica per sottobande Il numero totale di pixel nel caso di una piramide di (π + 1) livelli è: π2 1 + Usate in coppia: - Piramide di approssimazione - Piramide residua di predilezione 1 1 1 + + β― + (4)1 (4)2 (4)π • L‘immagine viene decomposta in un insieme di componenti, di banda limitata (sottobande). • La scomposizione viene attuata in modo tale che le sottobande possano poi essere riassemblate per ricostruire l’immagine originale senza errori. • La scomposizione e la ricostruzione vengono realizzate attraverso l’uso di filtri digitali ∞ π π = π π π(π − π) π= −∞ • Tre componenti principali: ritardi unitari, moltiplicatori e sommatori • Le K costanti moltiplicative sono dette coefficienti del filtro • Ogni coefficiente definisce uno dei tap del filtro. Impulso discreto unitario ∞ π π = π π πΏ(π − π) = π(π) π= −∞ Risposta all’impulso finito (FIR) Un filtro è completamente descritto fornendo il suo FIR • Due banchi di filtri • Banda dettaglio (πβπ (π)) e banda di approssimazione (πππ (π)) • Filtri di ricostruzione perfetti Per ottenere la perfetta ricostruzione, i filtri di analisi e sintesi devono essere legati in uno dei seguenti modi: π0 π = −1 π π1 π π1 π = −1 π+1 π0 π oppure π0 π = −1 π+1 π1 π π1 π = −1 π π0 π Quattro filtri di Daubechies correlati • Questi filtri godono della proprietà di biortogonalità. • Di notevole importanza sono anche i banchi di filtri ortonormali. Filtri 1-D che godono di entrambe queste proprietà possono essere usati come filtri separabili 2-D per l’elaborazione delle immagini. Nella figura successiva viene mostrata quella che più avanti chiameremo Trasformata Discreta Wavelet (WDT) Ma prima… un po’ di matematica!! L’analisi multirisoluzione (MRA, Multi Resolution Analysis) è una branca della matematica che prevede l’uso di una funzione di scala per creare una serie di approssimazioni di una funzione/immagine (differenti per un fattore 2) e funzioni, dette wavelet, per codificare la differenza di informazione tra approssimazioni adiacenti. In genere: • le funzioni di scaling sono indicate con il simbolo π • le funzioni wavelet sono indicate con il simbolo π Sia π π₯ π πΏ2 β ο Definiamo *ππ,π π₯ + dove ππ,π π₯ = 2π/2 π 2π π₯ − π ο Definiamo ππ = πππππ *ππ,π (π₯)+ ο Se π π₯ π ππ allora π 2π₯ π ππ+1 Le funzioni di scaling devono obbedire a 4 requisiti principali: 1. La funzione di scaling deve essere ortogonale rispetto alle sue traslazioni intere. 2. I sottospazi descritti da funzioni di scaling a scale più basse vengono annidati all’interno di quelli a scale più alte. π−∞ ⊂ β― ⊂ π−1 ⊂ π0 ⊂ π1 ⊂ β― ⊂ π∞ 3. La sola funzione comune a tutti i sottospazi è π π₯ = 0: π−∞ = *0+ 4. Ogni funzione può essere rappresentata con precisione arbitraria: π∞ = *πΏ2 β + Le funzioni di espansione del sottospazio ππ possono essere espresse come somma pesata delle funzioni di espansione del sottospazio ππ+1 : ππ,π π₯ = πΌπ ππ+1,π (π₯) π Da cui: ππ (π) 2π+1 2 π(2π+1 π₯ − π) ππ,π π₯ = π Le funzioni di espansione di ogni sottospazio possono Questacostruite equazione fondamentale pera l’analisi essere da ècopie di se stesse risoluzione doppia, multirisoluzione! cioè dalle funzioni di espansione del successivo spazio a risoluzione più alta. Consideriamo: 1 ππ π₯ = 0 0≤π₯<1 πππ‘ππππππ‘π Ricordiamo: ππ,π π₯ = 2π/2 π 2π π₯ − π ππ 0 = ππ 1 = 1 2 Infatti: π π₯ = 1 1 = . π1,0 π₯ + . π1,1 π₯ 2 2 Una funzione wavelet π(π₯) insieme alle sue traslazioni e riduzioni di scala binarie, ricopre la differenza fra due sottospazi di scaling adiacenti ππ e ππ+1 . ο Definiamo ππ,π π₯ , dove ππ,π π₯ = 2π/2 π 2π π₯ − π ο Definiamo ππ = πππππ *ππ,π (π₯)+ ο I sottospazi delle funzioni di scaling e wavelet sono legati da ππ+1 = ππ ⊕ ππ Tutti i membri di ππ sono ortogonali rispetto a quelli di ππ ο ο Risulta immediato: πΏ2 β = π0 ⊕ π0 ⊕ π1 ⊕ β― oppure πΏ2 β = π1 ⊕ π1 ⊕ π2 ⊕ β― o anche πΏ2 β = β― ⊕ π−1 ⊕ π0 ⊕ π1 ⊕ β― Queste equazioni possono essere generalizzate in πΏ2 β = ππ0 ⊕ ππ0 ⊕ ππ0 +1 ⊕ β― dove π0 prende il nome di scala iniziale. Gli spazi wavelet risiedano all’interno di spazi ricoperti dalle funzioni di scaling a più alta risoluzione, ciò significa che ogni funzione wavelet, così come avveniva per la sua controparte funzione di scaling, può essere espressa come somma di funzioni di scaling traslate a risoluzione doppia. ππ (π) 2π+1 2 π(2π+1 π₯ − π) ππ,π π₯ = π Si può dimostrare che i coefficienti delle funzioni di scaling e wavelet sono legati dalla seguente relazione: ππ π = (−1)π ππ (1 − π) A partire dai coefficienti delle funzioni di scaling dell’esempio precedente, possiamo calcolare i coefficienti delle funzioni wavelet: ππ 0 = 1 2 ππ 1 = −1 2 È facile ottenere la funzione wavelet corrispondente: 1 0 ≤ π₯ < 0.5 π π₯ = −1 0.5 ≤ π₯ < 1 0 πππ‘ππππππ‘π Esistono 3 trasformate wavelet 1D: ο Espansione in serie wavelet ο Trasformata wavelet discreta ο Trasformata wavelet continua Ricordiamo che: πΏ2 β = ππ0 ⊕ ππ0 ⊕ ππ0 +1 ⊕ β― e anche: π π₯ π ππ0 βΉ π π₯ = πΌπ ππ0 ,π (π₯) π π π₯ π ππ0 βΉ π π₯ = πΌπ ππ0 ,π (π₯) π Una funzione π π₯ può essere rappresentata da un’espansione della funzione di scaling π π₯ nel sottospazio ππ0 e da un certo numero di espansioni della funzione wavelet π π₯ nei sottospazi ππ0 , ππ0 +1 … dove π0 indica una scala iniziale arbitraria: ∞ π π₯ = ππ0 π ππ0 ,π π₯ + π ο π= π0 π ππ0 (coefficienti di approssimazione) ππ0 π = π π₯ , ππ0,π π₯ ο ππ π ππ,π π₯ = π π₯ ππ0 ,π π₯ ππ₯ = π π₯ ππ,π π₯ ππ₯ ππ (coefficienti di dettaglio) ππ π = π π₯ , ππ,π π₯ Con l’espansione in serie wavelet, una funzione continua viene associata ad una sequenza di coefficienti che ne rappresentano la trasformata. Se la funzione da espandere è discreta (ovvero una sequenza di numeri, come un’immagine) i coefficienti che ne risultano sono detti trasformata wavelet discreta. ππ π0 , π = ππ π0 , π = 1 π 1 π π(π)ππ0 ,π π π π(π)ππ,π π πππ π ≥ π0 π I valori di ππ0 ,π π e ππ,π π usati in queste equazioni sono versioni campionate delle funzioni di base estraendo π campioni ugualmente spaziati all’interno del supporto delle funzioni di base. ∞ 1 1 π π = ππ π0 , π ππ0 ,π π + ππ π, π ππ,π π π π π π=π π 0 Varianti: ο trasformata wavelet veloce (FWT, Fast Wavelet Transform). ο trasformata wavelet continua (CWT, Continuous Wavelet Transform) Nel caso bidimensionale è necessario usare una funzione di scaling bidimensionale π π₯, π¦ e tre wavelet bidimensionali π π» π₯, π¦ , π π π₯, π¦ e π π· π₯, π¦ ottenute come prodotto di due funzioni unidimensionali: π π₯, π¦ = π π₯ π π¦ π π» π₯, π¦ = π(π₯)π(π¦) π π π₯, π¦ = π π₯ π π¦ π π· π₯, π¦ = π(π₯)π(π¦) Definiamo le funzioni di base: ππ,π,π π₯, π¦ = 2π/2 π 2π π₯ − π, 2π π¦ − π π π π,π,π π₯, π¦ = 2π/2 π π 2π π₯ − π, 2π π¦ − π π ∈ *π», π, π·+ Trasformata wavelet discreta dell’immagine π(π₯, π¦) di dimensioni π × π : ππ π0 , π, π = πππ π, π, π = Antitrasformata: 1 π π₯, π¦ = ππ π−1 π−1 1 π(π₯, π¦)ππ0,π,π π₯, π¦ ππ 1 ππ π₯=0 π¦=0 π−1 π−1 π π(π₯, π¦)ππ,π,π π₯, π¦ π₯=0 π¦=0 ππ π0 , π, π ππ0 ,π,π π₯, π¦ + π π π ∈ *π», π, π·+ 1 ππ ∞ π» πππ» π, π, π ππ,π,π π₯, π¦ π=π»,π,π· π=π0 π π Usando funzioni wavelet e scaling bidimensionali, la FWT in due dimensioni può essere calcolata semplicemente prendendo la FWT 1-D delle righe di π(π₯, π¦) seguita dalla FWT 1-D delle colonne che ne risultano: ο ο ο ο ο La trasformata wavelet discreta (DWT) trova impiego nella compressione JPEG2000 al posto della trasformata discreta del coseno (DCT) usata nel JPEG. L’uso di questa trasformata permette di operare sull’intera immagine piuttosto che su quadrettoni 8x8, evita quindi il tipico difetto della ‘quadrettatura’. La DWT può essere sia reversibile (codifica lossless) che irreversibile (codifica lossy). In JPEG2000 viene usata una trasformazione irreversibile basata sul filtro di Daubechies 9/7 a valori reali. JPEG2000 rappresenta lo stato dell’arte per la compressione distruttiva e non distruttiva delle immagini, con un risparmio di spazio, a parità di qualità, rispetto allo standard JPEG, che parte da un +20-30%. La trasformata wavelet può essere utilizzata come edge detector, al fine di evidenziare gli edge degli oggetti rappresentati in un’immagine Procedura: Passo 1 Si sceglie una wavelet e un numero di livelli per la scomposizione e si calcola la FWT dell’immagine affetta da rumore. Passo 2 Si esegue un’operazione di sogliatura (Hard o Soft) sui coefficienti di dettaglio delle scale inferiori (blocchi più grandi). Passo 3 Si calcola la trasformata wavelet inversa utilizzando i coefficienti di approssimazione inalterati di scala più bassa e quelli di dettaglio modificati di tutte le altre scale.