codifica wavelet - Dipartimento di Matematica e Informatica

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