Cosè una wavelet Applicazioni della trasformata wavelet ... 4 - codifica wavelet.pdf · wavelet...

Preview:

Citation preview

β€’ 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 +1

(4)1+

1

(4)2+ β‹―+

1

(4)𝑃

Usate in coppia: - Piramide di approssimazione - Piramide residua di predilezione

β€’ 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.

3. La sola funzione comune a tutti i sottospazi Γ¨ 𝑓 π‘₯ = 0: π‘‰βˆ’βˆž= *0+ 4. Ogni funzione puΓ² essere rappresentata con precisione

arbitraria: π‘‰βˆž = *𝐿2 ℝ +

π‘‰βˆ’βˆž βŠ‚ β‹― βŠ‚ π‘‰βˆ’1 βŠ‚ 𝑉0 βŠ‚ 𝑉1 βŠ‚ β‹― βŠ‚ π‘‰βˆž

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π‘₯ βˆ’ 𝑛)

𝑛

Questa equazione Γ¨ fondamentale per l’analisi multirisoluzione!

Le funzioni di espansione di ogni sottospazio possono essere costruite da copie di se stesse a risoluzione doppia, cioè dalle funzioni di espansione del successivo spazio a risoluzione più alta.

Consideriamo:

πœ‘π‘˜ π‘₯ = 1 0 ≀ π‘₯ < 10 π‘Žπ‘™π‘‘π‘Ÿπ‘–π‘šπ‘’π‘›π‘‘π‘–

Ricordiamo:

πœ‘π‘—,π‘˜ π‘₯ = 2𝑗/2πœ‘ 2𝑗π‘₯ βˆ’ π‘˜

π‘•πœ‘ 0 = π‘•πœ‘ 1 = 1

2

Infatti: πœ‘ π‘₯ =

= 1

2. πœ‘1,0 π‘₯ +

1

2. πœ‘1,1 π‘₯

Definiamo πœ“π‘—,π‘˜ π‘₯ , dove πœ“π‘—,π‘˜ π‘₯ = 2𝑗/2πœ“ 2𝑗π‘₯ βˆ’ π‘˜

Definiamo π‘Šπ‘— = π‘†π‘π‘Žπ‘›π‘˜*πœ“π‘—,π‘˜(π‘₯)+

I sottospazi delle funzioni di scaling e wavelet sono legati da 𝑉𝑗+1 = 𝑉𝑗 βŠ• π‘Šπ‘—

Una funzione wavelet πœ“(π‘₯) insieme alle sue traslazioni e riduzioni di

scala binarie, ricopre la differenza fra due sottospazi di scaling

adiacenti 𝑉𝑗 e 𝑉𝑗+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.

πœ“π‘—,π‘˜ π‘₯ = π‘•πœ“(𝑛) 2𝑗+1 2 πœ‘(2𝑗+1π‘₯ βˆ’ 𝑛)

𝑛

Si puΓ² dimostrare che i coefficienti delle funzioni di scaling e wavelet sono legati dalla seguente relazione:

π‘•πœ“ 𝑛 = (βˆ’1)π‘›π‘•πœ‘(1 βˆ’ 𝑛)

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.

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 ≀ π‘₯ < 10 π‘Žπ‘™π‘‘π‘Ÿπ‘–π‘šπ‘’π‘›π‘‘π‘–

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)

𝑑𝑗 π‘˜ = 𝑓 π‘₯ ,πœ“π‘—,π‘˜ π‘₯ = 𝑓 π‘₯ πœ“π‘—,π‘˜ π‘₯ 𝑑π‘₯

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, π‘˜ = 1

𝑀 𝑓(𝑛)πœ‘π‘—0,π‘˜ 𝑛

𝑛

π‘Šπœ“ 𝑗0, π‘˜ = 1

𝑀 𝑓(𝑛)πœ“π‘—,π‘˜ 𝑛

𝑛

π‘π‘’π‘Ÿ 𝑗 β‰₯ 𝑗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

𝑀 π‘Šπœ‘ 𝑗0, π‘˜ πœ‘π‘—0,π‘˜ 𝑛

π‘˜

+ 1

𝑀 π‘Šπœ“ 𝑗, π‘˜ πœ“π‘—,π‘˜ 𝑛

π‘˜

∞

𝑗=𝑗0

Varianti:

trasformata wavelet veloce (FWT, Fast Wavelet Transform).

trasformata wavelet continua (CWT, Continuous Wavelet Transform)

Con l’espansione in serie wavelet, una funzione continua viene associata ad una sequenza di coefficienti che ne rappresentano la trasformata.

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, π‘š, 𝑛 = 1

𝑀𝑁 𝑓(π‘₯, 𝑦)πœ‘π‘—0,π‘š,𝑛 π‘₯, 𝑦

π‘βˆ’1

𝑦=0

π‘€βˆ’1

π‘₯=0

π‘Šπœ“π‘– 𝑗,π‘š, 𝑛 =

1

𝑀𝑁 𝑓(π‘₯, 𝑦)πœ“π‘—,π‘š,𝑛

𝑖 π‘₯, 𝑦

π‘βˆ’1

𝑦=0

π‘€βˆ’1

π‘₯=0

𝑖 ∈ *𝐻, 𝑉, 𝐷+

Antitrasformata:

𝑓 π‘₯, 𝑦 = 1

𝑀𝑁 π‘Šπœ‘ 𝑗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.

Recommended