Transformate pentru semnale multidimensionale Semnale 1D: s(t) Unele caracteristici ale semnalului pot fi ușor descrise în domeniul frecvență Transformata Fourier: s(t) S(ω) (sau s(t) S(f t )) unde t este timpul în secunde; f t este frecvența temporală în Hz (cicluri/s) f t măsoară variații temporale ale amplitudinii lui s(t) ω = 2πf t este frecvența unghiulară temporală în 1/s=Hz
Transformate pentru semnale multidimensionale semnalele sinusoidale s(t) = Acos(2πft + φ) sunt importante pentru că pot fi folosite pentru a sintetiza orice semnal: st ( ) = Akcos(2 π ft k ) k= orice semnal poate fi descompus în multe semnale sinusoidale de diferite f și diferite A în loc de cos putem folosi exponențiale: serii Fourier j2π ft e = π ft + j π f cos(2 ) sin(2 ) j2π ft k () = Ae k k= st
Transformate pentru semnale multidimensionale st ( ) = Akcos(2 π ft k ) k= Suma semnalelor de mai sus
Transformate pentru semnale multidimensionale cum putem observa f din forma de undă în timp? constantă în timp componentă pe f= (DC) sinusoidă o singură componentă pe frecvența f semnal periodic frecvență fundamentală și armonici semnal variabil lent conține doar frecvențe joase semnal variabil rapid conține frecvențe înalte estimarea celei mai mari frecvențe: inversul celui mai scurt interval între două minime sau maxime ale semnalului
Transformate pentru semnale multidimensionale Avantajul reprezentării în domeniul frecvență arată clar compunerea semnalului în frecvență se poate schimba amplitudinea oricărei componente prin filtrare FTJ netezire, eliminarea zgomotului FTS detecția variațiilor/tranzițiilor/contururilor FTB păstrarea unui interval de frecvențe amplif. fr. înalte intensificarea variațiilor/tranzițiilor/contururilor
Transformate pentru semnale multidimensionale Semnale 2D (imagini): I(x,y) Frecvența spațială măsoară cât de repede se modifică intensitatea imaginii în planul imaginii Frecvența spațială caracterizată prin frecvențe de variație pe două dimensiuni ortogonale pe orizontală: f x : cicluri/unitatea de distanță pe orizontală pe verticală: f y : cicluri/unitatea de distanță pe verticală Poate fi specificată și prin: 2 2 amplitudine: fm = fx + fy unghi de variație: θ = arctg( f / f ) y x
Transformate pentru semnale multidimensionale Ixy (, ) = sin(1 π x) Ixy (, ) = sin(1πx+ 2 πy) (fx,fy)=(,) (fx,fy)=(,1) fx= înseamnă că avem cinci cicluri pe fiecare rând
Transformate pentru semnale multidimensionale Semnale 3D (video): s(x,y,t) Frecvențe spațiale f x și f y Frecvență temporală f t Măsoară variația temporală a intensității pixelului Depinde de poziția spațială (fiecare punct poate varia diferit) Cauzată de mișcarea obiectului sau camerei şi condiţiile de iluminare
Transformate pentru semnale 1D Semnale continue deterministe x(t) Transformata Fourier Transformata Laplace Transformata Cosinus Transformata Wavelet j2π ft X( f ) x() t e dt = st X() s = x() t e dt 2 X( f ) = x( t)cos(2 π ft) dt π
Transformate pentru semnale 1D Transformate Fourier 1D importante
Transformate pentru semnale 1D Semnale discrete x(n), n=,1,,n-1 Transformata Fourier Discretă Transformata Z N 1 n= k j2π n N Xk ( ) = xne ( ), k=,1,..., N 1 Transformata Cosinus Discretă ( 2n+ 1) N 1 Xz () = xnz () n= N 1 kπ Xk ( ) = αk xn ( )cos, k=,1,..., N 1 n= 2N 1, pentru k = N αk = 2 Transformata Wavelet Discretă, pentru 1 k N 1 N n
Transformate pentru semnale 2D (imagini) Semnal 2D discret (imagine): I(x,y) 1. Transformata Fourier Discretă 2D N 1 M 1 ux vy j2π + N M Fuv (, ) = Ixye (, ), u=,1,..., N 1, v=,1,..., M 1 x= y= FFT-2D - metodă numerică de calcul a DFT-2D Funcții Matlab: fft2, ifft2
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru diferite imagini (spectru centrat pe mijloc) f(x,y) Fuv (, )
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru diferite imagini f(x,y) Fuv (, )
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru diferite imagini f(x,y) Fuv (, )
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru diferite imagini f(x,y) Fuv (, )
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru diferite imagini f(x,y) Fuv (, )
Transformate pentru semnale 2D 1. Transformata Fourier Discretă 2D Fuv (, ) pentru o imagine reală (spectru centrat pe mijloc)
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D N 1M 1 π x= y= blocuri de 8x8 pixeli: ( 2 + 1) ( 2 + 1) x u y vπ Cuv (, ) = kk u v Ixy (, )cos cos, 2N 2M k u ( 2 + 1) π ( 2 + 1) u=,1,..., N 1 v=,1,..., M 1 1 1, pentru u=, pentru v= N M = kv = 2 2, pentru 1 u N 1, pentru 1 v M 1 N M 7 7 x u y vπ Cuv (, ) = kk u v Ixy (, )cos cos x= y= 16 16 1, pentru uv, = k, 2 2 u kv = 1, în rest 2
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D C(,) - coeficient DC, reprezintă frecvenţa spaţială (,) sau media ponderată a valorilor pixelilor din bloc ceilalţi coeficienţi - coeficienţi AC şi reprezintă frecvenţele spaţiale orizontale şi verticale din bloc funcţii Matlab: dct2, idct2
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D Orice bloc 8x8 este aproximat cu o combinație liniară a celor 64 de blocuri de bază De la stânga la dreapta și de sus în jos frecvența crește cu. cicluri
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D Distribuția energiei coeficienților în imagini reale: Varianță coeficienți DCT Indici coef. zig-zag Scanare zig-zag
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D Imagine originală I(x,y) în locul fiecărui bloc de 8x8 pixeli este reprezentat blocul de coeficienți DCT
Transformate pentru semnale 2D 2. Transformata Cosinus Discretă 2D Imagine originală I(x,y) Fiecare sub-imagine e obținută din coeficienții DCT de la poziția corespunzătoare (ceilalți coef =)
Transformate pentru semnale 3D (video) Semnal 3D discret (secvență video): s(x,y,t) 1. Transformata Cosinus Discretă a) 2D-DCT pe fiecare cadru video b) 3D-DCT pe întreaga secvență video (sau grup de cadre) integrează şi dimensiunea temporală eliminară corelaţia intra-cadru, cât şi inter-cadru efort de calcul mare
Transformate pentru semnale 3D (video) 2D-DCT pe blocuri 2D din fiecare cadru timp 3D-DCT pe blocuri 3D timp
Transformata Wavelet 1D semnal 1D: f(t) descompune semnalul într-un set de funcții Wavelet f(t) = combinație liniară de funcții f t = s k Φ t = () ( ) jk, () k = s ( k) Φ () t + d ( k) Ψ () t = k 1 1 j 1, k j 1, k k j s ( k) = f () t Φ () t dt coeficienți de scalare j d ( k) = f () t Ψ jk, () t dt coeficienți de detaliu (Wavelet) și j i s k j j, k t d k j ik, t = ( ) Φ () + ( ) Ψ () jk, k k i= 1 j Φ jk, () t Ψ jk, () t
Transformata Wavelet 1D Φ, () t jk sunt funcţiile de scalare, care se obţin prin scalarea şi translatarea unei funcţii de scalare de bază (tată) Φ() t : Φ j j jk, ( t ) = 2 Φ (2 t k ) Ψ, () t jk sunt funcţiile Wavelet, care se obţin prin scalarea şi translatarea unei funcţii Wavelet de bază (mamă) Ψ() t : Ψ, ( t ) = j j jk 2 Ψ (2 t k )
Transformata Wavelet 1D Exemple: 1 Functia de scalare de baza Haar. -. -1.2.4.6.8 1 1.2 Functia Wavelet mama Haar 1. -. -1.2.4.6.8 1 1.2
Transformata Wavelet 1D Exemple: 1.2 1.8 Functia de scalare de baza Dauberchies de ordin 4.6.4.2 -.2 -.4 1 2 3 4 6 7 1. Functia Wavelet mama Dauberchies de ordin 4 1. -. -1 1 2 3 4 6 7
Transformata Wavelet Discretă 1D Coeficienții s și d se pot obține în mod iterativ prin filtrare numerică şi decimare folosind bancuri de filtre de analiză: ( * ) j+ 1 2 j s = h s ( * ) j+ 1 2 j d = g s hn ( ) = h( n) gn ( ) = g( n)
Transformata Wavelet Discretă 1D Semnalul original poate fi refăcut din coeficienţi prin interpolare şi filtrare numerică folosind bancuri de filtre de sinteză: s = h* s + g* d j 2 j+ 1 2 j+ 1
Transformata Wavelet Discretă 2D imagine digitală: I(x,y) aplicăm DWT-1D mai întâi pe linii şi apoi pe coloane: I II III IV I Imaginea filtrată trece-jos pe linii şi coloane, notată LL II Imaginea filtrată trece-sus pe linii şi trece-jos pe coloane, notată HL III Imaginea filtrată trece-jos pe linii şi trece-sus pe coloane, notată LH IV Imaginea filtrată trece-sus pe linii şi coloane, notată HH
Transformata Wavelet Discretă 2D Exemplu de aplicare a DWT-2D pe trei nivele de rezoluție Prima descompunere A doua descompunere A treia descompunere LL 3 HL 3 LL 1 HL 1 LL 2 HL 2 HL 1 LH 3 HL 2 HL 2 HH 2 HL HL 1 1 LH 2 HH 2 LH 2 HH 2 HH 3 LH 1 HH 1 LH 1 HH 1 LH 1 HH 1 LH 1 HH 1
Transformata Wavelet Discretă 2D DWT-2D pentru o imagine de 8x8 pixeli descompusă pe 3 nivele 3 s 1,1 j d x x, y j y d x, y x j y d xy, este coeficientul descalare la nivelul de rezoluţie 3 este coeficientul Wavelet la nivelul de rezoluţie j şi de la poziţia (x,y) din subbanda LH coeficientul Wavelet la nivelul de rezoluţie j şi de la poziţia (x,y) din subbanda HL coeficientul Wavelet la nivelul de rezoluţie j şi de la poziţia (x,y) din subbanda HH
vector 1D Noţiuni de bază în prelucrarea numerica a semnalelor video X - coeficienţii de scalare DWT implementare 1D O coeficienţi de detaliu (Wavelet) vor fi aplicate diferite filtre Wavelet în funcţie de tipul coeficientului (de scalare sau de detaliu) Vectorul va fi transformat de log2 n ori numărul de Transformări Wavelet = nivel de descompunere coeficienţii de scalare = noul vector coeficienţii Wavelet sunt ignoraţi la o transformare următoare
DWT implementare 1D Exemplu: vector de 8 eșantioane nivel 1 nivel 2 nivel 3 numărul de transformări, în care a fost implicat fiecare coeficient
DWT implementare 2D abordare 2D: I(x,y) matrice 2D în locul unui vector coeficienţii de scalare şi Wavelet sunt impărţiţi în ambele dimensiuni un sfert dintre ei disponibili pentru următoarea transformare
DWT implementare 2D Exemplu: matrice de 8x8 pixeli
DWT familia Haar calculează media fiecărei perechi de 2 eșantioane calculează diferența dintre primul eșantion din grup și medie umple prima jumătate cu medii umple a doua jumătate cu diferențe repetă algoritmul pe prima jumătate pasul 1: [3 4 8 13 7 3] mediere diferență [4 6 1 4-1 -2 3 1]
DWT familia Haar pasul 2 [4 6 1 4-1 -2 3 1] mediere diferență [ 7-1 3-1 -2 3 1] ex. (4 + 6)/2 = 4 - = -1
DWT familia Haar pasul 3 [ 7-1 3-1 -2 3 1] medie diferență [6-1 -1 3-1 -2 3 1] media vectorului ex. ( + 7)/2 = 6-6 = -1
DWT familia Haar A = 64 9 17 4 32 41 49 8 2 47 26 34 23 1 8 3 4 49 27 3 22 14 9 61 12 2 37 29 44 2 6 13 21 36 28 4 3 4 6 1 43 3 38 19 11 62 7 42 31 39 18 1 63 7 16 24 33 2 48 6 1 aplicăm DWT-1D primului rând nivel 1 nivel 2 nivel 3 [33 32 33 32 31 29 27 2] [32. 32... 31 29 27 2] [32... 31 29 27 2]
DWT-1D aplicată fiecărui rând DWT familia Haar 32. 32. 32. 32. 32. 32. 32. 32................. 31 23 1 7 1 9 17 2 29 21 13 3 11 19 27 27 19 11 3 13 21 29 2 17 9 1 7 1 23 31 Coeficienți de scalare (media rândurilor) Coeficienți de detaliu
DWT familia Haar 27 2 23 21 11 9 7 7 9 11 21 23 2 27 4 4 4 4 4 4 4 4 32......... DWT-1D aplicată fiecărei coloane coeficient de scalare (media matricii)
DWT - 2D Aplicare DWT-2D Pas 1: înlocuiește fiecare rând cu transf. sa DWT-1D Pas 2: înlocuiește fiecare coloană cu transf. sa DWT-1D Pas 3: repetă pașii 1 & 2 pe sub-banda LL Pas 4: repetă pasul 3 până la nivelul de rezoluție dorit L H LL LH HL HH LH HL HH original nivel 1 nivel 2
DWT - 2D Descompunerea imaginii Lena pe două nivele de rezoluţie original DWT-2D Haar nivel 1 DWT-2D Haar nivel 2
DWT - 2D scalare Detalii orizontale Detalii diagonale Detalii verticale
DWT-1D implementare Matlab Descompunere DWT-1D [C,L] = WAVEDEC(X,N,'wname') descompune semnalul X la nivelul N, folosing familia Wavelet 'wname C = vector ce conține coeficienții de scalare și de detaliu L = vector ce conține nr. de coeficienți de la fiecare nivel C = [coef.scalare(n) coef.detaliu(n)... coef.detaliu(1)] L(1) = lungime coef.scalare (N) L(i) = lungime coef.detaliu (N-i+2) pentru i = 2,...,N+1 L(N+2) = lungime(x) Pentru 'wname vezi wfilters
DWT-1D implementare Matlab
Sinteză DWT-1D Noţiuni de bază în prelucrarea numerica a semnalelor video DWT-1D implementare Matlab X = WAVEREC(C,L,'wname') reconstruiește semnalul X din structura de descompunere wavelet [C,L]
DWT-2D implementare Matlab [C,S] = WAVEDEC2(X,N,'wname') C = [ A(N) H(N) V(N) D(N)... H(N-1) V(N-1) D(N-1)... H(1) V(1) D(1) ]. A = coef. de scalare, H = coef. de detaliu oriz. V = coef. de detaliu vert. D = coef. de detaliu diag. S(1,:) = dim. coef. sclare(n) S(i,:) = dim. coef. detaliu(n-i+2) for i = 2,...,N+1 si S(N+2,:) = size(x)
DWT-2D implementare Matlab
DWT-2D implementare Matlab Sinteză DWT-1D X = WAVEREC2(C,S,'wname ) Altă pereche de funcții Matlab: Analiză DWT-1D: dwt2 Sinteză DWT-1D: idwt2
Transformate pentru semnale 3D (video) 2. Transformata Wavelet Discretă a) 2D-DWT pe fiecare cadru video b) 3D-DWT pe întreaga secvență video (sau grup de cadre)
Transformate pentru semnale 3D (video) 2D-DCT pe fiecare cadru timp 3D-DWT pe grup de cadre timp