You are on page 1of 23

Aplicaii ale prelucrrilor digitale de imagini

12

Transformata Wavelet

12.1 Introducere
Una dintre cele mai cunoscute tehnici de analiz a semnalelor este analiza Fourier, care mparte un semnal n componentele sale sinusoidale la diferite frecvene. Folosind analiza Fourier putem transforma domeniul timp n domeniu frecven, putnd astfel s vizualizm i s analizm spectrul de frecven al unui semnal. Totui, principalul dezavantaj al analizei Fourier este acela al pierderii informaiei temporale, adic nu tim exact n ce moment de timp are loc un anumit eveniment. De exemplu, modificarea frecvenei unui semnal nu poate fi detectat. Cel mult analiza Fourier ne va furniza dou componente spectrale (Figura 12.1), fr a ti ns cnd anume avem de a face cu o frecven sau alta.

a) semnal

b) spectru de frecven Figura 12.1 Exemplu de analiz Fourier

Pentru a corecta aceast deficien n 1946 Dennis Gabor a implementat transformata Fourier a unui semnal pe o perioad scurt de timp, aa numita STFT Short Time Fourier Transform, care mapeaz un semnal pe dou dimensiuni adic n timp i spaiu. n felul acesta putem s obinem anumite informaii legate att de frecven ct i de timp (Figura 12.2). Totui aceste informaii se pot obine cu o precizie limitat, depinznd de dimensiunile ferestrei temporale. De asemenea fereastra de durat finit este nsoit de rezoluie fix de frecven i deci permite numai rezoluie fix timp-frecven.
Amplitudine Fereastr temporal Frecven

Timp

Timp

Figura 12.2 Transformata Fourier STFT

Principalul dezavantaj al STFT este acela c dimensiunea ferestrei este aceeai pentru toate frecvenele, ceea ce face ca precizia de analiz s nu fie aceeai pentru toate frecvenele. Analiza Wavelet ncearc s rezolve acest neajuns al STFT. Ideea implementat n analiza Wavelet este de a dezvolta o tehnic de analiz a semnalelor folosind o fereastr de dimensiune variabil.

12. Transformata Wavelet


Frecven Scal

Timp

Timp

a)

b)

Figura 12.3 Comparaie ntre STFT (a) i analiza Wavelet (b)

Aa dup cum se poate observa analiza wavelet nu folosete un domeniu variabil timpfrecven ci unul scal-frecven. Unul din avantajele majore ale transformatei Wavelet este capacitatea de a realiza analiza local exact a semnalului. Dac considerm o mic discontinuitate ntr-un semnal sinusoidal care nu este vizibil (de exemplu fluctuaia tensiunii de alimentare) i realizm analiza Fourier, vom obine un spectru cu cele dou vrfuri simetrice care reprezint o singur frecven, frecvena de 50Hz. Practic informaia obinut din spectrul Fourier nu ne spune nimic despre discontinuitatea care a aprut n semnal. Dac ns efectum analiza Wavelet, coeficienii obinui ne arat cu exactitate locul n care s-a produs acea discontinuitate.

12.2 Transformata Wavelet continu


Un wavelet este practic un semnal care are o durat limitat i o valoare medie egal cu zero. Pentru a vedea care sunt avantajele transformatei Wavelet, s comparm semnalele de tip wavelet cu sinusoidele care sunt folosite n analiza Fourier. Un semnal sinusoidal nu are durat limitat, este predictibil i omogen. Un semnal wavelet este neregulat i asimetric.

a) sinus

b) und wavelet

Figura 12.4 Diferena dintre un semnal sinusoidal i o und wavelet

Analiza Fourier const n mprirea unui semnal n semnale sinusoidale componente la diferite frecvene. Asemntor, analiza Wavelet reprezint mprirea unui semnal ntr-o serie de semnale care sunt versiunile scalate i deplasate ale undei Wavelet originale. Dac ne uitm la cele dou forme de und din Figura 12.4, se poate observa c este mult mai uor s descriem un semnal real cu ajutorul unui wavelet dect cu o sinusoid.

a)
2

Aplicaii ale prelucrrilor digitale de imagini

b)
Figura 12.5 Exemple de implementare a transformatei Fourier (a), respectiv transformatei Wavelet (b)

Rezultatul aplicrii transformatei Fourier este dat de coeficienii Fourier, F ( ) . Dac nmulim aceti coeficieni cu semnalele sinusoidale corespunztoare frecvenelor , obinem componentele sinusoidale care alctuiesc semnalul original. n Figura 12.5 a) este prezentat procesul analizei Fourier. n mod asemntor, transformata Wavelet continu este definit ca sum temporal a produsului dintre semnalul original f(t) i versiunile scalate i translatate ale funciei Wavelet de baz aa cum se poate observa i din Figura 12.5 b). Putem scrie c transformata Wavelet continu este dat de formula:
C (scala, pozitie ) =

f (t )(scala, pozitie, t )dt

12.1

Dac (x) este o funcie real a crei transformat Fourier, (s) satisface criteriul de admisibilitate:

C =

( s)
s

ds <

12.2

atunci (x) se numete funcie de baz wavelet. De notat c, datorit apariiei lui s la numitor, este necesar ca:

(0) = 0,

adica

(t )dt = 0

12.3

Deoarece ()=0, amplitudinea spectrului pentru o funcie wavelet este asemntoare cu funcia de transfer a unui filtru trece band. De fapt, orice rspuns la impuls al unui filtru trece band cu medie zero (ecuaia 12.3), care cade n zero destul de repede cu creterea frecvenei, poate servi ca funcie de baz wavelet pentru aceast transformare. Un set de funcii de baz {a,b(x)} poate fi generat prin translatarea i scalarea funciei wavelet (x), astfel:

a ,b(t ) =

1 t b a a

12.4

unde a>0 i b este un numr real. Variabila a reprezint scala (lrgimea) unei funcii baz particulare, n timp ce b specific translaia (deplasarea) de-a lungul axei x. Putem rescrie formula transformatei wavelet continue a funciei f(t), avnd ca funcie de baz (t) este:

W f ( a, b) =

f (t )

a ,b

(t )dt

12.5

12. Transformata Wavelet

Coeficienii transformatei wavelet sunt dai de produsul intern al funciei de transfer cu fiecare dintre funciile baz. Transformarea continu invers wavelet este dat de relaia:
f (t ) = 1 C

W
0

(a, b) a ,b(t )db

da a2

12.6

12.2.1

Scalarea

Scalarea unei funcii wavelet nseamn alungirea sau comprimarea acesteia. Gradul scalrii se msoar cu ajutorul factorului de scal notat cu a. Efectele pe care le produce factorul de scal asupra unei funcii de baz wavelet sunt prezentate n Figura 12.6.

a) f(t)=(t); a=1

b) f(t)=(2t); a=1/2

c) f(t)=(4t); a=1/4

Figura 12.6 Scalarea funciilor de baz Wavelet

Din analiza scalrii se observ c dac micorm factorul de scal funcia Wavelet este mai comprimat i invers, cu ct factorul de scal este mai mare cu att funcia Wavelet este mai alungit. Deci, cu ct funcia este mai alungit cu att poriunea pe care se face comparaia este mai mare. Astfel, corespondena dintre variantele scalate ale funciei de baz wavelet i frecven pot fi sumarizate: factor de scal a mic funcie wavelet alungit detalii modificate rapid frecven mare factor de scal a mare funcie wavelet cmprimat modificri lente n semnal frecven mic

12.2.2

Translaia

Translaia sau shift-area unei funcii Wavelet reprezint ntrzierea cu care se amorseaz funcia Wavelet original. n Figura 12.7 se observ efectul ntrzierii funciei (t) cu un factor de translaie b, rezultnd funcia (t-b).

Funcia Wavelet (t)

Funcia Wavelet (t-b)

Figura 12.7 Efectul translaiei asupra funciei de baz (t)

1 2 .3

Transformata Wavelet Discret

Calcularea coeficienilor transformatei Wavelet pentru orice scal ar nsemna un proces mult prea costisitor din punct de vedere al operaiilor efectuate. Pentru a calcula transformata

Aplicaii ale prelucrrilor digitale de imagini

Wavelet discret DWT Discrete Wavelet Transform vom alege un set de scale i poziii pentru care vom realiza calculele. Una din modaliti este alegerea factorului de scal i poziie ca fiind putere a lui 2. O astfel de transformare, numit i diadic, permite realizarea unei analiza mult mai eficiente i mai corecte dect pentru alte variante de alegere a factorilor de scal i poziie. Odat ales setul ce cuprinde factorii de scal i poziie, putem implementa DWT folosind filtrele. Practic este vorba de o implementare a algoritmului de descompunere n subbenzi folosind dou canale. O prim implementare a DWT folosind o astfel de arhitectur a fost realizat de Mallat n 1988. n general, coninutul de joas frecven este cea mai important component a unui semnal. Aceasta definete identitatea semnalului. Coninutul de frecven nalt aduce mbuntiri n descrierea imaginii. Dac lum ca exemplu vocea uman i eliminm frecvenele nalte, aceasta se va auzi diferit dar va fi inteligibil. n cazul n care eliminm frecvenele nalte, vocea este posibil s fie distorsionat. Dac lum n considerare reprezentarea cu filtre a DWT atunci avem dou componenete: aproximrile sunt componente cu factor de scal mare, adic componente de frecven joas detalii componente cu factor de scal mic, adic componente de frecven nalt Procesul de implementare a DWT cu filtre este reprezentat n Figura 12.8.
S FTJ FTS

Figura 12.8 Reprezentarea cu filtre a DWT

Semnalul original este trecut prin dou filtre complementare rezultnd dou componente A aproximri, D detalii. Din pcate dac se implementeaz operaia de filtrare pe un semnal digital real, n urma filtrrii vom obine de dou ori mai multe date dect cele coninute n semnalul original. De exemplu, din cele 1000 de eantioane care formeaz semnalul original, vom obine 1000 de eantioane pentru A, i respectiv 1000 de eantioane pentru D. Asta nseamn c rezultatul aplicrii DWT este de 2000 de eantioane. Pentru a rezolva acest impediment se realizeaz o operaie de subeantionare a semnalului care a fost trecut prin cele dou filtre, astfel nct la ieirea bancului de filtre s obinem aceeai cantitate de informaie ca la intrare. Procesul de reconstrucie a semnalului folosind coeficienii DWT se face parcurgnd calea invers i anume: se realizeaz supra-eantionarea, i se aplic o filtrare. Procesul de analiz i sintez DWT este prezentat n Figura 12.9.
Y0 (z) X(z) H0(z) Analiz H1(z) 2 2 Y1 (z)
Figura 12.9 Codarea i reconstrucia cu dou subbenzi

2 Sintez

G0(z)

Y(z)

G1(z)

Condiiile de obinere a filtrelor de reconstrucie innd cont de faptul c matricea de filtrare este ortonormal, i deci inversa ei este egal cu matricea transpus, vor fi: n n 1 g 0 ( n ) = ( 1) h0 ( n 1) g1 ( n ) = ( 1) h1 ( n 1)
5

12. Transformata Wavelet

12.4 Proiectarea filtrelor Wavelet


Aa cum am vzut n paragraful anterior elementele principale ale unui sistem de analiz folosind transformata Wavelet sunt cele dou filtre H0 i H1. Cele dou filtre au rolul de a mprii semnalul n dou benzi de frecven, care sunt apoi mprite cu 2 (subeantionate). La partea de sintez a semnalului semnalele Y0 i Y1 sunt interpolate, prin inserarea de zerouri ntre eantioane, filtrarea i mixarea mpreun pentru a reproduce semnalul original. n Figura 12.9 este prezentat arhitectura unui sistem de analiz/sintez care folosete transformata Wavelet. innd cont de arhitectura aplicaiei i de teorema convoluiei, semnalul de ieire Y(z) poate fi scris sub forma:

Y (z ) = G 0 (z )Y 0 (z ) + G 1(z )Y 1(z )
Y 0 (z ) = 1 [H 0(z )X (z )+ H 0 (- z )X (- z )] 2

12.7
12.8

Y 1( z ) =

1 [H 1(z )X (z )+ H 1 (- z )X (- z )] 2

12.9

Dac nlocuim ecuaiile 12.8 i 12.9 n ecuaia 12.7 obinem:


1 G [ 0 (z )H 0 (z ) + G 1(z )H 1(z ) ]X (z ) 2

Y (z ) =

1 + [ 0 (z )H 0 (- z ) + G 1(z )H 1(- z ) ]X (- z ) G 2

12.10

Din ecuaia 2.10 se observ c pentru a elimina efectul de alias trebuie s fie ndeplinite urmtoarele condiii pentru filtrele de sintez:
G 0 (z ) = H 1(- z ) G 1(z ) = - H 0 (- z )

12.11

Condiia pe care trebuie s o ndeplineasc filtrele de analiz i sintez pentru a avea satisfcut condiia de reconstrucie perfect este:

D (z ) = P (z ) - P (- z ) = 2 z - m
unde:

12.12

P (z ) = H 0 (z )H 1(- z )

12.13

se numete produs de filtrare, iar m este ntrzierea introdus de combinaia de filtre de analiz/sintez. Dac considerm c H0(z) i H1(z) ca fiind filtre de lungime M0 respectiv M1, putem defini produsul de filtrare P(z) ca fiind:
P (z ) = H 0 (z )H 1(- z ) =
M 0 + M1- 2

pi z - i

12.14

i= 0

Pentru a putea obine filtrele de analiz/sintez pornind de la produsul de filtrare P(z) putem folosi urmtoarea metod propus de M.Vitterli: se ia un polinom P(z) care s satisfac urmtoarele condiii: o gradul polinomului = M0 + M1 2
6

Aplicaii ale prelucrrilor digitale de imagini

p2i arbitrar 0, daca i k o p 2i + 1 = 2, daca i = k se descompune polinomul P(z) n cei M0+M1-2 factori, care conine fiecare un zero
o o
P (z ) = d 0d1
M 0 + M1- 3 i= 0

(z

- 1

+ ai )

12.15

o unde d0, d1, sunt factori de scalare se mparte setul de zerouri n dou subseturi n mod arbitrar: o
P (z ) = d 0 (z - 1 + a i )d1
i= 0 M 0- 2 i= 0 M 0- 2 M 0 + M1- 3 i = M0- 1

(z

- 1

+ ai )

12.16

o se atribuie fiecare set filtrelor H0 respectiv H1 o


H 0 (z ) = d 0 (z - 1 + a i ) H 1(z ) = d1 ;
M 0 + M1- 3 i = M 0- 1

(z

- 1

+ ai )

12.17

Pornind de la metoda propus de Vitterli alegem polinomul P(z) de forma: P (z ) = a 0 + a 2 z - 2 + ... + a 2 p - 2 z - 2 p + 2 + z - 2 p + 1 + a 2 p - 2 z - 2 p + 2 + ... + a 0 z - 4 p + 2 12.18

Polinomul P(z) trebuie optimizat pe baza unor constrngeri de localizare a zerourilor. Trebuie s amintit faptul c pentru un polinom P(z) de lungime 4p-1, exist numai p coeficieni care trebuie optimizai, iar rezultatul optimizrii va duce la obinerea a dou filtre de lungime 2p. Una din constrngerile de proiectare pe care putem s le impunem este ca toi coeficienii polinomului sie puteri ntregi ale lui 2. Avem mai multe cazuri pe care putem s le studiem: Cazul 1. Dac p=1, se obine cel mai simplu banc de filtre, n timp ce forma polinomului P(z) va fi: P (z ) = a 0 + z - 1 + a 0z - 2 Singura soluie disponibil pentru a avea un filtru trece jos este: 1 1 1 1 P (z ) = + z - 1 + z - 1 2 2 2 2 Cazul 2. Dac p=2, polinomul P(z) devine: P (z ) = a 0 + a 2 z - 2 + z - 3 + a 2 z - 4 + a 0 z - 6 Prin impunerea unui dublu zero la z=-1 putem factoriza polinomul P(z):
P (z ) = (1 + z - 1 )(1 + z - 1 )(a 0 - 2a 0z - 1 + (1/ 2 + 2a 0 )z - 2 - 2a 0z - 3 + a 0z - 4 )

12.19

12.20

12.21

12.22

Valorile lui a0 pentru care avem filtre sunt cuprinse n intervalul [-1/8,0]. Dac alegem a0=-1/16; vom obine alte dou zerouri pentru z=-1 i deci polinomul P(z) poate fi scris:
2 2 1 P (z ) = (1 + z - 1 ) (1 + z - 1 ) (- 1 + 4z - 1 - z - 2 ) = 16 3 1 = (1 + z - 1 ) (- 1 + 3z - 1 + 3z - 2 - z - 3 ) 16

12.23

innd cont de ecuaia 12.14 putem gsi dou soluii pentru determinarea bancurilor de filtre H0(z)respective H1(z).
7

12. Transformata Wavelet

Soluia 1. Caz n care lungimea celor dou filtre este egal:


1 (1 + 3z - 1 + 3z - 2 + z - 3 ) 4 1 H 1(- z ) = (- 1 + 3z - 1 + 3z - 2 - z - 3 ) 4 H 0 (z ) = sau 1 (- 1 + 3z - 1 + 3z - 2 - z - 3 ) 4 1 H 1(- z ) = (1 + 3z - 1 + 3z - 2 + z - 3 ) 4 H 0 (z ) = 12.25 12.24

Soluia 2. Caz n care lungimea celor dou filtre nu este egal:


1 (- 1 + 2z - 1 + 6z - 2 + 2z - 3 - z - 4 ) 8 1 H 1(- z ) = (1 + 2z - 1 + z - 2 ) 2 H 0 (z ) = 12.26

Prin compararea celor dou soluii se constat c procesul de interpolare pentru reconstrucia semnalului n cazul soluiei a doua este cunoscut ca fiind o interpolare liniar. Acest tip de interpolare este mult mai bine suportat de ochi producnd valori la ieire mai netede. Din ecuaia 12.26 putem deduce forma unui banc de filtre de dimensiune (5,3) ca fiind:
h0 (n ) = (-1 2 6 2 -1) / 8 h1(n ) = (-1 2 -1) / 2

12.27

Pornind de la ecuaiile 12.11, putem determina filtrele folosite pentru sinteza G0(z) respectiv G1(z): 1 (1 + 2z - 1 + z - 2 ) 2 1 G 1(z ) = - H 0 (- z ) = - (- 1 - 2z - 1 + 6z - 2 - 2z - 3 - z - 4 ) 8 G 0 (z ) = H 1(- z ) = Din ecuaia 12.28 putem determina coeficienii filtrelor de sintez:
g0 (n ) = (1 2 1) / 2 g1(n ) = (-1 -2 6 -2 -1) / 8

12.28

12.29

Datorit faptului c n urma aplicrii transformatei wavelet se obin un numr dublu de eantioane este necesar aplicarea unei operaiuni de subeantionare. Pentru ca aceast operaiune s nu distorsioneze semnalul original filtrele band sunt decalate astfel nct filtrele h0 s fie centrate pe 0 n timp ce filtrele h1 s fie centrate pe 1. Astfel, n urma operaiei de subeantionare se rein eantioanele pare din banda de joas frecven, i respectiv cele impare din banda de nalt frecven. n Tabelul 12.1 se poate observa poziionarea coeficienilor filtrelor Wavelet pentru un banc de dimensiune (5,3).
Tabelul 12.1 Coeficienii filtrelor de analiz i sintez pentru un banc de filtre (5,3)

n
0 1 2

h0(n)
3/4 1/4 -1/8

g0(n)
+1 +1/2

n
-1 -2,0

h1(n)
+1 -1/2

n
1 0,2 -1,3

g1(n)
+3/4 -1/4 -1/8

Aplicaii ale prelucrrilor digitale de imagini

12.4.1

Implementarea DWT rapid schema de lifting 1

n cazul implementrii DCT exist dezvoltate o serie de arhitecturi care s simplifice schema codorului i decodorului DCT, att din punct de vedere al capacitii de memorie utilizate ct i din punct de vedere al necesarului software sau hardware. Limitarea impus pentru DCT n cazul aplicrii acesteia n standardul JPEG era de mprire a imaginii n blocuri de 8x8 pixeli ceea ce fcea ca prelucrarea s se poat face numai pe un bloc de 8x8 pixeli, ceea ce reducea net capacitatea de memorie necesar. n cazul implementrii DWT 2D trebuie s lum n considerare ntreaga imagine i deci trebuie folosit un algoritm de calcul rapid i eficient al acesteia astfel nct aceasta s poat fi introdus cu succes n schema sistemelor de codare. Sau dezvoltat o serie de astfel de algoritmi pentru calculul rapid al DWT. Unul dintre cei mai interesai algoritmi folosii de asemenea i n standardul JPEG2000 este schema de lifting propus de Daubechies i Sweldens n 1997. S notm cu x[k ] , secvena de intrare i cu y0 [k ] , y1[k ] subbenzile care se obin n urma aplicrii transformatei. Cea mai simpl transformare este mprirea eantioanelor de intrare n {0} eantioane pare i impare. S notm eantioanele pare y0 [n] = x[2n] iar pe cele impare
{0} y1 [n] = x[2n + 1] . Aceast transformare poart numele de transformat Wavelet lazy, dei n fapt nu reprezint o transformare Wavelet complet, i vom vedea n continuare care este cauza acestei afirmaii. Vom demonstra n paragraful urmtor c orice transformare pe subbenzi poate {0} fi implementat prin actualizarea (operaiunea de updating) succesiv a subbenzilor, y0 [n] , {0} y1 [n] , ntr-o secven numit pai de lifting.

{0} x [ 2n ] = y0 [ n ]

{1} y0 [ n ]

{ L} {2} { { y0 [ n ] y0L 2} [ n ] y0 L 1} [ n ] y0 [ n ] . + +

K0

y [ 2n ]

L 1

{0} x [ 2n + 1] = y1 [ n ]

.
{1} y1 [ n ] {2} y1 [ n ]

{ { y1 L 2} [ n ] y1 L 1} [ n ]

K1
{ y1 L} [ n ]

y [ 2n + 1]

Figura 12.10 Implementarea schemei de lifting pentru analiza Wavelet

Procedura de lifting este ilustrat n Figura 12.10. n fiecare pas de lifting o sub-secven este actualizat prin adugarea versiunii filtrate ale celeilalte sub-secvene. Pentru a identifica paii operaiunii de lifting, vom folosi indicele l care ia valorile l=1,2,3, ..., L. n cazul n care indicii l sunt impari atunci:
{ { y0l } [ n ] = y0l 1} [ n ] { { { y1 l } [ n ] = y1 l 1} [ n ] + l [i ] y0l 1} [ n i ]

12.30

n cazul n care indicii l sunt pari atunci:

12. Transformata Wavelet


{ { { y0l } [ n ] = y0l 1} [ n ] + l [i ] y1 l 1} [ n i ]

{l } 1

[ n] = y

{l 1} 1

[ n]

12.31

{ { Dup finalizarea celor L pai de lifting, sub-secvenele y0L}[n] , y1 L}[n] trebuie scalate cu factorii K0 i respectiv K1 pentru a putea reface subbenzile de detalii i aproximri (high-pass, low-pass) adic y0 [n] , y1[n] . Pentru a reface semnalul de la intrare pornind de la subbenzile y0 [n] , y1[n] se aplic algoritmul n ordine invers parcurgnd consecutiv aceeai pai care au fost utilizai n etapa de analiz, cu specificarea evident c n loc de adugarea versiunii filtrate ale sub-secvenei opuse se folosete operaia de scdere. Pornind de la ecuaiile 12.30, 12.31 putem scrie: { y0l } ( z ) y{l 1} ( z ) = l ( z ) 0l 1} {l } y ( z) y{ ( z ) 1 1

12.32

unde
1 l ( z ) , daca l este par 1 0 l ( z ) = 0 1 l ( z ) 1 , daca l este impar

12.33

Dac utilizm ecuaia 12.32, pentru exprimarea algoritmului de lifting din Figura 12.10, vom obine: y0 ( z ) x0 ( z ) = K L ( z ) L 1 ( z ) ... 2 ( z ) 1 ( z ) y1 ( z ) x1 ( z ) unde K este matricea diagonal a factorilor de ctig K0, K1.
K K = 0 0

12.34

0 K1

Pentru a ndeplini condiia de aplicare a transformatei Wavelet conform ecuaiei 12.33 este necesar ca paii de lifting s corespund descompunerii n factori a matricei polifazice a filtrului de analiz H(z):
H ( z ) = K L ( z ) L 1 ( z ) ... 2 ( z ) 1 ( z )

12.35

Avnd n vedere c procesul de descompunere n factori poate da mai multe rezultate, va trebui s ncercm s determinm matricea de analiz pornind de la forma celei de sintez. Conform condiiei de reconstrucie perfect G(z)=(H(z))-1. De asemenea trebuie s inem cont de factorul de scar i astfel conform definiiei filtrului de analiz det ( G ( z ) ) = 1 . Conform condiiei de reconstrucie perfect:
H ( z)G ( z) =1
K L ( z ) L 1 ( z ) ... 2 ( z ) 1 ( z ) G ( z ) = 1

L ( z ) L 1 ( z ) ... 2 ( z ) 1 ( z ) G ( z ) = K 1 Vom presupune c numrul de pai L necesari implementrii operaiei de lifting este par, astfel c innd cont de ecuaia 12.33 putem scrie:
10

Aplicaii ale prelucrrilor digitale de imagini

1 L ( z ) 1 L 1 ( z ) ... 2 ( z ) 1 ( z ) G ( z ) = K 1 0

12.36

Dac notm cu G{l } ( z ) , produsul parial i dac G{0} ( z ) = G ( z ) , atunci G{l } ( z ) = l ( z ) G{l 1} ( z ) , pentru l 1 12.37

Ideea care trebuie s o implementm este de a selecta paii de lifting, l ( z ) , astfel nct s reducem gradul polinoamelor din prima coloan a lui G{l } ( z ) . n general, G{l } ( z ) poate fi scris:
{l G{l } ( z ) G01} ( z ) G{l } ( z ) = 00} G {l ( z ) G {l } ( z ) 11 10

Dac presupunem c l este par atunci ecuaia 12.37 poate fi rescris:


{l {l {l {l G00} ( z ) 1 l ( z ) G001} ( z ) G001} ( z ) + l ( z ) G101} ( z ) = {l 1} = {l } {l G ( z) 0 G101} ( z ) 1 G10 ( z ) 10

12.38

Dac notm gradul(0)=-1 i definim gradul unei ntregi matrici ca fiind suma gradelor {l {l polinoamelor componente atunci grad ( G{l } ( z ) ) = grad ( G001} ( z ) ) + grad ( G101} ( z ) ) . Revenind nct grad ( G{l } ( z ) ) < grad ( G{l 1} ( z ) ) .
{l {l la ecuaia 12.38, atta vreme ct grad ( G001} ( z ) ) grad ( G101} ( z ) ) putem alege l ( z ) , astfel

n mod asemntor, dac l este par atunci ecuaia 12.37 poate fi rescris:
{l {l {l 0 G001} ( z ) G00} ( z ) 1 G001} ( z ) {l } = = {l 1} {l 1} G ( z ) l ( z ) 1 G ( z ) G ( z ) + ( z ) G{l 1} ( z ) 00 l 10 10 10

12.39

grad ( G{l } ( z ) ) < grad ( G{l 1} ( z ) ) . Deci alegerea l ( z ) se face astfel nct n urma operaiei de
{l {l {l lifting fie G001} ( z ) = 0 , fie G101} ( z ) = 0 . Dac impunem ca G001} ( z ) = 0 atunci, ajungem la un

{l {l Atta vreme ct grad ( G101} ( z ) ) grad ( G001} ( z ) ) putem alege l ( z ) , astfel nct

anumit moment s avem:


{L 0 G01 '} ( z ) G{L '} ( z ) = { L '} G ( z ) G{L '} ( z ) 11 10

S ne reamintim faptul c det ( G ( z ) ) = 1 i det ( l ( z ) ) = 1 (vezi ecuaia 12.33), astfel trebuie s avem ndeplinit condiia:
{l {l G10 '} ( z ) G01'} ( z ) = 1

{l {l Conform ecuaiei de mai sus grad ( G10 '} ( z ) ) = grad ( G01'} ( z ) ) i G{ L '} ( z ) va avea forma:

0 G{L '} ( z ) = K 1 z p 0 pentru orice p i factorii K1 , K 0

K11 z p { G11L '} ( z )

care s satisfac condiia:

K1 K 0 = = det ( H ( z ) )
11

12. Transformata Wavelet

Dac notm L-1=L+2 asta nseamn c mai trebuie s adugm doi pai de lifting:
1 G{ L 1} ( z ) = p z 1 = p z 1 = p z K 1 = 0 0 0 1 z p { L '} G ( z) 1 0 1

0 1 z p 0 1 p 1 0 1 K0 z

K11 z p { G11L '} ( z ) 1 p K1 z 0 z p K 1 z p G{ L '} ( z ) 0 0 11 { {L K11 z p z p G11L '} ( z ) K 01 G01 1} ( z ) = K11 K11 0

12.40

{L Conform ecuaiei 12.36 rezult l ( z ) = K1G01 1} ( z ) .

Ideea pe care trebuie s o reinem este c trebuie s reducem succesiv gradul polinomului {l G ( z ) , sau G00} ( z ) prin inserarea pailor algoritmului de lifting.
{l } 01

n continuare vom prezenta un exemplu de implementare a algoritmului de lifting. S lum n considerare un filtru spline de dimensiune 5/3. Conform celor prezentate mai sus putem obine:

g0 ( z ) =

1 1 1 z + 1 + z1 2 2 1 1 3 1 1 g1 ( z ) = z 3 z 2 + z 1 z 4 2 2 2 4
g 0 ( z ) = G00 ( z 2 ) + z 1G10 ( z 2 ) g1 ( z ) = G01 ( z 2 ) + z 1G11 ( z 2 )

Atunci conform definiiei componentelor polifazice (vezi [6], pag.237) putem scrie:

Comparnd cele dou seturi de ecuaii, putem s determinm cele patru componente ale matricei polifazice, astfel nct s putem scrie G(z):
1 G ( z) = 1 (1 + z ) 2

1 (1 + z 1 ) 2 3 1 1 ( z + z) 2 4

{l {l Deoarece, grad ( G101} ( z ) ) grad ( G001} ( z ) ) , nseamn c putem s reducem gradul

polinomului G10 n primul pas de lifting. Dac alegem 1 ( z ) =

1 (1 + z ) , vom obine: 2

1 0 1 G{1} ( z ) = 1 (1 + z ) 1 1 1 + z ) 2 ( 2 1 1 1 2 (1 + z ) = 0 2

1 (1 + z 1 ) 2 3 1 1 ( z + z) 2 4

12

Aplicaii ale prelucrrilor digitale de imagini

1 (1 + z 1 ) . n concluzie pentru a 4 aplica transformata Wavelet folosind filtre spline de dimensiune 5/3 trebuie s implementm 2 pai ai algoritmului de lifting K0, K1, 1, 2. Din ecuaia 12.40 rezult c K0=1, K1=1/2 iar 1 ( z ) =

12.4.2

Implementarea DWT rapid schema de lifting 2

n Figura 12.11 sunt prezentai paii corespunztori algoritmului de lifting pentru un banc de filtre Daubechies de dimensiune (5,3). Aceast abordare a algoritmului de lifting este mult mai intuitiv dect abordarea teoretic prezentat n paragraful 12.4.1. Secvenele si0 i d i0 , reprezint secvenele pare i impare rezultate n urma aplicrii transformatei wavelet lazy. innd cont de valorile filtrelor bancului (5,3) din Tabelul 12.1, pasul de predicie const din predicia d i0 prin medierea celor doi vecini din secvena par i scderea mediei din valoarea iniial a eantionului.

{ } { }

{ }

d i1 = d i0

1 0 si + si0+1 2

12.41

Avnd n vedere structura simpl a bancului de filtre (5,3) valorile care se obin la ieirea primei etape {di1} , reprezint de fapt ieirea high-pass a transformatei Wavelet. Numrul de pixeli pari implicai n pasul de predicie depinde de tipului bancului de filtre. Pasul de modificare const din adugarea la eantioanele pare o combinaie liniar a eantioanelor impare create n pasul de predicie di1 , rezultnd secvena si1 rezultnd:

{ }

{ }

si1 = si0 +

1 1 di 1 + di1 4

)
1 i

12.42 reprezint tocmai ieirea low-pass a

Pentru filtrul de dimensiune (5,3), ieirea

{s }

transformatei wavelet. Ca i n cazul pasului de predicie i n etapa de modificare intervin un numr de pixeli dependeni de lungimea filtrului DWT.
Secvena de intrare

Ieire Highpass

Ieire Lowpass
Figura 12.11 Paii operaiei de lifting pentru un banc de filtre DWT (5,3)

n general, etapele de predicie i modificare sunt repetate de N ori, singura modificare fiind la adncimea de predicie care este diferit la fiecare iteraie. Formulele generale de predicie i modificare care pot fi folosite pentru implementarea algoritmului de lifting sunt:
n din = din 1 + Pn (k ) sk 1 , k

unde n [1, 2,K , N ]

12.43

13

12. Transformata Wavelet

sin = sin 1 + U n (k )d kn ,
k

unde n [1, 2,K , N ]

12.44

unde Pn(k) i Un(k) reprezint adncimea pailor de predicie i respectiv modificare corespunztoare pasului n-lea. Pentru bancul de filtre (5,3) N=1 n timp ce pentru bancul de filtre Daubechies (9,7) N=2. Valorile de ieire ale ultimei etape de predicie vor reprezenta n acest caz valorile de ieire ale filtrului DWT high-pass, n timp ce valorile de ieire ale ultimei etape de modificare vor reprezenta ieirea filtrului low-pass DWT. Valori de predicie vor trebui scalate cu factorul K1, n timp ce valorile obinute n urma aplicrii algoritmului de modificare vor trebui scalate cu factorul K0. n cazul bancului de filtre (5,3) K0=K1=1. Valorile corespunztoare filtrului (9,7) sunt prezentate n Figura 12.12.
Secvena de intrare

Etape intermediare Ieire DWT High-pass Ieire DWT low-pass

Figura 12.12 Paii de lifting pentru filtrul (9,7)

12.5

Transformata Wavelet discret bidimensional

n paragrafele precedente s-a discutat despre transformata Wavelet unidimensional. Pentru imagini bidimensionale este necesar aplicarea transformatei wavelet unidimensionale discrete de dou ori, odat pe liniile i apoi pe coloanele matricii corespunztoare imaginii. Aceast manier de aplicare a DWT pentru un semnal bidimensional, eantionat cu o reea dreptunghiular, se numete n literatur transformare diadic 2-D DWT. Cuvntul diadic se refer la faptul c avem acelai factor de scal pentru aplicarea transformatei. Descompunerea imaginii originale cu ajutorul transformrii 2D-DWT diadice se face n patru subbenzi, aa cum este exemplificat n Figura 12.13:
LL LH

HL

HH

Figura 12.13 Primul pas al aplicrii transformrii 2D-DWT diadice

Zona LL reprezint subbanda care conine toate informaiile de joas frecven. Zona HH conine toate informaiile de nalt frecven, iar celelalte dou zone, HL i LH, conin informaiile de nalt frecven pe direcie vertical i de joas frecven pe direcie orizontal,
14

Aplicaii ale prelucrrilor digitale de imagini

respectiv de joas frecven pe vertical i de nalt frecven pe orizontal. Pentru a obine o transformat DWT complet se repet pasul de descompunere pe subbanda LL. n urma celui deal doilea pas se obine:
LL (1) LH (3) LH (6) HL (2) HH (4) HH (7) HL (5)

Figura 12.14 Transformare 2D-DWT - pasul doi

n cele mai multe dintre lucrrile de specialitate aplicaiile de codare se fac prin aplicarea a trei sau chiar patru pai ai algoritmului de codare wavelet diadic. Trebuie avut ns n vedere c la imagini mai mici, prin aplicarea a mai mult de trei pai de codare wavelet exist posibilitatea ca, nainte de implementarea ultimului pas, subbanda de joas frecven s aib dimensiuni comparabile cu lungimea filtrului i s existe posibilitatea interferenei, datorit simetriei care exist ntr-o linie sau ntr-o coloan. De aceea este bine s se ia n considerare toate erorile care pot aprea datorit acestui aspect.

1 3 6

2 4

5 8 7

10

Figura 12.15 Exemplu de transformare 2D-DWT n trei pai

12.6 Funcii folosite pentru implementarea funciilor Wavelet


IMAQ SetImageSize Funcia modific rezoluia unei imagini

Image referina la imaginea a crei dimensiune dorim s o modificm X Resolution seteaz noua rezoluie pe orizontal a imaginii Y Resolution seteaz noua rezoluie pe vertical a imaginii Image out referina la imaginea de ieire a crei dimensiune a fost modificat IMAQ SetRowCol Modific intensitatea pixelilor dintr-o coloan sau linie a unei imagini

15

12. Transformata Wavelet

Row/Column (Row) specific dac este vorba de selectarea unei linii sau a unei coloane Number reprezint numrul liniei sau coloanei care va fi nlocuit Image referina la imaginea surs de intrare Pixels (U8) este un tablou de valori care conine noile valori ale coloanei sau liniei aferente. Se utilizeaz n cazul n care imaginea este pe 8 bii/pixel. Pixels (U16) este un tablou de valori care conine noile valori ale coloanei sau liniei aferente. Se utilizeaz n cazul n care imaginea este pe 16 bii/pixel. Pixels (float) este un tablou de valori care conine noile valori ale coloanei sau liniei aferente. Se utilizeaz n cazul n care imaginea este flotant (32 bii/pixel). Image out referina la imaginea de ieire a crei linie/coloana a fost modificat

IMAQ GetRowCol Extrage o coloan sau linie dintr-o imagine

Row/Column (Row) specific dac este vorba de extragerea unei linii sau a unei coloane Number reprezint numrul liniei sau coloanei care va fi extras Image referina la imaginea surs de intrare Pixels (U8) este un tablou de valori care conine valorile coloanei sau liniei extrase. Se utilizeaz n cazul n care imaginea este pe 8 bii/pixel. Pixels (U16) este un tablou de valori care conine valorile coloanei sau liniei extrase. Se utilizeaz n cazul n care imaginea este pe 16 bii/pixel. Pixels (float) este un tablou de valori care conine valorile coloanei sau liniei extrase. Se utilizeaz n cazul n care imaginea este flotant. Initialize Array Creeaz un tablou n-dimensional n care fiecare element este iniializat cu valoarea din cmpul element. Folosind cursorul de poziionare se poate redimensiona tabloul prin adugarea mai multor dimensiuni.

element este valoarea folosit pentru iniializarea tuturor elementelor tabloului. Poate fi orice tip scalar. dimension size 0..n-1 trebuie s fie un numr, i reprezint mrimea tabloului pentru acea dimensiune. Funcia va crea un tablou gol dac dimension size este 0. initialized array este un tablou de acelai tip cu tipul element-ului.

16

Aplicaii ale prelucrrilor digitale de imagini

12.7 Desfurarea lucrrii


Lucrrile 1-11 au utilizat n principal funcii de prelucrare a imaginilor oferite de pachetul IMAQ Vision. n lucrarea 12, vom folosi propria funcie pentru calculul transformatei Wavelet. Pentru aceasta vom folosi facilitatea oferit de LabView de a utiliza librrii dinamice DLL pentru a crea noi funcii LabView. Pentru a nelege care este mecanismul exact al lucrului cu librriile dinamice putei studia orice documentaie care trateaz scrierea DLL-urilor n C++ [6]. Librria dinamic creat pentru aplicarea transformatei Wavelet export trei funcii:
void F_DWT(long nh, long N, double data[], double out_data[]); void I_DWT(long nh, long N, double data[], double out_data[]); void aranjare(long N, double out_data[]);

Funcia F_DWT, calculeaz transformata Wavelet pentru un tablou unidimensional data[], avnd lungimea N, i care folosete ca filtru Wavelet valoarea nh. Valoarea nh variaz n intervalul de numere ntregi [-30,-2] pentru filtre Symlet i respectiv [2,30] pentru filtre Daubechies. Rezultatul aplicrii funciei Wavelet asupra data[] se va stoca n variabila out_data[]. (Observaie: irul coeficienilor de ieire va arta: A1, D1, A2, D2, A3, D3 .a.m.d. Pentru a putea vizualiza rezultatul aplicrii DWT se va folosi funcia de aranjare care are rolul de a forma irul A1, A2, A3, ... AN/2 D1, D2, D3, ..., DN/2) Funcia I_DWT, calculeaz transformata Wavelet invers pentru un tablou unidimensional data[], avnd lungimea N, i care folosete ca filtru Wavelet valoarea nh. Valoarea nh variaz n intervalul de numere ntregi [-30,-2] pentru filtre Symlet i respectiv [2,30] pentru filtre Daubechies. Rezultatul aplicrii funciei Wavelet asupra data[] se va stoca n variabila out_data[]. Funcia aranjare, are rolul de a aranja coeficienii Wavelet din irul de intrare out_data[] (de lungime N) pentru afiare n aa fel nct n prima jumatate a irului s se memoreze coeficenii low-pass (aproximrile - A), n timp ce n partea superioar se vor memora coeficienii high-pass (detaliile - D). irul va avea forma A1, A2, A3, ... AN/2 D1, D2, D3, ..., DN/2.

12.7.1

Crearea unei noi funcii LabView de generare a DWT direct


se deschide o nou sesiune LabView n fereastra diagram se selecteaz grupul ADVANCED/Call Library Function

Advanced

se selecteaz cu butonul dreapta al mouse-ului opiunea Configure, i va aprea fereastra de dialog din figura de mai jos

17

12. Transformata Wavelet

n cmpul Library Name or Path se caut locaia unde se afl dll-ul care include funciile I_DWT, F_DWT, aranjare. n cmpul Function Name se selecteaz una din funciile disponibile incluse n DLL (n cazul de fa F_DWT fiind vorba de transformata Wavelet direct) se adaug parametrii de intrare nh, N, data i out_data, folosind butonul Add a parameter After

prototipul funciei va trebui s arate ca cel din cmpul Function Prototype: se apas butonul OK

se conecteaz apoi elementele de interfa grafic de tip controale (pentru variabilele de intrare) i indicatoare (pentru variabilele de ieire). Pentru aceasta se selecteaz fiecare intrare cu butonul dreapta a mouse-ului (cursorul fiind pe mosor) i se alege opiunea Create/Control pentru variabilele de intrare, respectiv Create/Indicator pentru varaibila de ieire. n acest moment ferestrele diagram respectiv control panel vor arta ca cele din figurile de mai jos:

18

Aplicaii ale prelucrrilor digitale de imagini

salvai noul proiect (de exemplu cu numele waveletD1.vi) urmtorul pas va aloca fiecrei intrri/ieiri cte un pin de conectare la icoan care va fi folosit mai departe pentru dezvoltarea programului. Pentru aceasta n prima faz selectai fereastra control panel, i cu ajutorul mouse-ului selectai icoana din partea dreapta sus a ferestrei, efectund dobule-click pe ea.

creai-v o nou icoan corespondent aplicaiei voastre

dup ce ai creat cu succes icoana aferent noii aplicaii cu ajutorul butonului dreapta al mouse-ului selectai de pe noua icoan opiunea Show connector. Pentru fiecare variabil (control) de intrare selectai un pin de conectare (sgeile albe) la fel ca n figura de mai jos, i de asemenea pentru fiecare variabil (control) de ieire selectai un pin de conectare (sgeata neagr).

salvai fiierul creat.

19

12. Transformata Wavelet

12.7.2

Crearea unei funcii LabView de generare a IDWT invers


se procedeaz n mod asemntor cu punctul 12.7.1 creai o nou funcie care s realizeze transformata Wavelet invers tiind c trebuie s apelai funcia I_DWT din dll-ul pus la dispoziie.

12.7.3

Crearea unei funcii LabView de aranjare a coeficienilor DWT


se procedeaz n mod asemntor cu punctul 12.7.1 creai o nou funcie care s realizeze aranjarea coeficienilor DWT tiind c trebuie s apelai funcia aranjare din dll-ul pus la dispoziie.

12.7.4 Crearea unei aplicaii/funcii LabView DWT pe rnduri i coloane


se deschide o sesiune LabView se creeaz un nou proiect n fereastra corespunztoare diagramei se completeaz cu funciile IMAQ astfel nct s obinem schema din figurile de mai jos (figurile corespund CASE-ului TRUE respectiv FALSE):

20

Aplicaii ale prelucrrilor digitale de imagini

diagrama conine un ciclu FOR (de la i=0 pn la rezoluie pe y dac se extrag liniile sau respectiv rezoluie pe x dac se extrag coloanele). Ideea este de a citi fiecare linie/coloan din imaginea de intrare (n funcie de rezoluia pe x sau y), dup care se aplic DWT 1D cu funcia creat la punctul 12.7.1. Se aranjeaz apoi coeficienii DWT cu funcia creat la punctul 12.7.3, i se salveaz n variabila care reprezint imaginea destinaie. Pentru a se extrage o anumit linie/coloan din imaginea de intrare se folosete funcia IMAQ GetRowCol, iar pentru a se forma noua imagine destinaie se utilizeaz funcia IMAQ SetRowCol. fereastra interfa grafic va arat ca cea prezentat n imaginea de mai jos:

folosind funcia creat mai sus dezvoltai o aplicaie care s realizeze transformata Wavelet bidimensional i afiai rezultatul.

21

12. Transformata Wavelet

12.8 Bibliografie suplimentar


[1]. IMAQ Vision for G Reference Manual, National Instruments, 1999 [2]. IMAQ Vision User Manual, National Instruments, 1999 [3]. IMAQ PCI/PXI 1411 User Manual, National Instruments, 1999 [4]. M. Vetterli, J. Kovacevic, Wavelets and Subband coding, Prentice Hall 1995 [5]. A. VLAICU, Prelucrarea Digital a Imaginilor, editura Albastr, Cluj Napoca, 1997 [6]. G.X. Ritter, J.N. Wilson, Handbook of Computer Vision Algorithms in Image Algebra, CRC Press, 2000 [7]. D.J. Kruglinski, G. Sheperd, S. Wingo, Programming Microsoft Visual C++ -

fifth edition Microsoft Press, 1998


[8]. Gonzales C. Rafael, Digital Image Processing, Addison Wesley, 1993 [9]. D.S.Taubman, M.W. Marcellin, JPEG 2000 Image compression, fundamentals,

standards and practice, Kluwer Academic Publisher, 2001

22

Prelucrarea digital a imaginilor

23