Sunteți pe pagina 1din 27

Codarea JPEG 2000

1.1 Noţiuni teoretice

• Standardul JPEG2000 a fost gândit pentru îmbunătăţirea standardului JPEG


• JPEG2000 s-a dorit a fi mai flexibil, cu un raport de compresie mult mai mare (până la
300:1), cu o structură mai unitară.
• JPEG2000 utilizează în locul Tansformatei Cosinus Discrete Transformata Wavelet Discretă
• Standardul JPEG2000 permite ambele metode de compresie: cu pierderi şi fără pierdei.
• Paşii algoritmului de codare sunt ilustraţi în Figura 1.1:

1
Imagine
originală Pregătire Transf. Wavelet Cuantizare Codare
imagine Discretă

Imagine
comprimată
Împachetare Controlul
date fluxului

Figura 1.1: Schema algoritmului de codare

Pregătirea imaginii
• Conform standardului JPEG2000 pregătirea imaginii este compusă din următoarii paşi (vezi
Figura 1.2):
- partiţionarea imagini în cadre
- ajustarea nivelului datelor
- o transformare color ireversibilă

2
Pregătire I II
imagine
Partiţionare
imagine III IV

Ajustare
nivel
[0, 2 N − 1] ⇒ [−2 N −1 , 2 N −1 ]

Transformare
color
RGB → YCbCr

3
• Pentru situaţia în care imaginea care trebuie comprimată este mai mare decât memoria
disponibilă s-a prevăzut posibilitatea partiţionarea imaginii în dreptunghiuri disjuncte numite
cadre
• Valorile datelor de intrare trebuie să fie într-o gamă centrată în jurul lui zero, deoarece
standardul operează cu filtrări de tip trece-sus. Aşa se explică necesitatea celei de a doua etape
de ajustare nivel.
• Al treilea pas în această etapă constă dintr-o tranformare a matricii color. Tipul de
transformare depinde de reprezentarea iniţială a imaginii. Se doreşte ca imaginea care va intra
în a doua etapă a procesului de compresie să fie reprezentată în formatul YCRCB.

4
Modelul imaginii

5
Transformarea color

6
Aplicarea Transformatei Wavelet
• Transformata Wavelet are expresia:

c j,k = ∫ f (t )ψ j , k (t )dt
−∞

- c j ,k sunt coeficienţii Wavelet discreţi

- ψ j , k (t ) sunt funcţiile de bază Wavelet care se obţin prin scalarea şi translatarea unei
funcţii Wavelet mamă după cum urmează:
j
ψ j , k (t ) = 2 ψ (2 j t − k )
2

unde k este parametrul de translaţie, j este parametrul de dilatare, iar ψ (t ) este funcţia
Wavelet mamă.

7
• Un exemplu de funcţie Wavelet mamă este următoarea:

Funcţia Wavelet Daubechies


• Structura TWD:

8
• Imaginea fiind un semnal bidimendional se aplică transformata wavelet pe linii şi coloane:

Aplicarea transformatei wavelet pentru componenta de luminanta pe un nivel derezoluţie

9
Aplicarea transformatei wavelet la o imagine pe un nivel
• Cele patru subimaginii sunt:
I – Imaginea filtrată trece-jos pe linii şi coloane, notată în literatura de specialitate cu LL (low
subbands for row and column filtering)
II – Imaginea filtrată trece-sus pe linii şi trece-jos pe coloane, notată în literatura de
specialitate cu HL (high subbands for row filtering and low subbands column filtering)
III – Imaginea filtrată trece-jos pe linii şi trece-sus pe coloane, notată în literatura de
specialitate cu LH (low subbands for row filtering and high subbands column filtering)

10
IV – Imaginea filtrată trece-sus pe linii şi coloane, notată în literatura de specialitate cu HH
(high subbands for row and column filtering)

Exemplu de aplicare a transformatei wavelet pe patru nivele de rezoluţie

11
Exemplu

• Subimaginea LL va fi corespondentul imaginii originale, dar la o rezoluţie mai mică cu unu


• Pentru această subimagine se aplică din nou Transformata Wavelet în acelaşi mod.
Specificaţiile standardului JPEG2000 permit efectuarea între 0 şi 32 de nivele de rezoluţie
(aplicare Transformatei Wavelet de 32 de ori).

12
• Cuantizarea
• se face cuantizarea coeficienţilor transformatei wavelet cu un cuantizor cu caracteristica
uniformă şi zonă moartă în jurul lui zero pentru fiecare subimagine.
• Pentu o subimagine se utilizează un pas de cuantizare, fiecare sub-imagine având propiul pas
de cuantizare
• Relaţia cuantizorului este dată de relaţia:
⎢ Val.coef . ⎥
q = sign(Val.coef .) ⋅ ⎢ ⎥
Δ
⎣⎢ sub −imagine ⎦⎥

13
• De exemplu pentru valoarea -21.82:

Codarea
• Fiecare subimagine a unui cadru a unei imagini este împărţită în unităţi şi mai mici, numite
blocuri de cod cu dimensiuni de tipul 64x64 sau 32x32 pixeli.

14
• În cadrul unui bloc de cod citirea valorilor cuantizate ale coeficienţilor transformatei wavelet
se face în benzi, fiecare bandă având o înălţime de patru eşantioane.
• La rândul lor citirea benzilor se face de la stânga la dreapta şi de sus în jos.

15
….
….
….
….
….
….
. . . .
. . . .
. . . .
. . . .

Modul de baleiere a coeficienţilor într-un bloc de cod


• Codarea se face ca la JPEG modul progresiv luând în considerare paralelipipede de biţi
• De notat faptul că tot procedeul de codare pentru un bloc de cod are loc la nivel de plan de bit
şi nu la nivel de bit
• Pentru codarea planului de bit se utilizează un codor aritmetic binar adaptiv bazat pe context
• Codarea cuprinde trei etape numite:
- propagarea importanţei (significance propagation)
- rezoluţia amplitudinii (magnitude refinement)
- eliminarea repetiţiilor (clean-up)

16
• Aceste etape ale compresiei sunt aplicate planelor de bit începând cu planul LSB. Singurul
care face excepţie este planul MSB la care se utilizează doar eliminarea repetiţiilor.

W1 W5 W9 W13

W2 W6 W10 W14
Planul LSB al biţilor
W3 W7 W11 W15

W4 W8 W12 W16
Planul MSB al biţilor

Aşezarea biţilor într-un paralelipiped


• Fluxul de date codat este organizat pe nivele de calitate. Un nivel de calitate este ansamblul
de plane de bit consecutive dintr-o regiune a imaginii.
• Fiecare bloc de cod poate contribui cu un anumit număr de plane de bit codate la un nivel de
calitate a imaginii.
Controlul debitului

17
• Controlul ratei de debit este operaţia prin care fluxul de date este alterat în scopul atingerii
unui debit de date dorit
• trebuie să fie se analizeze toate blocurile comprimate şi să se decidă care din ele să fie
trunchiat, după o stategie care să minimizeze efectul distorsiunilor
Structura fluxului de date
• Datele prelucrate până în acest moment sunt împărţite în pachete, care corespund diferitelor
regiuni ale unei imagini
• O regiune este o mulţime de blocuri de cod la un nivel de rezoluţie fixat
• Un exemplu de astfel de regiuni pentru 4 nivele de rezoluţie este prezentat mai jos

Culoarea fundalului
reprezintă diverse nivele de
rezoluţie, iar desenul
reprezintă o regiune

18
Exemplu de partiţie a regiunilor în cadrul diferitelor
rezoluţii pentru o imagine
• Un pachet este compus dintr-un header şi datele comprimate.
• Pachetele sunt multiplexate astfel încât să formeze un flux de date.
Header Flux date Flux date ….. Flux date Sfârşit
Imagine partiţie partiţie partiţie partiţie

Header Flux date


partiţie pachete

Pachet Pachet ….. Pachet

Header Date
pachet comprimate

• Codarea multirezoluţie permite decompresia aceleiaşi imaginii în mod diferit din punct de
vedere a calităţii şi dimensiunii în funcţie de aplicaţie:

19
20
21
22
23
24
25
26
27

S-ar putea să vă placă și