Sunteți pe pagina 1din 94

Radu Mihnea UDREA Mircea RĂDUCANU

Radu Ovidiu PREDA

TEHNICI DE COMPRESIE
A SEMNALELOR
Îndrumar de laborator

Editura
NAUTICA

I
II
Radu Mihnea UDREA Mircea RĂDUCANU
Radu Ovidiu PREDA

TEHNICI DE COMPRESIE
A SEMNALELOR

Îndrumar de laborator

Editura
NAUTICA
III
Copyright © 2013, Editura NAUTICA
Toate drepturile asupra acestei ediţii sunt rezervate Editurii

Coperta: George POPESCU

Editura NAUTICA, 2013


Editură recunoscută de CNCSIS
Str. Mircea cel Bătrân nr.104
900663 Constanţa, România
tel.: +40-241-66.47.40
fax: +40-241-61.72.60
e-mail: info@imc.ro
www.edituranautica.org.ro

IV
CUPRINS

Pagina

LABORATOR 1
Noţiuni introductive în codarea imaginilor ................................................... 1

LABORATOR 2
Codarea în domeniul frecvenţă ..................................................................... 11

LABORATOR 3
Codarea JPEG şi JPEG2000 ........................................................................ 20

LABORATOR 4
Estimarea mişcării ......................................................................................... 36

LABORATOR 5
Standardul H.261 .......................................................................................... 43

LABORATOR 6
Standardul MPEG ......................................................................................... 64

BIBLIOGRAFIE .......................................................................................... 87

V
VI
Laborator 1 1

LABORATOR 1
Noţiuni introductive în codarea imaginilor

1.1 Programul VcDemo

1.1.1 Introducere
VcDemo este un program de învăţare a tehnicilor de compresie a
imaginilor şi de compresie video.
Scopul programului este de a face posibilă experimentarea cu diferiţi
algoritmi de compresie (mai mult sau mai puţin complecşi) fără a avea în
vedere implementarea lor propriu-zisă. Din această cauză programul este
bazat pe meniuri de dialog şi permite utilizatorului să experimenteze cu
diferiţi parametrii specifici operaţiei de compresie.
Pe de o parte, vizualizarea rezultatelor de compresie a imaginilor ajută
la înţelegerea performanţelor unui anumit algoritm de compresie, iar pe de
altă parte rezultatele stimulează o modalitate de rezolvare a problemei. O
modalitate efectivă de a lucra cu VcDemo este de a-ţi pune tot timpul
întrebările: „ce se va întâmpla dacă folosesc o anumită combinaţie de
parametrii”, „care este cauza artefactelor de compresie” şi „cum pot fi
comparate tehnicile de compresie atât din punct de vedere vizual cât şi
numeric”.

1.1.2 Folosirea programului


După pornirea programului trebuie încărcată o imagine bmp de lucru.
Aceasta se face selectând „File/Open Image” sau apăsând butonul
corespunzător.
La alegerea imaginii trebuie avut în vedere că unele metode de
compresie sunt restricţionate fie la dimensiuni pare ale imaginilor, fie la
dimensiuni puteri ale lui 2. O alegere bună ar fi o imagine de 256x256 pixeli,
care poate fi folosită pentru toţi algoritmii de compresie şi care are loc în
spaţiul de lucru. Pot fi folosite şi imagini de dimensiuni mai mari, dar ele sunt
câteodată afişate în ferestre mai mici datorită lipsei de spaţiu (pentru
vizualizare la mărime originală daţi dublu-clic pe imagine).
Toate rutinele de compresie pentru imagini funcţionează pe imagini cu
nuanţe de gri pe 8 biţi, deci intern formatul imaginii de intrare este convertit
la 256 de nivele de gri. Pentru secvenţe de imagini (MPEG) acest lucru poate
fi diferit.
După încărcarea imaginii meniul de opţiuni şi butoanele specifice
fiecărui tip de compresie devin active. Dacă unele dintre opţiunile de
compresie nu sunt active, atunci acest lucru se datorează dimensiunilor
2 Laborator 1

imaginii de start active sau tipului imaginii (imagine fixă, secvenţă video,
secvenţă MPEG).

Figura 1.1 Fereastră după activarea unui modul de compresie

Apăsarea butonului corespunzător unei tehnici de compresie va


produce apariţia meniului cu parametrii de compresie. Meniul este
întotdeauna poziţionat în partea dreaptă (vezi Figura 1.1). După apăsarea
butonului „Apply” va începe compresia folosind setul curent de parametrii.
Partea de jos a meniului cu parametrii are o casetă de text, în care vor fi
afişate rezultatele compresiei, ca de exemplu:
 Rata de bit = numărul de biţi pe pixel
 Eroarea pătratică medie
1 N M
er  
NM i 1 j 1
[Y (i, j )  X (i, j )]2

 Raportul semnal - zgomot (SNR)


 Raportul semnal de vârf - zgomot (PSNR)
2552
PSNR  10log (dB)
    
2
 X i , j  Y i , j 

În tabelul următor este prezentată o dependenţa subiectivă a


calităţii imaginii în funcţie de PSNR:

PSNR Calitate
> 40dB Foarte bună
30 – 40dB Bună
< 30dB Slabă
Laborator 1 3

Aceste rezultate sunt salvate pentru fiecare imagine comprimată afişată în


spaţiul de lucru şi pot fi obţinute apăsând clic-dreapta pe o imagine iar apoi
selectând „Image Information”.
Cea mai simplă metodă de a închide toate meniurile şi imaginile
obţinute dintr-o imagine de start este închiderea imaginii de start.

Folosirea secvenţelor de imagini


VcDemo foloseşte două tipuri de secvenţe: fişiere de date YUV şi
succesiuni de imagini bmp.

Secvenţe YUV
 Reprezentarea imaginilor color în formatul YUV (Y – luminanţa, U,V
– crominanţa) se face pornind de la reprezentarea RGB (Red Green
Blue) astfel:
Y  0.3R  0.59G  0.11B
U  0.493( B  Y )
V  0.877( R  Y )
 Secvenţele YUV conţin secvenţe de imagini brute fără header. Datele
sunt stocate ca o succesiune de blocuri de date Y-U-V. Formatul de
stocare poate fi doar luminanţă sau luminanţă- crominanţă în format
4:2:0 sau 4:2:2. Pentru fiecare secvenţă trebuie să existe un fişier
header cu acelaşi nume. De exemplu
...\adir\secv.yuv
conţine date YUV cu format descris în secv.hdr. Secvenţe doar de
luminanţă sunt conţinute în fişiere cu extensia .y.

Secvenţe BMP
 O secvenţă de imagini BMP este de exemplu: imag1.bmp, imag2.bmp,
..., imag9.bmp, imag10.bmp, etc. Programul nu cunoaşte lungimea
acestei secvenţe. Pentru a indica programului că există o secvenţă imag,
imaginile trebuie organizate după cum urmează:
...\adir\imag.seq
...\adir\imag1.bmp
...\adir\imag2.bmp
...\adir\imag3.bmp
etc
Programul caută fişiere cu extensia *.seq şi după selectare va încărca această
imagine ca prima imagine a secvenţei. De aceea imag.seq trebuie să fie
identică cu imag1.bmp (o copie cu extensie diferită). Toate celelalte cadre vor
4 Laborator 1

fi încărcate din subdirectorul imag, până când următoarea imagine nu mai


poate fi găsită şi programul realizează că s-a ajuns la ultima imagine.

Secvenţele de imagini pot fi deschise selectând „File/Open Sequence”.


Secvenţele cu extensii *.yuv, *.y sau *.seq sunt listate şi pot fi deschise. Se va
afişa doar primul cadru. Se pot apoi activa modulele programului care
lucrează cu secvenţe de imagini.

Folosirea secvenţelor comprimate MPEG


Pot fi folosite fişiere cu extensia *.mpg (folosită in general pentru
fluxuri mpeg), *.m1v (flux video mpeg-1) şi *.m2v (flux video mpeg-2)
Secvenţele MPEG pot fi deschise selectând „File/Open MPEG
Stream”. Secvenţele mpeg cu extensia .mpg sunt listate şi pot fi deschise. Din
meniul „pull-down” pot fi selectate şi fişierele cu extensia *.m1v şi *.m2v.
După deschiderea fişierului va fi afişată doar o fereastră colorată. Doar după
activarea modulului de decompresie mpeg, fereastra va fi redimensionată şi
va fi afişată secvenţa video.

1.2. Decimarea imaginilor (SS)

1.2.1 Aspecte teoretice


Compresia imaginii se realizează prin reducerea rezoluţiei imaginii cu
factorul de decimare M, ceea ce corespunde unei scăderi substanţiale a
calităţii. Decimarea cu un factor M este echivalentă cu reeşantionarea
imaginii cu o frecvenţă de eşantionare de M ori mai mică.
Pentru evitarea fenomenului de aliere spectrală înaintea decimatorului
se foloseşte un filtru trece-jos.

Filtru Decimare
Trece Jos M:1

Figura 1.2 Decimarea imaginii

1.2.2 Opţiunile de compresie


Opţiunile de compresie sunt prezentate în Figura 1.3. Există trei tab-uri
cu următorii parametrii:
Laborator 1 5

Figura 1.3 Opţiuni de compresie pentru decimare

Factor: Setează factorul de decimare. Imaginea decimată poate fi


vizualizată sub forma sa decimată, adică de dimensiune mai
mică, sau poate fi mărită până la dimensiunea imaginii
originale folosind replicarea pixelilor.
Filter: În general înaintea decimării se realizează o filtrare anti-aliere.
În tab-ul „Filter” poate fi selectată aplicarea filtrului antialiere,
şi lungimea filtrului trece-jos (numărul de coeficienţi). Cu cât
filtrul are o lungime mai mare, cu atât este mai abruptă panta
funcţiei de transfer a filtrului.
Spectrum: Pentru a observa decimarea în domeniul spectral, se poate afişa
spectrul imaginii decimate (sau originale). VcDemo foloseşte
estimatorul periodogramă (cu ferestre) pentru calculul
spectrului. Utilizatorul poate selecta tipul de fereastră, ce este
folosită pentru a suprima frecvenţele de scăpare. De observat că
calculul spectrului nu are nici o influenţă asupra procesului
propriu-zis de decimare.

1.2.3 Exerciţii

1. Pentru imaginea „Build512B.bmp” vizualizaţi spectrul. Componenta DC a


imaginii este în centrul spectrului. Decimaţi imaginea cu diferiţi factori.
Cum se modifică spectrul?
2. Decimaţi cu factorul 4, fără anti-aliere şi cu un filtru anti-aliere de lungime
17. Observaţi diferenţele în imagini şi spectru.
3. Încercaţi şi alte imagini de test. Este observabilă alierea spectrală? Părerea
depinde de imagine sau de factorul de decimare?
6 Laborator 1

1.3. Modulaţia impulsurilor în cod (PCM)

1.3.1 Aspecte teoretice


Metoda de compresie PCM implică realizarea următoarelor operaţii:
1. eşantionarea cu frecvenţa de eşantionare fe  1 Te
2. cuantizarea uniformă (cu pas constant de cuantizare) sau neuniformă
(cu pas variabil de cuantizare), cu M  2 p nivele
3. codarea binară a celor M numere

Figura 1.4 Cuantizarea cu pas uniform

a)

b)

c)

Figura 1.5 a) Semnalul original; b) Semnalul cuantizat şi eroarea de


cuantizare pentru un pas de cuantizare mic; c) cu pas de cuantizare mare.

1.3.2 Opţiuni de compresie


Opţiunile de compresie sunt prezentate în Figura 1.6. Există trei tab-uri
cu următorii parametrii:
Laborator 1 7

Figura 1.6 Opţiunile de compresie pentru compresia PCM

Bitrate: Selectează rata de bit pentru PCM (doar valori întregi). Este
aplicat un cuantizor uniform pentru o funcţie de densitate de
probabilitate uniformă.
Dithering: Înaintea compresiei PCM o cantitate mică de zgomot poate fi
suprapusă peste imagine. Acest lucru face ca artefactele de
compresie PCM să fie mai puţin observabile. Deoarece
zgomotul este generat local, el poate fi scăzut la decodare.
Această opţiune poate fi selectată sau nu. Cantitatea de
zgomot este controlată de către mărimea pasului dither-ului.
Errors: Când datele sunt comprimate din ce în ce mai mult, biţii devin
din ce în ce mai vulnerabili la erorile de canal. VcDemo
permite adăugarea înaintea decodării a unor erori de bit
aleatoare in fluxul de bit codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit.

1.3.3 Exerciţii
1. Găsiţi pentru imaginea „Lena256B.bmp” care este numărul minim de biţi,
pentru care diferenţa faţă de imaginea iniţială este acceptabilă. Câte nuanţe
de gri are imaginea în acel caz?
2. Adăugaţi dither la imagine înaintea codării PCM. Reduceţi numărul de biţi
şi obţineţi o imagine de aceeaşi calitate cu imaginea codată anterior. Care
este câştigul în rata de bit? Care este concluzia, dacă se iau în considerare
numai evaluările numerice?
8 Laborator 1

3. Utilizând opţiunea „Subtract Dither” observaţi ce fenomene apar? Care


este cea mai bună alegere, să utilizăm această opţiune sau nu?
4. Adăugaţi un canal de eroare cu diferite rate de eroare şi diferite rate de bit.
Explicaţi ce se observă.
5. Desenaţi variaţia raportului semnal-zgomot funcţie de numărul de biţi pe
care se face cuantizarea.

1.4. Codarea diferenţială PCM (DPCM)

1.4.1 Aspecte teoretice


Codarea DPCM este un caz particular al tehnicii de compresie
denumită codare predictivă, tehnică prin care informaţia deja transmisă este
folosită pentru a prezice valori viitoare, diferenţa dintre ele fiind codată.
Codarea DPCM se bazează pe faptul că orice este prezis din semnal la
codare poate fi reconstruit la decodare.

Etapele codării DPCM:


1. Prezicerea valorii pixelului curent x(i, j ) din valorile pixelilor adiacenţi
x(i  1, j ) , x(i  1, j  1) , x(i, j  1) ...
2. Calculul diferenţei (eroarea de predicţie) între valoarea curentă şi
valoarea prezisă: x(i, j )  x(i, j )  xˆ (i, j )
3. Codarea erorii predicţiei (cuantizarea + codarea VLC = cu număr
variabil de biţi) se poate face cu un număr mai mic de biţi.

Pentru predicţie se poate folosi:

- PCM: xˆ (n)  0 xˆ (i, j )  0


- Simpla diferenţă: xˆ (i, j )  x(i  1, j )
x(i  1, j )  x(i, j  1)
- Media a doi pixeli adiacenţi: xˆ (i, j ) 
2
- Media ponderată a mai mulţi pixeli adiacenţi

x(i, j ) x(i, j ) x q (i, j ) 00010100101


x(i, j ) x(i, j ) Q VLC
x(i, j )

~
x (i, j )
xˆ (i, j ) Predictor Memorie
x(i, j ) Figura 1.7 Codorul DPCM
Laborator 1 9

În Figura 1.7 este reprezentată schema codorului DPCM, unde sunt folosite
următoarele simboluri:

x(i, j ) : semnalul eşantionat de intrare;


x(i, j ) : diferenţa dintre valoarea curentă şi valoarea calculată;
xq (i, j ) : eroare de predicţie cuantificată;
xˆ (i, j ) : valoarea predicţiei;
x(i, j ) : valoarea reieşită din calcul a semnalului eşantionat;

Direcţia de
parcurgere

Pixelul curent
Figura 1.8 O secţiune din harta de biţi pentru modelul de codare DPCM

Pentru codorul din Figura 1.8, calculăm valoarea pixelului curent


(Figura 1.8) pe baza valorilor pixelilor vecini cei mai apropiaţi:
xˆ (i, j )  z1a  z2b  z3c ,
unde z1 , z2 , z3 sunt coeficienţi deponderare.
Pentru exemplul dat, x(i, j ) este valoarea pixelului curent, xˆ (i, j ) se
calculează ca o expresie liniară (ponderată) a p pixeli anteriori pixelului
curent (în cazul nostru, 3 pixeli, a, b şi c), x(i, j ) este imaginea derivată,
obţinută ca diferenţa dintre pixelul curent şi pixelii anteriori. În procesul de
predicţie, imaginea originală este pierdută, şi puitem avea acces doar la
valoarea calculată, x(i, j ) , a pixelului curent. Eroarea de predicţie poate fi
(opţional) cuantificată şi utilizată în calculul entropiei codorului. Practic,
eroarea este mică (datorită unei bune corelări spaţiale).

1.4.2 Opţiuni de compresie


Opţiunile de compresie sunt prezentate în Figura 1.9. Există patru tab-
uri cu următorii parametrii:
Model: Pot fi folosite 4 modele diferite de predicţie. Diferenţele
principale sunt între modelel din stânga (predicţie 1-D
verticală) şi celelalte trei (predicţii 2-D).
Bit Rate: Se selectează rata de bit DPCM (doar numere întregi). Este
aplicat un cuantizor Lloyd-Max optimizat pentru o funcţie de
densitate de probabilitate de tip Laplacian. În caseta de text va
fi afişat un estimat al ratei de bit propriu-zise în urma codării
10 Laborator 1

VLC (Huffmann). Acest număr ar trebui folosit la


reprezentarea grafică a raportului semnal-zgomot (SNR) în
funcţie de rata de bit.
Levels: Se poate alege între un cuantizor cu un număr par sau impar
de nivele.
Errors: Se permite adăugarea înaintea decodării a unui număr aleator
de erori de bit în fluxul codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit.

Figura 1.9 Opţiunile de compresie pentru compresia DPCM

Fereastra Prediction Error (eroare de predicţie):


În această fereastră este reprezentată diferenţa de predicţie din
interiorul buclei DPCM. Valorile nule sunt reprezentate în gri, iar
valorile pozitive sau negative sunt reprezentate mai deschis sau mai
închis decât valoarea de gri generală. Diferenţa de predicţie este scalată
pentru vizibilitate maximă.

1.4.3 Exerciţii
1. Alegeţi imaginea de test „Lena256B.bmp”. Se alege primul model de
predicţie. Determinaţi compresia pentru fiecare din cele 6 rate de bit.
2. Care este câştigul în rata de bit pentru aceeaşi calitate a imaginii
(subiectivă) faţă de codarea PCM?
3. Realizaţi compresia folosind diferite modele de predicţie. Comparaţi
imaginile rezultate.
4. Reprezentaţi grafic dependenţa SNR în funcţie de rata de bit pentru ultimul
model de predicţie.
Laborator 2 11

LABORATOR 2
Codarea în domeniul frecvenţă

2.1. Codarea în subbenzi (SBC)

2.1.1 Aspecte teoretice


Să presupunem că un semnal are cea mai mare parte a energiei
concentrate în domeniul frecvenţelor joase (de exemplu o imagine, deoarece
componentele pe frecvenţe înalte reprezintă detaliile fine).
O transmisie mai eficientă se poate realiza divizând domeniul de
frecvenţă în două sau mai multe subbenzi:

H1(z) M CODEC 1 M F1(z)

H2(z) M CODEC 2 M F2(z)


+

HM(z) M CODEC M M FM(z)

Figura 2.1 Codarea şi decodarea în subbenzi

unde H1(z) este un filtru trece-jos, iar filtrele Hk(z), k=2,3,...,M, sunt filtre
trece banda şi au caracteristicile:

Figura 2.2 Caracteristica filtrelor de descompunere

Prin decimare se păstrează numărul de eşantioane constant şi se


repartizează eşantioanele pe subbenzi. Pentru primul semnal CODEC 1 va
aloca un anumit număr de biţi (de obicei tot atâţia cât erau şi în imaginea
12 Laborator 2

originală). Deoarece energia conţinută în al doilea semnal este mai mică


CODEC 2 poate aloca mai puţini biţi.
Codorul şi decodorul por fi de tip PCM, DPCM, DCT (Discrete
Cosinus Transform), etc.
Rezultă în final pentru semnalul codat o rată de bit mai scăzută decât
cea a semnalului original
Se poate aloca diferit numărul de biţi pe eşantion pentru fiecare
subbandă, în funcţie de caracteristicile semnalului în acea subbandă. Pentru
aceasta se folosesc filtre de analiză pentru fiecare subbandă.

2.1.2 Opţiunile de compresie


Opţiunile de compresie sunt prezentate în Figura 2.3. Există 5 tab-uri
cu următorii parametrii:

Figura 2.3 Opţiuni de compresie pentru codarea în subbenzi

Decompr: Aici poate fi selectată structura de descompunere în subbenzi.


Este posibilă alegerea a 6 modele diferite de descompunere.
Cuantizarea subbenzilor poate fi oprită pentru a putea măsura
calitatea filtrelor care realizează descompunerea în subbenzi şi
reconstrucţia.
Filter: Aici se poate alege numărul de coeficienţi ai filtrelor trece-jos
de analiză. Celelalte filtre sunt derivate din filtrul trece-jos de
analiză. Filtrele folosite sunt cele proiectate de Johnson.
Subs: Se poate selecta modul de cuantizare a subbenzilor. Subbanda 1
(subbanda de joasă frecvenţă) poate fi codată independent de
celelalte subbenzi. Pentru subbenzi se poate alege între codarea
PCM sau DPCM. Cuantizorul folosit pentru fiecare subbandă
depinde de funcţia de densitate de probabilitate selectată aici.
Laborator 2 13

Valoarea c reprezintă parametrul de formă a funcţiei de


densitate de probabilitate de tip Gaussian
c
generalizată p( x)  a exp( bx ) :

Figura 2.4 Funcţia densitate de probabilitate de tip Gauss generalizată

Dacă se alege DPCM, atunci poate fi selectat şi modelul de


predicţie DPCM.
Bitrate: Pot fi alese diferite rate de bit. Ratele de bit sunt date, dar nu
este esenţial pentru compresia în subbenzi, deoarece prin
procedura de alocare a biţilor poate fi obţinută orice rată de bit
(după codare) dorită. În mod normal la ieşirea cuantizorilor este
aplicată o codare entropică (Huffman), dar pentru a putea
experimenta cu erori de bit de canal, această opţiune se poate
activa sau dezactiva.
Errors: Se permite adăugarea înaintea decodării a unor erori de bit
aleatoare in fluxul de bit codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit. Erorile de bit pot fi introduse doar dacă codarea
entropică la ieşirea cuantizoarelor a fost dezactivată.

Subbenzile originale şi comprimate


Subbenzile imaginii de comprimat sunt în dreapta imaginii de start. Un
exemplu este reprezentat în Figura 2.5 (imaginea din stânga).
Subbenzile sunt organizate în funcţie de schema de descompunere
aleasă. Subbanda de frecvenţă joasă este arătată în colţul din stânga sus,
iar subbenzile de frecvenţă crescătoare în dreapta jos. Subbenzile sunt
scalate pentru a se putea vedea cât mai clar informaţia din fiecare
subbandă. „Gri” înseamnă o valoare nulă, iar valorile negative şi
pozitive sunt de nuanţe mai închise, respectiv mai deschise decât
valoarea zero. Varianţa propriu-zisă a subbenzilor poate fi găsită în
fereastra de text.
14 Laborator 2

După cuantizare şi codare subbenzile sunt transmise şi decodate la


receptor. Subbenzile decodate sunt afişate imediat sub fereastra cu
subbenzile originale (vezi Figura 1.5, imaginea din dreapta).
Subbenzile care au primit zero biţi după alocarea biţilor sunt complet
gri. Rezultatele alocării propriu-zise a biţilor pot fi găsite în fereastra de
text. Din nou subbenzile au fost scalate pentru vizibilitate maximă.
Efectele erorilor de canal sunt de asemenea vizibile în subbenzile
individuale.

Figura 2.5 Subbenzile originală şi comprimată. Subbenzile sunt scalate pentru


vizibilitate maximă

2.1.3 Exerciţii
1. Deschideţi imaginea ”Lena256B.bmp” şi realizaţi descompunerea pe
subbenzi. Pentru un număr diferit de coeficienţi ai filtrului observaţi
imaginea codată rezultată.
2. Pentru aceeaşi imagine, alegeţi o structură de descompunere şi un anumit
filtru. Modificând tipul de codare al subbenzilor, între DPCM şi PCM,
observaţi cum apare imaginea codată şi funcţie de parametrul c.
3. Selectaţi un filtru cu 16 coeficienţi, o descompunere pe 28 subbenzi şi
alegeţi compresia PCM pentru toate subbenzile. Alegeţi o valoare optimă
pentru c. Observaţi câştigul SNR în cazul codării entropice.
4. Pentru diferite grade de descompunere, alegând codarea entropică,
observaţi SNR.
5. Pentru imaginea “Lena256B.bmp” alegeţi un anumit tip de codare al
subbenzilor, precum şi un anumit parametru c. Variaţi numărul de
subbenzi folosite în descompunere precum şi tipul filtrelor. Cum variază
SNR funcţie de rata de bit?
Laborator 2 15

6. Deschideţi imaginile “Zone256B.bmp” şi “Noise256B.bmp”. Explicaţi


conţinutul subbenzilor obţinute.

2.2. Transformata Cosinus Discretă (DCT)

2.2.1 Aspecte teoretice


Transformata Cosinus Discretă realizează o conversie imagine –
frecvenţă.
Importanţa informaţiei de frecvenţă este următoarea:
- variaţii lente de intensitate în imagine sunt cel mai bine percepute de
ochi.
- variaţiile lente corespund frecvenţelor joase
- tranziţiile bruşte (pixelii de zgomot) corespund frecvenţelor înalte şi nu
sunt percepute de ochi.

Pentru un bloc din imagine de dimensiune 8x8 pixeli, Transformata


Cosinus Discretă este dată de:
7 7
Cmn  km kn  I yx cos
 2 x  1 m cos  2 y  1 n
x 0 y 0 16 16
 1
 2 2 , pentru m, n  0
unde km , kn  
 1, în rest
 2
Coeficientul C00 se numeşte coeficient DC şi reprezintă frecvenţa spaţială 0
sau media valorilor pixelilor din bloc. Ceilalţi coeficienţi se numesc
coeficienţi AC şi reprezintă frecvenţele spaţiale orizontale şi verticale din
bloc.
DCT nu realizează o compresie a datelor, ci doar o transformare în
domeniul frecvenţă.
Pentru decodare se foloseşte Transformata Cosinus Discretă Inversă
(IDCT):
7 7
I xy   ku kvCvu cos
 2 x  1 u cos  2 y  1 v
u 0 v 0 16 16
 1
 2 2 , pentru u, v  0
unde ku , kv  
 1, în rest
 2
16 Laborator 2

2.2.2 Opţiuni de compresie


Opţiunile de compresie sunt arătate în Figura 2.6. Există cinci tab-uri
cu următorii parametrii:

Figura 2.6 Opţiunile de compresie pentru DCT

Size: Aici se poate selecta dimensiunea blocurilor pe care se


calculează Transformata DCT (2x2, 4x4, 8x8, 16x16).
Cuantizarea coeficienţilor DCT poate fi oprită pentru a
măsura calitatea Transformatei DCT Directă şi Inversă.
Coefs: Aici poate fi selectat tipul de cuantizare a coeficienţilor DCT.
Coeficientul DC (coeficientul 1) poate fi codat independent
de coeficienţii DCT de frecvenţe mai mari. Se poate alege
între codarea PCM şi DPCM. Cuantizorul folosit pentru
fiecare din coeficienţii DCT depinde de funcţia densitate de
probabilitate aleasă. Valoarea c reprezintă parametrul de
formă a funcţiei de densitate de probabilitate de tip Gaussian
c
generalizată p( x)  a exp( bx ) . Dacă se alege DPCM,
atunci poate fi selectat şi modelul de predicţie DPCM.
Coeficienţii DCT cu acelaşi index (proveniţi din blocuri DCT
diferite) sunt toţi cuantizaţi folosind acelaşi cuantizor.
Bitrate: Pot fi alese diferite rate de bit. Ratele de bit sunt date, dar nu
este esenţial pentru compresia folosind DCT, deoarece prin
procedura de alocare a biţilor poate fi obţinută orice rată de
bit (după codare) dorită. În mod normal, la ieşirea
cuantizorilor este aplicată o codare entropică (Huffman), dar
pentru a putea experimenta cu erori de bit de canal, această
opţiune se poate activa sau dezactiva.
Laborator 2 17

Errors: Se permite adăugarea înaintea decodării a unor erori de bit


aleatoare in fluxul de bit codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit. Erorile de bit pot fi introduse doar dacă codarea
entropică la ieşirea cuantizoarelor a fost dezactivată.
Display: Coeficienţii DCT obţinuţi după transformare şi cuantizare pot
fi reprezentaţi în două moduri:
 Ca o colecţie de coeficienţi DCT. În acest caz
coeficienţii DCT cu acelaşi index din toate blocurile
DCT formează un singur set. Aceste seturi de
coeficienţi sunt ca şi subbenzile în codarea pe subbenzi
şi permit înţelegerea uşoară a rezultatului alocării de
biţi.
 Ca blocuri DCT la locaţia spaţială corectă. În acest caz
coeficienţii DCT sunt reprezentaţi ca nişte blocuri NxN
care se află la poziţia spaţială corespunzătoare celor
NxN pixeli, pentru care sunt calculaţi aceşti coeficienţi.
Din motive de vizibilitate coeficienţii DCT sunt scalaţi.
Acest mod de afişare explică conţinutul de frecvenţe
locale ale unei imagini şi – după alocarea biţilor – arată
ce părţi ale imaginii sunt greu sau uşor de comprimat.

Coeficienţii DCT originali şi comprimaţi


Coeficienţii DCT ai imaginii ce trebuie comprimată sunt daţi în dreapta
imaginii de start. Coeficienţii DCT sunt organizaţi în funcţie de modul
Display selectat. Pentru a vizualiza informaţia din subbenzi, subbenzile
sunt scalate pentru vizibilitate maximă. „Gri” înseamnă o valoare nulă,
iar valorile negative şi pozitive sunt de nuanţe mai închise, respectiv
mai deschise decât valoarea zero. Varianţa propriu-zisă a subbenzilor
poate fi găsită în fereastra de text.

După cuantizare şi codare coeficienţii DCT sunt transmişi şi decodaţi la


receptor. Coeficienţii DCT cuantizaţi sunt afişaţi imediat sub fereastra
cu coeficienţii DCT originali (vezi Figura 2.7, imaginea din stânga).
Coeficienţii DCT care au primit zero biţi după alocarea biţilor sunt
complet gri. Rezultatele alocării propriu-zise a biţilor pot fi găsite în
fereastra de text. Din nou coeficienţii DCT au fost scalaţi pentru
vizibilitate maximă. Efectele erorilor de canal sunt de asemenea
vizibile în coeficienţii DCT individuali. Coeficienţii DCT cuantizaţi
sunt organizaţi în funcţie de modul de Display selectat. Imaginea din
dreapta din Figura 2.7 arată coeficienţii DCT cuantizaţi dacă opţiunea
DCT Blocks este selectată.
18 Laborator 2

Figura 2.7 Coeficienţii DCT compresaţi (scalaţi pentru vizibilitate maximă)


pentru cele două tipuri de afişare (stănga: colecţii, dreapta: blocuri DCT)

2.2.3 Exerciţii
1. Alegeţi imaginea “Lena256B.bmp”. Această imagine este transformată în
coeficienţi DCT. Verificaţi calitatea imaginii reconstruite pentru diferite
dimensiuni ale blocului DCT. În ce măsură corespunde teoria cu
implementarea practică?
2. Pentru imaginea “Lena256B.bmp” selectaţi transformata DCT 8x8 şi
compresie PCM pentru toţi coeficienţii DCT. Alegeţi o valoare rezonabilă
pentru parametrul c. Desenaţi două curbe SNR - număr de bpp, cu şi fără
codarea entropică. Cât de multă compresie suplimentară ( sau ce SNR ) dă
codarea entropică?
3. Repetaţi punctul (2) pentru valori incorecte ale lui c. Fiţi atenţi la
diferenţele dintre numărul de bpp selectat, cel prezis şi cel rezultat în urma
compresiei. Explicaţi diferenţele observate.
4. Repetaţi punctul (3) utilizând setările corecte pentru parametrul c, pentru
alte două cazuri, şi anume:
- compresie DPCM pentru toţi coeficienţii
- compresie DPCM pentru primul coeficient DCT şi compresie PCM
pentru restul de coeficienţi.
Ce câştig de performanţe se obţine utilizând compresia adiţională DPCM?
5. Repetaţi punctul (3) pentru imaginea “Noise256B.bmp”. Observaţi
varianţa coeficienţilor DCT şi rezultatul în urma alocării biţilor. Comparaţi
rezultatele cu compresia DPCM aplicată acestei imagini.
6. Încărcaţi imaginea ”Lena256B.bmp” şi calculaţi dependenţa SNR-număr
de bpp utilizând blocuri DCT de diferite mărimi, păstrând compresia
coeficienţilor DCT fixă (de exemplu, utilizând DPCM pentru primul
Laborator 2 19

coeficient DCT şi PCM pentru restul coeficienţilor, un model de predicţie


fixat şi un parametru c fixat).
7. Examinaţi urmările erorilor asupra compresiei DCT pentru diferite
probabilităţi de eroare, diferite mărimi ale blocurilor DCT şi diferite
modele DPCM de predicţie. Explicaţi structura imaginii afişate. Comparaţi
efectele prezenţei erorilor asupra coeficienţilor DCT şi asupra imaginii
decodate.
8. Porniţi programul Matlab. Rulaţi programul dctdemo. Modificaţi numărul
de coeficienţi DCT cu care se face decompresia şi comparaţi calitatea
imaginii decomprimate. Câţi coeficienţi sunt necesari pentru a se obţine o
aproximare rezonabilă a imaginii originale?
20 Laborator 3

LABORATOR 3
Codarea JPEG şi JPEG2000

3.1 Codarea JPEG de bază

3.1.1 Aspecte teoretice


JPEG (Joint Photographic Experts Group) este un standard ISO şi ITU-
T realizat între 1982 şi 1992 şi stabileşte compresia şi codarea imaginilor cu
tonuri de gri sau color.
JPEG oferă rate de compresie între 10 şi 50 (respectiv 0.5 până la 2 biţi
pe pixel)
În Tabelul 3.1 este arătat modul de evaluare a calităţii imaginii
decompresate:

Tabelul 3.1
Compresie Calitate
0.25 – 0.5 biţi/pixel color moderată spre bună
0.5 – 0.75 biţi/pixel color bună spre foarte bună
0.75 – 1.5 biţi/pixel color excelentă
> 1.75 biţi/pixel color nu se poate face diferenţa cu imaginea
originală

Modul JPEG de bază, cu pierderi, care trebuie să fie suportat de toate


implementările JPEG:
- utilizează DCT;
- coeficienţii DC sunt codaţi DPCM;
- coeficienţii AC sunt codaţi Huffman;

Codorul JPEG

diferenţa DC
Bloc de
imagine
8x8
coeficienţii AC
Figura 3.1 Codorul JPEG
Laborator 3 21

Decodorul JPEG

diferenţa DC

Imaginea
reconstruită
coeficienţii AC
Figura 3.2 Decodorul JPEG

Pixelii tuturor componentelor unei imagini sunt codate cu acelaşi


număr de biţi: modul de codare JPEG fără pierderi utilizează 8 sau 12 biţi per
pixel iar modurile cu pierderi utilizează 2 până la 12 biţi per pixel.
Imaginea este împărţită în unităţi de date de 8x8 pixeli:

Figura 3.3 Împărţirea în unităţi de date

Pregătirea imaginii
Procesarea unităţilor datelor se poate face:
 componentă cu componentă, şi parcurse de la stânga la dreapta, şi de
sus în jos. Acest mod este cunoscut sub numele de procesare
neîntreţesută (vezi Figura 3.4a). Utilizând acest mod pentru o imagine
codată RGB, de înaltă rezoluţie, vor fi afişate pe rând, componentele de
roşu, apoi, verde, şi la sfârşit albastru.
22 Laborator 3

 prin procesare întreţesută (vezi Figura 3.4b), la care se procesează


pentru un bloc toate componentele la rând, iar apoi se trece la blocul
următor

* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *

Figura 3.4 Procesarea unităţilor de date: a)procesare neîntreţesută, b)procesare


întreţesută

Aplicarea Transformatei Cosinus Discretă


 Transformata DCT se aplică pe blocuri de imagine de dimensiuni 8x8
pixeli. Pentru astfel de bloc, DCT este dată de:
7 7
Cmn  km kn  I yx cos
 2 x  1 m cos  2 y  1 n
x 0 y 0 16 16
 1
 2 2 , pentru m, n  0
unde km , kn  
 1, în rest
 2

Cuantizarea şi codarea coeficienţilor DCT


 Coeficientul DC este puternic corelat pentru toate blocurile de imagine.
 Coeficienţii DC din fiecare bloc sunt codaţi DPCM (diferenţa dintre
coeficienţii DC din blocuri succesive).

DCi-1 DCi

DIFF= DCi-DCi-1
Bloci-1 Bloci

Figura 3.5 Cuantizarea şi codarea coeficienţilor DC


Laborator 3 23

 După cuantizare, matricea 2D, care conţine cei 64 coeficienţi DCT


cuantizaţi este transformată într-un vector (o matrice 1D) prin scanarea în
zig-zag, adică coeficienţii corespunzători frecvenţelor mai mici (şi de
valori mari) sunt codaţi primii, urmaţi de cei cu frecvenţe mai mari (ce au
valori foarte mici, sau aproximativ zero).

Figura 3.6 Ordinea de procesare a coeficienţilor DCT

 Rezultatul este un şir de biţi ce are o caracteristică: în el se găsesc


subşiruri de biţi de aceeaşi valoare (numai de 0 sau numai de 1), deci de
redundanţă foarte mare. Acest lucru permite o codare entropică (Huffman),
ceea ce măreşte substanţial raportul de compresie al întregului proces.
Codarea Huffman produce o rată de compresie de aproximativ 2.

3.1.2 Opţiuni de compresie


Opţiunile de compresie sunt arătate în Figura 3.7. Există şase tab-uri cu
următorii parametrii:

Bitrate: Aici se poate seta factorul de calitate Q al JPEG. Prin


selectarea factorului de calitate, rata de bit este definită
implicit, dar aceasta nu este cunoscută dinainte. În locul
setării factorului de calitate poate fi setată rata de bit.
Calitatea corespunzătoare acestei rate de bit va fi determinată
printr-o simplă procedură de căutare. Factorul de calitate
rezultant apare în fereastra de text.
24 Laborator 3

Figura 3.7 Opţiunile de compresie pentru compresia JPEG

Quant: Cuantizarea coeficienţilor DCT este realizată folosind


cuantizorii JPEG standard, care pot oricum fi influenţaţi de
selectarea unei matrici specifice de cuantizare sau de
normare. Matricea de normare poate fi selectată aici.
Opţiunile sunt:
 Matricea de normare JPEG standard pentru informaţia
de luminanţă
 Matricea de normare JPEG standard pentru informaţia
de crominanţă
 O matrice de normare cu acelaşi coeficient de normare
(weight) pentru toţi coeficienţii DCT (weight=50)
 O matrice de normare „de pondere mare”, care dă o
pondere mai mare coeficienţilor DCT de frecvenţă
mare decât celor de frecvenţe mici. Această matrice a
fost adăugată doar pentru scopuri educaţionale şi nu va
fi niciodată utilizată în practică.
De remarcat că la JPEG atât factorul de calitate cât şi SNR-ul
variază dacă se alege o altă matrice de normare.

Factorul de calitate selectat de către utilizator şi matricea de


normare N (u, v) sunt folosiţi după cum urmează pentru a
cuantiza coeficienţii DCT F (u, v) :
 F (u, v) 
F * (u, v)  NINT  
 Q N (u, v) 
Laborator 3 25

unde valoarea minimă a lui Q N (u, v) este 1 şi NINT este


aproximarea la cel mai apropiat întreg. Q este legat de
factorul de calitate Q selectat de utilizator în modul următor:

Figura 3.8 Dependenţa Q  f (Q)

Huffman: Aici pot fi selectate diferite tabele de codare entropică, adică


fără codare entropică (de exemplu codarea cu lungime fixă)
pentru coeficienţii DCT, codarea standard VLC, sau un tabel
VLC optimizat pentru imaginea considerată.
Smooth: Dacă se bifează opţiunea, imaginea este puţin netezită pentru
a suprima artefactele de blocare.
Markers: Pentru JPEG pot fi injectate erori în fluxul JPEG. Astfel
codurile VLC, informaţia din header sau alte informaţii
importante pot fi alterate. Pentru a bloca efectul erorilor de
decodare VLC, care se înrăutăţesc progresiv, se pot introduce
markeri în fluxul de biţi JPEG. Periodicitatea acestor markeri
poate fi setată aici. De observat că, dacă se introduc mai mulţi
markeri, rata de bit generală va creşte, sau – dacă a fost setată
o anumită rată de bit – SNR-ul va scădea.
Errors: Se permite adăugarea înaintea decodării a unui număr aleator
de erori de bit în fluxul codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit. Erorile de bit pot eventual corupe informaţii cruciale
cum ar fi informaţia din header (dimensiunea imaginii,
tabelele VLC). În cazul în care erorile sunt prea grave,
decodarea se întrerupe.

Fluxul comprimat de biţi:


Imaginea comprimată este scrisă pe disc într-un fişier cu numele
„JpegCodedImageBitStream.jpg”. Acest fişier conţine datele JPEG
comprimate, folosind protocolul JFIF pentru headere. Fişierul poate fi
vizualizat cu orice aplicaţie de editare de imagini.
26 Laborator 3

Vizualizarea coeficienţilor DCT:


Modulul JPEG nu arată coeficienţii (cuantizaţi) DCT. Pentru a-i
vizualiza, folosiţi opţiunea „Set as start image” pe imaginea JPEG
decomprimată. Apoi rulaţi modulul de compresie JPEG pentru această
imagine, folosind blocuri DCT 8x8 şi debifând opţiunea de codare a
coeficienţilor DCT. Atunci vor fi afişaţi coeficienţii DCT calculaţi din
imaginea JPEG comprimată. Oricare din cele două moduri de afişare
sunt instructive pentru studiu. Figura 3.9 arată un exemplu:

Figura 3.9 Coeficienţi DCT comprimaţi folosind JPEG (scalaţi pentru


vizibilitate maximă)

3.1.3 Exerciţii
1. Încărcaţi imaginea “Lena256B.bmp”. Utilizaţi matricea standard de
normalizare a luminanţei. Desenaţi trei grafice SNR-număr de bpp, câte
unul pentru fiecare mod de codare entropică ales. Ce SNR suplimentar ne
oferă codarea entropică? Pe aceleaşi grafice, desenaţi caracteristica Calitate
(Quality)-SNR. Ce observaţi în legătură cu aceste grafice?
2. Repetaţi punctul (1) pentru o matrice de normare uniform distribuită (flat
cuant). Observaţi că SNR-ul obţinut în acest caz este mai mare! Daţi o
justificare pentru utilizarea matricii standard de normare în loc de matricea
de normare uniform distribuită.
3. Comparaţi cuantizarea coeficienţilor DCT în codarea JPEG cu cea rezultată
din modul de compresie DCT, de exemplu, pentru imaginea
“Lena256B.bmp” la o rată de 1 bpp. Puteţi găsi diferenţele? Explicaţi.
4. Examinaţi efectele fenomenului de smoothing asupra imaginii JPEG
decodate.
5. Determinaţi raportul de scădere a SNR-ului în urma introducerii de markeri
în fişierul codat JPEG.
Laborator 3 27

6. Examinaţi consecinţele introducerii biţilor de eroare asupra compresiei


JPEG, la diferite valori ale probabilităţilor.

3.2. Codarea JPEG 2000

3.2.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ă. El permite ambele metode de compresie: cu
pierderi şi fără pierderi.
Paşii algoritmului de codare sunt aceeaşi ca şi pentru standardul JPEG
clasic şi sunt ilustraţi în Figura 3.10:

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

Imagine
comprimată
Împachetare Controlul
date fluxului

Figura 3.10 Schema algoritmului de codare

Pregătirea imaginii
 Conform standardului JPEG2000 pregătirea imaginii este compusă din
următorii paşi (vezi Figura 3.11):
- partiţionarea imaginii în cadre
- ajustarea nivelului datelor
- o transformare color ireversibilă
 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ă într-o tranformare ireversibilă a
matricii color. Tipul de transformare depinde de reprezentarea iniţială a
28 Laborator 3

imaginii. Se doreşte ca imaginea, care va intra în a doua etapă a procesului


de compresie, să fie reprezentată în formatul YCRCB.

I II

Pregătire
imagine III IV

Partiţionare
imagine

Ajustare [0, 2 N  1]  [2 N 1 , 2 N 1 ]


nivel

Transformare
color Y  0,29 R  0,587G  0.114 B
Cb  0,564( B  Y )  128
Cr  0,713( R  Y )  128

Figura 3.11 Etapele pregătirii imaginii

Aplicarea Transformatei Wavelet


 Transformata Wavelet are expresia:

c j ,k   f (t ) j ,k (t )dt

unde c j ,k sunt coeficienţii Wavelet discreţi iar  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 sau


compresie, iar  (t ) este funcţia Wavelet mamă.
 Un exemplu de funcţie Wavelet mamă este reprezentat în Figura 3.12:
Laborator 3 29

Figura 3.12 Funcţia Wavelet Daubechies

 Standardul aplică Transformata Wavelet pe fiecare cadru al imaginii cu


ajutorul algoritmului piramidal reprezentat în Figura 3.13:

Q dj f
2
~ n
m 2
1

P dj 1 f
2
m0 n
P dj f
2
~ n
m 2
0

m0 n
Filtru trece-sus

Figura 3.13 Algoritmul piramidal de aplicare a Transformatei Wavelet

 Algoritmul realizează descompunerea Wavelet ortogonală a semnalului


discret P2dj 1 f la rezoluţia 2 j1 în semnalul P2dj f numit aproximarea
discretă a lui f  t  la rezoluţia 2 j şi în semnalul numit detaliu discret
Q2dj f a lui f(t) la rezoluţia 2 j .
 Imaginea fiind un semnal bidimensional se aplică Transformata Wavelet
pe linii şi coloane aşa cum este prezentat în Figura 3.14:
Imagine filtrată pe Imagine filtrată pe
Imagine originală linii linii şi coloane

I II

III IV

Figura 3.14 Aplicarea Transformatei Wavelet la o imagine pe un nivel


30 Laborator 3

 Cele patru subimaginii sunt:


1) I – Imaginea filtrată trece-jos pe linii şi coloane ( P2d1 f ), notată în
literatura de specialitate cu LL (low subbands for row and column
filtering)
2) II – Imaginea filtrată trece-sus pe linii şi trece-jos pe coloane
( Q2d1 f , apoi P2d1 f ), notată în literatura de specialitate cu HL (high
subbands for row filtering and low subbands column filtering)
3) III – Imaginea filtrată trece-jos pe linii şi trece-sus pe coloane
( P2d1 f , apoi Q2d1 f ), notată în literatura de specialitate cu LH (low
subbands for row filtering and high subbands column filtering)
4) IV – Imaginea filtrată trece-sus pe linii şi coloane ( Q2d1 f ), notată
în literatura de specialitate cu HH (high subbands for row and
column filtering)

LL1 HL1 LL2 HL2 HL1

LH2 HH2
LH1 HH1 LH1 HH1

Imaginea după Imaginea după


prima descompunere a doua descompunere
HL3 HH LL4 HL4 HH4
LL3 3

LH3 LH4
HL2 HL1 HL2 HL1
LH2 HH2 LH2 HH2
LH1 HH1 LH1 HH1

Imaginea după Imaginea după


a treia descompunere a patra descompunere

Figura 3.15 Exemplu de aplicare a transformatei wavelet pe patru nivele de


rezoluţie

 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
Laborator 3 31

Transformatei Wavelet de 32 de ori). În Figura 3.15 se prezintă patru etape


de aplicare a transformatei cu sub-imaginile corespunzătoare:

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 

Codarea
 Fiecare subimagine a unui cadru al imaginii este împărţită în unităţi şi mai
mici, numite blocuri de cod cu dimensiuni de tipul 64x64 sau 32x32
pixeli.
 Î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 ei, citirea benzilor se face de la stânga la dreapta şi de sus în jos,
aşa cum este prezentat in Figura 3.16

….
.….
.….
….
.
.….
.….
. . . .
. . . . .
. . . .
. . . .
. . . .

Figura 3.16 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
32 Laborator 3

 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)
 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 (vezi Figura 3.17)

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

Figura 3.17 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
 Controlul ratei de debit este operaţia prin care fluxul de date este alterat în
scopul atingerii unui debit de date dorit
 Trebuie să se analizeze toate blocurile comprimate şi să se decidă care din
ele să fie trunchiat, după o stategie care să minimizeze efectul
distorsiunilor
Laborator 3 33

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
în Figura 3.18:

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

Figura 3.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 (vezi
Figura 3.19)

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

Figura 3.19 Structura fluxului de date

3.2.2 Opţiuni de compresie


34 Laborator 3

Opţiunile de compresie sunt prezentate în Figura 3.20. Există şase tab-


uri cu următorii parametrii:

Figura 3.20 Opţiunile de compresie pentru JPEG2000

Encode: Aici se poate seta rata de bit pentru codare în cazul, în care nu
s-a ales la tab-ul de cuantizare opţiunea „Lossless quant”
Quant: Aici se poate selecta tipul de cuantizare a coeficienţilor
Wavelet. Dacă se bifează opţiunea „Lossless quant”, atunci
cuantizarea coeficienţilor Wavelet se realizează fără pierderi
şi tab-urile Encode şi Decode nu vor mai fi active. Tot aici se
poate selecta dimensiunea blocurilor de cod ce urmează a fi
codate.
Levls: Se selectează numărul de nivele de rezoluţie. VcDemo
permite alegerea de până la 9 nivele de rezoluţie, dar
standardul JPEG2000 permite un număr maxim de 32 de
nivele de rezoluţie.
Decode: Aici se poate seta rata de bit la care să se facă decodarea.
Dacă se alege o rată de bit mai mică decât la codare, atunci se
pierde din calitatea imaginii decodate. Alegerea unei rate de
bit foarte mici poate duce la alterarea completă a imaginii
decodate.
Tiling: În etapa de pregătire a imaginii, aceasta poate fi partiţionată
în mai multe subimagini care vor fi procesate complet separat.
Aici se poate alege dimensiunea în pixeli a subimaginilor.

Fluxul comprimat de biţi:


Imaginea comprimată este scrisă pe disc într-un fişier cu numele
„NumeImagineOriginala_BitStream.jp2”. Acest fişier conţine datele
JPEG2000 comprimate.
3.2.3 Exerciţii
Laborator 3 35

1. Încărcaţi imaginea “Lena256B.bmp”. Bifaţi opţiunea „Lossless quant” şi


observaţi influenţa dimensiunii blocului de cod asupra dimensiunii
fişierului JPEG2000 generat.
2. Setaţi dimensiunea blocului de cod la 32 şi numărul de nivele de rezoluţie
la 5. Trasaţi curba SNR - rată de bit. Comparaţi această curbă cu cea
obţinută pentru codorul JPEG. Cu ce codor se obţine o calitate mai bună?
3. Setaţi dimensiunea blocului de cod la 32 şi numărul de nivele de rezoluţie
la 5. Calculaţi, variind rata de bit, între ce limite variază factorul de
compresie.
4. Pentru o rată de bit fixată variaţi numărul de nivele de rezoluţie. Cum
depinde SNR-ul de numărul de nivele de rezoluţie? Ce număr minim de
nivele ar trebui ales, astfel încât SNR-ul să nu mai varieze semnificativ?
5. Observaţi ce se întâmplă, dacă rata de bit la decodare este mai mică decât
cea la codare.
6. Pentru dimensiunea blocului de cod şi numărul de nivele de rezoluţie
fixate variaţi în tab-ul „Tiling” dimensiunea subimaginilor în care să fie
împărţită imaginea iniţială. Influenţează acest lucru calitatea imaginii
decodate? Cum? Când este folositoare această opţiune?
7. Comparaţi calitatea imaginilor JPEG şi JPEG2000 codate la rate de bit
mici şi la rate de bit mari. Ce observaţi?
36 Laborator 4

LABORATOR 4
Estimarea mişcării

4.1 Estimarea mişcării

4.1.1 Noţiuni teoretice


Estimarea mişcării este o tehnică importantă pentru compresia
secvenţelor video. Ideea de bază este căutarea de regiuni de pixeli, care s-au
deplasat dintr-un cadru in următorul şi codarea doar a operatorului de
deplasare, nu a setului complet de date. Această operaţie de bază se aplică şi
la alte operaţii de procesare a imaginilor cum ar fi detectarea contururilor şi
recunoaşterea formelor.
Cea mai populară metodă practică pentru estimarea mişcării este
metoda potrivirii blocurilor. Această metodă presupune că imaginea este
formată din blocuri în mişcare. Datorită complexităţii ei hardware mai mici,
este intens folosită în VLSI şi aproape toate codec-urile H.261 şi MPEG 1-2
utilizează potrivirea blocurilor ca metodă de estimare a mişcării. In potrivirea
blocurilor, cel mai bun estimat al vectorului de mişcare este găsit printr-o
procedură de căutare în domeniul pixelilor.
Ideea de bază este prezentată în Figura 4.1, unde deplasamentul pentru
un pixel (n1, n2 ) din cadrul k este determinat considerând un bloc N1  N 2
centrat în jurul lui (n1, n2 ) şi căutând în cadrul k-1 (cadrul de căutare) locul
celui mai potrivit bloc de aceeaşi dimensiune. Căutarea este de obicei limitată
din motive de calcul numai în interiorul ferestrei de căutare de dimensiune
N1  2M1  N2  2M 2 .

Fereastră de căutare

Cadrul k-1

Bloc

Cadrul k

Figura 4.1 Potrivirea blocurilor


Laborator 4 37

Algoritmii de potrivire a blocurilor diferă prin criteriul folosit în


potrivire şi strategia de căutare.

a) Clasificare în funcţie de criteriul folosit în potrivirea blocurilor


 Eroarea pătratică medie minimă (MSE)
1
MSE (d1, d 2 )  
N1N 2 ( n1 ,n2 )B
[ s(n1  d1, n2  d 2 , k  1)  s(n1, n2 , k )]2

unde B este un bloc de dimensiune N1  N 2 , pentru un set de vectori de


mişcare (d1, d2 ) .
 Diferenţa medie absolută minimă (MAD)
1
MAD(d1, d 2 )   s(n1  d1, n2  d2 , k  1)  s(n1, n2 , k )
N1N 2 ( n1 ,n2 )

b) Clasificare în funcţie de strategia de căutare


În mod obişnuit, pentru a reduce efortul de calcul, suprafaţa de căutare
este limitată la o fereastră de dimensiuni M1  d1  M1 şi M 2  d2  M 2
centrată în jurul fiecărui pixel, pentru care va fi estimat un vector de mişcare,
unde M 1 şi M 2 sunt întregi predefiniţi.
În continuare vom prezenta câteva exemple de algoritmi de căutare:

Căutarea completă
Este folosită pentru evaluarea criteriilor de potrivire în fiecare bloc de
dimensiune 2M1  1 2M 2  1 din fereastra de căutare. Această strategie este
extrem de consumatoare de timp şi nu se prea foloseşte. În schimb sunt
folosiţi alţi algoritmi de căutare mai rapizi.

Căutarea în trei paşi


Vom explica procedura de căutare în trei paşi cu ajutorul Figurii 4.2,
unde este reprezentat doar cadrul de căutare cu parametrii ferestrei de căutare
M1  M 2  7 :
 Numărul „0” marchează pixelul din cadrul de căutare care este chiar pe
poziţia pixelului căruia i se doreşte estimarea mişcării. La primul pas
funcţia criteriu de căutare este evaluată în nouă puncte, pixelul „0” şi
pixelii marcaţi cu „1”. Dacă eroarea MSE sau MAD cea mai mică este
găsită pentru pixelul „0”, atunci nu avem mişcare.
 La al doilea pas funcţia criteriu de estimare este evaluată în 8 puncte
marcate cu „2” centrate în jurul pixelului cu cea mai mică eroare de la
primul pas (marcat printr-un „1” încercuit).
38 Laborator 4

2 2 2

1 1 2 1 2
3 3 3
2 2 3 2 3
3 3 3
1 0

1 1 1

Figura 4.2 Căutare în trei paşi

 De remarcat că la primul pas pixelii de căutare sunt marginile ferestrei de


căutare şi că la fiecare pas înjumătăţim distanţa de la pixelii de căutare la
noul centru pentru a obţine estimate de rezoluţie mai fină.
 Estimatul mişcării este obţinut după cel de al treilea pas, la care pixelii de
căutare sunt la un pixel distanţă de pixelul din centru.
 Generalizări ale acestei proceduri pentru mai mulţi paşi duc la aşa numite
„căutări cu n paşi” sau „căutări log-D”.

Căutarea încrucişată
Metoda căutării încrucişate este altă strategie de căutare logaritmică, la
care la fiecare pas există 4 poziţii de căutare care sunt colţurile unei cruci „+”
(vezi Figura 4.3).
Distanţa dintre punctele de căutare este redusă dacă cea mai bună
potrivire este în centrul crucii sau la marginea ferestrei de căutare.
Laborator 4 39

1 2 3
1 0 1 2 3
5
1 2 3 5 4 5
5
4

Figura 4.3 Căutare încrucişată

4.1.2 Opţiuni de compresie


Opţiunile de compresie sunt prezentate în Figura 4.4. Există şase tab-
uri cu următorii parametrii:

Figura 4.4 Opţiunile de compresie pentru estimarea mişcării


40 Laborator 4

Hierarchy: Aici se poate selecta algoritmul de potrivire a blocurilor


standard sau ierarhic (pe două sau trei nivele). În funcţie de
acest tab, unele dintre celelalte tab-uri îşi pot schimba
conţinutul deoarece mărimea blocurilor depinde de nivelul de
rezoluţie.
Search: Se pot alege diferite strategii de căutare pentru estimarea
mişcării: (i) căutarea completă, (ii) căutarea în cruce, (iii)
căutarea in N paşi. De remarcat că strategia de căutare
completă poate fi extrem de consumatoare de timp.
Size: Aici se alege dimensiunea blocurilor (pătrate), pentru care
este estimat vectorul de mişcare. Pentru estimarea ierarhică
dimensiunea blocurilor este dimensiunea nivelului de
rezoluţie superior. Dimensiunea celorlalte nivele de rezoluţie
sunt determinate de către program (vezi fereastra de ieşire)
Displ’mnt: Deplasamentul maxim poate fi selectat pentru „căutare
completă” şi „căutare în cruce”. Pentru „căutarea în N paşi”
deplasamentul este determinat de către algoritm. Cu cât este
mai mare deplasamentul maxim, cu atât este mai mare şi
efortul de calcul. Pentru estimarea ierarhică, sunt date
deplasamentele maxime la diferitele nivele de rezoluţie (de la
rezoluţie mică la rezoluţie mare)

fereastra de
căutare
dy

dx dx

dy blocul curent

Figura 4.5 Deplasamentul maxim pe orizontală d x şi deplasamentul maxim pe


verticală d y

N-Step: Pentru strategia de „căutare în N paşi” poate fi selectat


numărul de nivele (paşi). Cu cât este mai mare numărul de
paşi, cu atât este mai mare şi deplasamentul maxim admisibil.
Laborator 4 41

Pentru estimarea ierarhică este dat numărul de paşi pentru


fiecare nivel de rezoluţie.
Video: Pot fi selectate diferite opţiuni de afişare. Câmpurile de
mişcare estimate sunt salvate intern, astfel încât opţiunea
„Display again” refoloseşte câmpurile de mişcare deja
estimate. Schimbarea opţiunilor de estimare a mişcării
necesită reestimarea câmpului de mişcare

Imaginile afişate:
Este estimată mişcarea pentru fiecare cadru al secvenţei de imagini.
Apar patru ferestre (vezi Figura 4.6):
 Secvenţa de imagini originală (stânga sus)
 Diferenţa dintre două cadre consecutive (dreapta sus)
 Predicţia compensată de mişcare a imaginii actuale, peste care
este suprapus câmpul de mişcare (stânga jos). Punctul de
pornire al vectorului de mişcare este indicat printr-un punct
negru
 Diferenţa compensată de mişcare dintre cele două cadre
consecutive (dreapta jos)

Fereastra text conţine pentru fiecare cadru varianţa cadrului original,


varianţa diferenţei dintre cadre, varianţa diferenţei dintre cadre
compensată de mişcare şi un estimat al entropiei diferenţiale a
câmpului de mişcare estimat (în biţi/vector). Pentru calculul estimatului
entropiei este aplicată o codare DPCM unidimensională fără pierderi
asupra câmpului de vectori de mişcare.este calculată histograma
diferenţei DPCM. Din această histogramă este estimată entropia
câmpului de vectori (totalitatea componentelor orizontale şi verticale)

4.1.3 Exerciţii
Încărcaţi secvenţa „car.seq” şi folosiţi estimarea mişcării cu strategia
de căutare „Full Search” pe blocuri 8x8 şi un deplasament maxim de 8 pixeli

1. Discutaţi de ce este avantajoasă codarea unei imagini diferenţă decât a


imaginii originale. Luaţi în calcul factorul câştig de predicţie.
2. Cât de mare este câştigul obţinut, dacă, pe lângă folosirea diferenţei între
cadre, se foloseşte şi compensarea mişcării?
3. Merită să folosim compensarea mişcării în orice parte a imaginii? Dacă nu,
în ce parte a imaginii pare să nu funcţioneze compensarea mişcării?
4. Comparaţi eficienţa compensării mişcării pentru diferite deplasamente.
Care ar fi cea mai bună alegere având în vedere atât complexitatea cât şi
factorul de compresie în acest caz?
42 Laborator 4

Figura 4.6 Ferestrele afişate pentru Estimarea mişcării

5. Comparaţi eficienţa compensării mişcării pentru diferite dimensiuni ale


blocurilor. Discutaţi efectele observate.
6. Comparaţi eficienţa compensării mişcării pentru cele trei strategii de
căutare diferite şi discutaţi care ar fi compromisul între complexitate şi
câştig de predicţie.
7. Comparaţi diferenţele de eficienţă între potrivirea blocurilor standard şi
potrivirea blocurilor ierarhică cu 2 sau 3 nivele.

Lansaţi programul Matlab. Rulaţi programul demonstrativ


estimarea_miscarii. Selectaţi o imagine de test din caseta de derulare.

8. Care este cea mai bună strategie de căutare din punctul de vedere al erorii
şi din punctul de vedere al timpului de calcul pentru acelaşi număr de
blocuri şi acelaşi deplasament maxim? Ce metodă ar fi cel mai bun
compromis între eroarea de estimare şi timpul de calcul?
9. Comparaţi cele două criterii de estimare (MAD – Minimum Absolut
Difference şi MSE – Mean Square Error) din punct de vedere al erorii şi
din punct de vedere al timpului de calcul.
10.Comparaţi eficienţa estimării mişcării pentru diferite mărimi ale blocurilor
(8, 16 sau 32).
11.Comparaţi eficienţa compensării mişcării pentru cele două deplasamente
(„0.5” – jumătate din dimensiunea blocului şi „1” – dimensiunea blocului).
Laborator 5 43

LABORATOR 5
Standardul H.261

5.1 Standardul H.261

5.1.1 Noţiuni teoretice


Standardul H.261 este un standard ITU-T pentru videotelefonie şi
videoconferinţă prin ISDN (Integrated Services Digital Network).
Pentru o conexiune ISDN sunt disponibile utilizatorului 2 canale B
pentru transmisie bidirecţională şi un canal D pentru controlul transmisiunii
(semnalizare). Un canal B are banda de 64kbiţi/s. Se poate mări debitul cu un
multiplu întreg p x 64kbits/s (p = 1..30) prin alocarea mai multor canale B.
Standardul e cunoscut şi ca “p x 64”.
Rata de bit la compresie pentru H.261 poate varia de la 40kbiţi/s până
la 2 Mbiţi/s.
H.261 este realizat pentru codare şi decodare în timp real. Întârzierea
maximă nu trebuie să depăşească 150ms.

Pregătirea imaginilor
 H.261 defineşte un format foarte precis. Frecvenţa este de 29,97 cadre/s. În
timpul compresiei este posibil să se genereze o imagine cu o frecvenţă mai
mică, de exemplu 10 sau 15 cadre/s.
 Numai imaginile cu explorare progresivă (non-interleaved) sunt permise la
intrarea codorului.
 Semnalele de la intrare (de exemplu imaginile RGB) sunt transformate în
semnale YCBCR, Y fiind semnalul de luminanţă şi CB şi CR semnalele
diferenţă de crominanţă.

 Poziţia eşantioanelor de luminanţă (Y) şi crominanţă (CB şi CR):


44 Laborator 5

Figura 5.1 Poziţia eşantioanelor de luminanţă şi cromonanţă

 Numai două formate (de raport 4/3) de imagini sunt permise:


a) Common Intermediate Format (CIF)
- componenta de luminanţă: 288 linii şi 352 pixeli/linie.
- componenta de crominanţă: 144 linii şi 176 pixeli/linie.
b) Quarter-CIF (QCIF)
- componenta de luminanţă: 144 linii şi 176 pixeli/linie.
- componenta de crominanţă: 72 linii şi 88 pixeli/linie.
 Toate implementările H.261 trebuie să poată face codarea în ambele
formate (CIF şi QCIF).
 Un semnal necomprimat QCIF la o frecvenţă de 29,97cadre/s are rata de
bit 9,12Mbit/s, iar în format CIF la aceeaşi frecvenţă 36,45Mbit/s.
 În formatul H.261 unităţile de date sunt de dimensiunea 8x8 pixeli şi sunt
utilizate pentru luminanţă şi culoare.
 Un macro-bloc se obţine prin combinarea a 4 blocuri de matrice Y cu câte
un bloc al fiecărei componentă de culoare.

Figura 5.2 Structura unui macrobloc

 Un grup de blocuri este definit prin 33 de macro-blocuri.


1 2 3 4 5 6 7 8 9 10 11

12 13 14 15 16 17 18 19 20 21 22

23 24 25 26 27 28 29 30 31 32 33

Figura 5.3 Structura grupului de blocuri


Laborator 5 45

- imaginea QCIF are 3 grupuri de blocuri.


- imaginea CIF din 12 grupuri de blocuri.
- În Figura 5.4 GOB 1...12 sunt grupuri de blocuri (Group Of Blocs)

Figura 5.4 Structura unei imagini CIF, respectiv QCIF

Algoritmul de codare
 H.261 utilizează două metode diferite de codare: intercadru şi
intracadru.
- Pentru codarea intracadru nu este luată în considerare
redundanţa între cadre.
- Pentru codarea intercadru este folosită informaţia din cadrul
anterior sau următor.
 Decizia privind modul de codare se ia în timpul compresiei în funcţie
de anumiţi parametrii.
 Codarea intracadru se realizează similar cu JPEG. Fiecare bloc de 8x8
pixeli este transformat cu DCT. Cei 64 coeficienţi DCT sunt cuantizaţi
(diferit pentru DC şi AC) şi apoi codaţi entropic.
 Codarea intercadru este bazată pe predicţia fiecărui macro-bloc al
imaginii. Aceasta se realizează printr-o comparare a macro-blocurilor
din cadrele anterioare şi cel curent. Vectorul de mişcare este definit de
poziţia relativă a blocului anterior faţă de cel curent.
Vectorul de
mişcare Cadrul de referinţă

Cadrul curent

Figura 5.5 Obţinerea vectorului de mişcare pentru codarea intercadru


46 Laborator 5

 Pentru obţinerea vectorilor de mişcare se consideră diferenţa dintre


macro-blocurile localizate pe aceeaşi poziţie în imaginile anterioare.
 Vectorii de mişcare sunt codaţi DPCM şi dacă valoarea codată
depăşeşte o anumită valoare de prag, se aplică DCT şi se transmit
coeficienţii.
 Altfel se transmit numai componentele vectorului de mişcare codate
entropic fără pierderi.

Figura 5.6 Schema de principiu a codorului H.261

 Toţi coeficienţii sunt cuantizaţi uniform şi codaţi cu lungime variabilă.


 În plus un filtru trece-jos poate fi aplicat înaintea DCT pentru a elimina
zgomotul de frecvenţă înaltă şi acesta să nu fie codat. Acest filtru este
opţional.
 Cuantizarea este uniformă şi mărimea pasului de cuantizare este
ajustabilă în funcţie de cantitatea datelor din bufferul, din care se face
transmisia. Acest mecanism forţează un debit constant la ieşirea
codorului, deci calitatea datelor video codate depinde de conţinutul
imaginii ca şi de mişcarea din scena respectivă.
Laborator 5 47

Figura 5.7 Schema codorului H.261

Figura 5.8 Schema decodorului H.261

 Codarea coeficienţilor DCT se face similar ca la JPEG.


 Coeficienţii sunt scanaţi în zig-zag.
- Coeficientul DC este codat diferenţial.
- Coeficientul AC: codare zero-run+valoare şi Huffman.
 Codarea zero-run+valoare:
- zero-run – numărul de repetiţii a lui 0.
- valore – valoarea coeficienţilor diferiţi de 0.
 Codarea Huffman
- simbolurile cele mai frecvente sunt codate cu mai puţini biţi
- este transmis un tabel 2D pentru codare cu lungime variabilă (VLC).
 Cele mai întâlnite combinaţii de zerouri succesive (RUN) şi al doilea
simbol (LEVEL) sunt codate cu lungime variabilă (vezi Tabelul 5.1).
Celelalte combinaţii (RUN, LEVEL) sunt codate cu cuvinte de 20 de biţi,
care conţin 6 biţi ESCAPE, 6 biţi RUN şi 8 biţi LEVEL.
48 Laborator 5

Tabelul 5.1 Tabel pentru codare cu lungime variabilă


RUN Level Cod

0 1 1s Dacă e primul coeficient al blocului


0 1 11s Dacă nu e primul coeficient al blocului
0 2 0100 s
0 3 0010 1s
0 4 0000 110s
0 5 0010 0110 s
0 6 0010 0001 s
0 7 0000 0010 10s
0 8 0000 0001 1101 s
0 9 0000 0001 1000 s
0 10 0000 0001 0011 s
0 11 0000 0001 0000 s
0 12 0000 0000 1101 0s
0 13 0000 0000 1100 1s
0 14 0000 0000 1100 0s
1 15 0000 0000 1011 1s
1 1 011s
1 2 0001 10s
1 3 0010 0101 s
1 4 0000 0011 00s
1 5 0000 0001 1011 s
1 6 0000 0000 1011 0s
2 7 0000 0000 1010 1s
2 1 0101 s
2 2 0000 100s
2 3 0000 0010 11s
2 4 0000 0001 0100 s
… … ……………………….

Escape 0000 01

Tabelul 5.2 Exemplificarea codurilor pentru RUN şi LEVEL


Run este un cod cu lungime fixă de 6 Level este un cod cu lungime fixă de 8
biţi biţi

Run Code Level Code


0 0000 00 
1 0000 01  1000 0001
2 0000 10  
   1111 1110
   1111 1111
63 1111 11 
 0000 0001
 0000 0010
 
0127 0111 1111
Laborator 5 49

 De exemplu: 0 0 0 –1 6 0 3 EOB
se codează: 001111 001000010 001001010 10

Codarea vectorilor de mişcare (MV)


 Vectorii de mişcare au valori întregi între –15 şi 15.
 Se codează diferenţa între vectorii de mişcare (MVD - Motion Vector
Difference) cu lungime variabilă (vezi Tabelul 5.3)

Tabelul 5.3 Codarea vectorilor de mişcare


MVD Cod

–16 & 16 0000 0011 001


–15 & 17 0000 0011 011
–14 & 18 0000 0011 101
–13 & 19 0000 0011 111
–12 & 20 0000 0100 001
–11 & 21 0000 0100 011
–10 & 22 0000 0100 111
o–9 & 23 0000 0101 011
o–8 & 24 0000 0101 111
o–7 & 25 0000 0111 111
o–6 & 26 0000 1001 110
o–5 & 27 0000 1011 110
o–4 & 28 0000 1111 110
o–3 & 29 0001 1111 110
o–2 & 30 0011 1111 110
o–1 & 23 0111 0100 110
o–0 & 23 1000 0100 110
o–1 & 23 01000 0100 1
o–2 & –30 0010 1111 111
o–3 & –29 0001 0111 111
o–4 & –28 0000 1101 111
o–5 & –27 0000 1010 111
o–6 & –26 0000 1000 110
o–7 & –25 0000 0110 110
o–8 & –24 0000 0101 100
o–9 & –23 0000 0101 001
–10 & –22 0000 0100 101
–11 & –21 0000 0100 010
–12 & –20 0000 0100 000
–13 & –19 0000 0011 110
–14 & –18 0000 0011 100
–15 & –17 0000 0011 010

 De exemplu, pentru vectorii de mişcare: 15 14 –13 12 ...


avem diferenţa: –1 –27 25 ...
care se codeaza astfel: 011 00001010 00000111 ...
50 Laborator 5

Cuantizarea coeficienţilor
 Ajustarea pasului de cuantizare se face în funcţie de cantitatea datelor
în bufferul, din care se face transmisia. Pasul de cuantizare poate varia
între 2 şi 62 (din 2 în 2).
 Dimensiunea bufferului este q  64 kbiţi, rata de bit q  64 kbiţi/s iar
30
rata cadrelor Hz, ( k  1...4 ).
k
 Numărul mediu de biţi pe MacroBloc este:
- pentru CIF: 5  k  q
- pentru QCIF: 20  k  q
 umplerebuffer 
 Pasul de cuantizare este 2  int  2
 200  q 

Tabelul 5.4 Codarea vectorilor de mişcare


Umplerea bufferului Pasul de cuantizare
< 200q 2
< 400q 4
< 600q 6
< 800q 8
... ...
< 6000q 60
< 6200q 62

Fluxul de date
 Fluxul de date are o structură ierarhică formată din mai multe niveluri.
1. Nivelul imagine
- PSC (20 biţi): Picture Start Code;
- TR (5 biţi): Temporal Reference;
- PTYPE (6 biţi): CIF sau QCIF;
- dacă PEI = 1, PSPARE: biţi de rezervă;
2. Nivelul Grup de Blocuri (GOB)
- GBSC (16 biţi): GOB Start Code;
- GN (4 biţi): Group Number;
- GQUANT: Group Cuantizer, 1...31;
- dacă GEI = 1, GSPARE: biţi de rezervă;
3. Nivelul MacroBlocuri (MB)
- MBA: MB Address;
- MQUANT: MB Cuantizer, 1...31;
Laborator 5 51

- MVD: MV Data;
- CBP: Coded Block Pattern

4. Nivelul Blocuri
- TCOEFF: Coeficienţii transformatei;

Figura 5.9 Structura fluxului de date

 Fluxul de date H.261 prezintă următoarele caracteristici:


- fluxul de date al unei imagini conţine informaţia pentru corecţia
erorilor
- pentru fiecare imagine un număr de 5 biţi sunt folosiţi ca referinţă
temporală
- dacă o anumită comandă este dată de la aplicaţia decodorului, ultima
imagine este îngheţată ca un stop cadru. Aceasta permite aplicaţiei ca la
decodare să oprească şi să pornească o scenă video fără nici o
dificultate.
- utilizând comenzi trimise de codor (şi nu de aplicaţie) este de asemenea
posibil să se comute între imagini fixe şi imagini în mişcare. Alternativ
un semnal de time-out poate da aceeaşi comandă.
52 Laborator 5

5.1.2 Programul Vprove

Programul Vprove este un program demonstrativ de analiză şi testare a


tehnicilor de compresie video.

Încărcaţi testul H.261 selectând din meniu ‘File/H.261


Example/ConferenceRoom’. Apăsaţi pe ‘Play’. Secvenţa video va rula şi va
dispărea când la sfârşit (10 secunde)

Figura 5.10 Încărcarea secvenţei de test

În Tabelul 5.5 sunt descrise diversele butoane din meniu şi semnificaţia


lor.
Laborator 5 53

Tabelul 5.5 Butoanele din meniu


Icoana Funcţie Apelare Meniu Control tastatura
Rulează secvenţa Play – Play CTRL+P

Opreşte secvenţa Play – Stop CTRL+S

Pauză/Avansează un Play – CTRL+A


cadru Pause/Frame
Advance

Derulare rapidă Play – Fast Fwd CTRL+F

Derulare înainte oarbă Play – Blind Fast CTRL+F


(nu este afişată Fwd
secvenţa video)
- Opţiunea este doar
activă, dacă s-a selectat
înainte ‘Play – Pause
On frame’
Trecere la cadrul Play – Pause On
numărul… frame…
A se folosi apoi ‘Fast
Forward’ sau
‘BlindFast Forward’

În primul rând priviţi clipul video H.261. Lăsaţi secvenţa să ruleze până
la sfârşit. Vezi observa că:
 Mişcarea este prea rapidă. Viteza de rulare este dependentă de viteza
procesorului, pe care lucraţi.
 Apar artefacte nedorite în imagine (vezi Figura 5.11): Aceste zgomote
provocate de codare se observă când bărbatul din imagine îşi mişcă
mâna (începe aproximativ la cadrul 128 şi continuă până la cadrul 161,
iar artefactele se pot observa până la cadrul 203).
Pentru a putea vedea mai clar aceste artefacte, avansaţi cadru cu cadru
(CTRL+P).
54 Laborator 5

Artefacte
vizuale

Figura 5.11 Artefacte vizuale

Observaţi calitatea compresiei. Imaginea este destul de distorsionată.


Pentru a înţelege de ce se întâmplă acest lucru:
 Activaţi opţiunea de vizualizare a tipurilor de macroblocuri (MB) din
“Frame/MB Types”
 Rulaţi din nou secvenţa (vezi Figura 5.12).
 Diferitele tipuri de macroblocuri au diferite culori (în standardul H.261
există 10 tipuri de macroblocuri):
- MB verzi sunt codate intra (complet în acest cadru)
- MB galbene sunt codate intra+Q (intra cu cuantizare)
- MB roz sunt codate inter (interpolate din cadrul anterior), cu sau
fără coeficienţi/vectori de mişcare (3 tipuri)
- MB gri sunt codate inter+Q (inter cu cuantizare)
- MB albastre sunt codate inter cu coeficienţi (Coeffs) şi vectori de
mişcare (2 tipuri)
- MB roşii sunt codate inter cu coeficienţi (Coeffs) şi vectori de
mişcare
- MB fără culoare nu sunt codate – este folosit macroblocul din
cadrul anterior
Laborator 5 55

Figura 5.12 Vizualizarea diferitelor tipuri de macroblocuri

Priviţi datele din macroblocuri.

 Activaţi caseta de informaţii despre macrobloc din “Frame/MB Tooltip”


 Trageţi fereastra MB Tooltip în afara imaginii
 Mişcaţi mouse-ul peste imagine. O să apară un pătrat alb în jurul
macroblocului, din care se citesc datele, iar în fereastra MB Tooltip o să
apară informaţii despre macroblocul respectiv (vezi Figura 5.13).

În fereastra de MB Tooltip avem:


 MODE – modul de codare al macroblocului
 QUANT – cuantizorul folosit pentru cuantizarea luminanţei (cel pentru
crominanţă poate varia)
 BITS – numărul de biţi folosiţi pentru acel macrobloc
 SEG – numărul segmentului, din care face parte macroblocul (un
segment este un grup de blocuri)
 CBP – un număr între 0-63, care arată care dintre cele 6 blocuri 8x8, ce
formează un macrobloc, au fost codate şi care nu (în paranteză apare
numărul binary, unde ‘1’=codat şi ‘0’=necodat, care, citiţi de la stânga
la dreapta, arată care blocuri au fost codate. Blocurile au fost aranjate în
modul următor: Y0,Y1,Y2,Y3,U,V)
56 Laborator 5

 MV – Vectorul de mişcare pentru macroblocul selectat. Numerele din


paranteze <> sunt pentru mişcare pe axa X, respectiv pe Y (numerele
positive corespund direcţiei jos/dreapta, iar cele negative sus/stânga)

Macrobloc
selectat cu
mouse-ul

Figura 5.13 Selectarea macroblocului

Macrobloc
de culoare
verde

Numărul
macroblocului
(X Y)

Numărul
cadrului
Figura 5.14 Fereastra MB Tooltip
Laborator 5 57

Analiza grafică
 Avansaţi în secvenţa video cadru cu cadru
 Vezi vedea în background multe macroblocuri codate intra de culoare
verde şi galbenă. Aceste macroblocuri folosesc cei mai mulţi biţi pentru
codarea cadrului
 Se pare că foarte mulţi biţi sunt folosiţi pentru background-ul static din
spatele bărbatului. Verificaţi acest lucru: opriţi secvenţa video şi selectaţi
„Graph / Enable” şi setaţi cele două opţiuni din Figura 5.15.

Selectaţi
opţiunile

Figura 5.15 Opţiuni în meniul Graph

 Selectaţi fişierul de ieşire din “Graph / Export File…” (de exemplu ‘H261
example’)

Figura 5.16 Salvarea fişierului de ieşire


58 Laborator 5

 Selectaţi “Graph / View Graph”. Datele sunt exportate în fişierul respectiv


şi acest fişier este deschis folosind Microsoft Excel.
 Alegeţi “Enable macros”. Va rula programul macro. La sfârşit va apărea
tab-ul Vprov în stânga sus.
 Selectaţi tab-ul ‘Ave Bits per MB’, care afişează numărul mediu de biţi
folosiţi pentru fiecare macrobloc (în culori). Puteţi vedea că cei mai mulţi
biţi sunt folosiţi în centru (unde are loc mişcarea bărbatului); folosirea de
relativ mulţi biţi şi în partea stânga sus şi pe marginea de jos este o eroare
a codorului (vezi Figura 5.17)

Figura 5.17 Graficul număr de biţi mediu pe macrobloc

 Selectaţi tab-ul ‘IntraCodingFreq’. Pe graphic este reprezentată frecvenţa


relativă de codare intra pentru fiecare macrobloc. Observaţi că în colţul
stânga sus există multe macroblocuri codate intra. Aceasta este o eroare a
codorului (vezi Figura 5.18)

 Selectaţi şi celelalte opţiuni din meniul „Graph” şi vizualizaţi graficele.


Laborator 5 59

Figura 5.18 Graficul frecvenţă relativă de codare intra

5.1.3 Aplicaţia H.261


Aplicaţia H.261 constă de fapt în două programe Codorul H.261 şi
Decodorul H.261, cu care se realizează codarea, respectiv decodarea
formatului H.261.

Codorul H.261
Aplicaţia Codor H.261 reprezintă o implementare practică a
algoritmului H.261 descris de “Recomandarea H.261” versiunea 2 din martie
1993. El a fost realizat în mediul vizual Visual C++ pentru Windows 95, 98,
ME şi Xp folosind o implementare a standardului H.261 realizată de către
Standford University havefun.stanford.edu:pub/p64.

Prezentarea meniului
Meniul “Fişier” conţine doua opţiuni cu ajutorul cărora se poate alege
sursa video care urmează a fi comprimată. Se poate opta între codarea unui
fişier de tipul *.avi, *.qcif, *.cif existent pe disc (“Deschide fişierul sursă”)
sau codarea in timp real a unei surse video externe furnizată de o camera
video cu opţiunea ”Noua fereastră de captură”.
60 Laborator 5

Figura 5.19 Codor H.261

Salvarea fişierului video codat H.261 se face sub forma numefisier.261


prin opţiunea “Salvare ca fişier H.261” şi prin alegerea ulterioară a locului
unde se doreşte să fie stoc fişierul respectiv.

Figura 5.20 Meniul ”Fişier”

Cel de-al doilea meniu, „Video” include trei opţiuni: Sursă, Format,
Opţiuni.
Prin selectarea opţiunii “Sursă” se poate alege sursa video externă:
camera video, tuner tv. Se poate seta din driverul sistemului de operare
Laborator 5 61

funcţile specifice unei camere video luminozitate, contrast, hue, nivel de


saturaţie al culorii din opţiunea “Device Settings” .

Figura 5.21 Alegerea sursei video

Prin opţiunea “Format” se setează formatul video al fluxului codat


H.261 CIF(352x288), QCIF(176x144), SQCIF(128x96).

Figura 5.22 Alegerea formatului video

Din meniul Video/Opţiuni se poate introduce pasul de cuantizare folosit


la codare. El trebuie sa fie cuprins între 1 şi 31. Pasul ales este pasul cu care
sunt cuantizaţi toţi coeficienţii rezultaţi în urma aplicării DCT cu excepţia
coeficienţilor DC ai macroblocurilor codate intra care au pasul de cuantizare
fixat la 8.
62 Laborator 5

Figura 5.23 Alegerea pasului de cuantizare

Decodorul H.261
Decodorul H.261 este o aplicaţie de vizualizare şi analiză a imaginilor
video care sunt codate H.261, ce suportă funcţii de play, pauză, replay cadru
cu cadru şi afişare a hărţii video.

Figura 5.24 H.261 Decodor

Din meniul “Fisier” se alege fişierul video comprimat H.261 care se


doreşte sa fie vizualizat, iar din meniul vizualizare se poate seta opţiunea
“Afişează harta”, care în partea dreaptă a imaginii afişează o matrice în care
secvenţa video codată este analizată şi cadru cu cadru în timp real.
Laborator 5 63

Figura 5.25 Harta video a imaginii

Macrobloc codat intra;


Macrobloc codat inter;
Macrobloc codat inter cu vector de mişcare, săgeata indicând direcţia
de mişcare a macoblocului;
Macroblocul nu este codat, e păstrat din cadrul anterior.
64 Laborator 6

LABORATOR 6
Standardul MPEG

6.1 Standardul MPEG 1


MPEG-1 (Motion Picture Expert Group) a reuşit să realizeze o
compresie a semnalului video la o rată de bit de aproximativ 1,5Mbps,
aceasta asigurând o calitate acceptabilă. Dezideratul este, ca prin codarea
semnalului video sursă, să se realizeze o reducere a spaţiului necesar pentru
stocare şi a ratei de bit necesare pentru transmitere explorând atât
redundanţele statistice cât şi pe cele subiective ce există în sau între cadre. De
asemenea se doreşte a se coda un set minim de date folosind tehnicile de
codare entropice, păstrându-se în acelaşi timp calitatea imaginilor originale.
Algoritmul de compresie MPEG-1 a fost dezvoltat avându-se în vedere
atingerea unei compatibilităţi cu aplicaţiile JPEG şi H.261 (standardul CCITT
H.216). Astfel metoda de compresie folosită la MPEG se aseamănă destul de
mult cu cea de la JPEG. Acest lucru se poate observa şi din diagrama bloc a
algoritmului de compresie MPEG video de mai jos:

Modul
intracadru
Bit
stream
DCT Q VLC

Video IN
Q 1
Modul
intercadru

IDCT

ME FM

Figura 6.1 Schema bloc a codorului MPEG

S-au folosit notaţiile:

DCT – Transformata Cosinus Discretă (Discrete Cosine Transform);


Q – Blocul de Cuantizare (Quantizer);
VLC – Codare Entropică de tip Huffman (Variable Length Coder);
FM – Blocul de Memorare a Cadrelor (Frame Memory);
Laborator 6 65

ME – Blocul de Estimare a Mişcării (Motion Estimator).


Q-1 şi IDCT – operaţiile inverse cuantizării respectiv DCT

La intrarea codorului MPEG se introduce un semnal video format


dintr-o succesiune de cadre video. Fiecare cadru este procesat separat fiind
tratat ca o singură imagine statică. Operând asupra unui singur cadru codorul
MPEG se află în modul intracadru. În acest mod de lucru un cadru este mai
întîi transformat în domeniul frecvenţă folosind Transformata Cosinus
Discretă apoi cuantizat, pentru ca în final rezultatul celor două operaţiuni să
fie codat folosindu-se algoritmul de codare Huffman. Dezavantajul utilizării
doar a acestui procedeu constă în faptul că deşi se realizează o compresie
semnificativă prin simpla procesare a semnalului video de intrare ca o
succesiune de imagini statice, folosind JPEG, acesta nu exploatează
redundanţa temporală considerabilă prezentă în toate secvenţele video. Astfel
mulţi dintre pixeli se vor schimba foarte puţin sau chiar de loc de la un cadru
la celălalt .
Pentru modul de codare intercadru ,blocuri similare de pixeli,
comune la două sau mai multe cadre succesive, sunt înlocuite cu un vector ce
caracterizează mişcarea unuia dintre ele relativă la poziţia din cadrul curent
pentru a ajunge în poziţia în care acesta apare în celelalte cadre. Principala
problemă constă în modul de stabilire a ordinii cadrelor. Câteodată este
eficient ca acel vector (pointer) să aibă drept referinţă un bloc din cadrul
anterior, în timp ce în alte situaţii este mai convenabilă alegerea drept
referinţă a unui bloc dintr-un cadru viitor.
În Figura 6.1 este ilustrată şi tehnica codării intercadru : după ce se
realizează prelucrarea cu DCT şi cuantizarea (Q) unui cadru din semnalul
video iniţial, acesta este supus unui proces invers constând din Q -1 şi IDCT.
Astfel se poate obţine un cadru identic cu cel care ar fi obţinut de algoritmul
de decompresie. Acesta va fi apoi stocat în FM şi utilizat la estimarea şi
compensarea mişcării (ME) relativ la cadrele vecine.
Conform unor studii efectuate de grupul MPEG, folosind procedeul de
codare intercadru s-a obţinut o compresie de trei ori mai bună faţă de
rezultatele utilizării doar a modului intracadru, lucru posibil doar prin
exploatarea redundanţelor existente în secvenţele video.
Pentru a se crea suportul necesar utilizării cu succes a algoritmului de
compresie pentru o gamă largă de aplicaţii, cei din grupul de cercetare MPEG
au inclus câteva facilităţi cum ar fi:
 posibilitatea de a fi modificaţi de către utilizator parametrii de intrare –
dimensiunea imaginii, numărul de cadre/secundă,etc;
 “random acess” – acces aleator în fluxul de date;
 posibilităţi de derulare ”fast forward/reverse”,”reverse playback”;
 posibilitatea de editare a stream-ului comprimat de biţi .
66 Laborator 6

Pentru MPEG-1 este prevăzut un set de parametrii recomandaţi cum ar


fi: un număr minim de 720 pixeli per linie , un număr de 576 linii pentru
fiecare imagine şi o rată minimă de 30 cadre/ secundă.
Prin acces aleator trebuie să fie posibil accesul în secvenţa cadrelor
video în orice moment al acesteia. Acest lucru implică existenţa cadrelor de
acces – cadre codate în modul intracadru, care pot fi decodate fără referinţă la
alte cadre.
Opţiunea de derulare “Fast forward/reverse“ se referă la posibilitatea de
a derula înainte sau înapoi secvenţa video. Rezultatul se poate afişa folosind
cadrele de acces obţinând efectul de rapid înainte sau rapid înapoi .

Compensarea mişcării (Motion Compensation)


Ideea ce stă în spatele conceptului de compensare a mişcării este că o
parte din imaginea dintr-un cadru va fi la fel sau oricum similară celei cu o
mărime egală dintr-un cadru alăturat. Pentru MPEG sunt prevăzute două
moduri de compensare a mişcării predicţia şi interpolarea.

A) Predicţia
MPEG foloseşte în codare împărţirea imaginii în macroblocuri de
16x16 pixeli pentru luminanţă şi 8x8 pentru crominanţă spre deosebire de
blocurile folosite la codarea JPEG ce au o mărime de doar 8x8 pixeli atât
pentru luminanţă cât şi pentru crominanţă.

Y1 Y2 U

Y3 Y4 V

Figura 6.2 Structura unui macrobloc

Fiecare macrobloc conţine patru blocuri de luminanţă (Y1,Y2,Y3,Y4) şi


două blocuri de crominanţă (U,V). Formatul obţinut este în consecinţă 4:1:1.
Prin folosirea predicţiei în algoritmii de codare MPEG se reduc redundanţele
temporale existente între cadre, codându-se doar imaginile eroare de predicţie
(este vorba de diferenţa între imaginile originale şi imaginile obţinute prin
predicţie cu compensarea mişcării).
Un cadru prelucrat cu ajutorul predicţiei este împărţit în macroblocuri, fiecare
dintre acestea fiind codate separat. Codarea se face cu referinţă către un
‘anchor frame’ ce precede cadrul curent. Fiecare macrobloc din cadrul curent
va fi reprezentat de un vector de mişcare. Acesta ne dă deplasamentul
Laborator 6 67

macroblocului din cadrul curent faţă de corespondentul său din cadrul


adiacent (vezi Figura 6.3):

Cadrul decodat
anterior

(24,4)
Cadrul curent

Cadrul decodat
viitor
(16,8)

(8,24)

Bloc
16x16

Figura 6.3 Compensarea mişcării

S-a considerat exemplul: fiecare cadru video este format din 64x64
pixeli grupaţi în 16 macroblocuri identice. Porţiunea colorată a cadrului
curent reprezintă macroblocul folosit în compensarea mişcării (colţul stânga
sus al său se află în poziţia (x=16, y=8). Perechea acestui bloc în cadrul
precedent se află în poziţia (24,4). Săgeata din partea stângă a macroblocului
reprezintă vectorul de mişcare care în acest caz este de coordonate (8,24).

Observaţii:
1. Nu este necesar ca macroblocul corespondent din cadrul anterior să se
afle la o distanţă mai mică de 16 pixeli.
2. Potrivirea nu se face faţă de un cadru video anterior ci mai degrabă faţă
de un cadru ce a fost deja codat şi decodat deoarece decodorul nu are
acces la cadrele video sursă ci doar la versiuni decodate ale cadrelor
originale.

Determinând blocul corespondent din cadrul precedent algoritmul


MPEG înregistrează vectorul de mişcare şi eroarea de predicţie care este o
matrice de 16x16 de difereţe între macroblocul curent în cadrul c şi
macroblocul origine din cadrul r:
68 Laborator 6

Ec ( x, y)  I c ( x, y)  I r [( x, y)  M rc ]

În formula de mai sus Ec ( x, y) reprezintă eroarea de predicţie; I i ( x, y) este


valoarea pixelului de coordonate (x,y) în cadrul I iar M ij este vectorul de
mişcare pentru cadrul j asociat cadrului i.
Matricea de predicţie a erorii va avea multe valori de zero. Aceasta va
fi codată folosind tehnica DCT urmată de cuantizare, obţinând o rată de
compresie mai mare decât prin simpla codare a matricii originale.
Standardul MPEG nu impune un mod de realizare procedeului de
potrivire a blocurilor. Uzual vectorul de mişcare pentru un macrobloc se
obţine minimizând funcţia de cost, funcţie ce măsoara diferenţa dintre un
macrobloc şi fiecare posibil corespondent al său. Acest lucru se poate exprima
matematic folosind relaţia:

MIN
mM

( x , y )B
C[ I c ( x, y )  I r (( x, y )  m)]

unde s-au folosit notaţiile:


B  un macrobloc în cadrul curent Ic;
m= vectorul de deplasare având referinţa în cadrul de referinţă Ir;
M=aria de căutare în cadrul de referinţă;
C=funcţia de cost.

Valoarea lui m ce minimiza expresia de mai sus se foloseşte ca vector


de mişcare notat pentru acest bloc M rc . Aria de căutare poate acoperi doar
mici porţiuni sau poate cuprinde întreaga arie a cadrului.

A. B.
Laborator 6 69

C. D.
Figura 6.4.(A) Cadrul de la momentul N; (B) Cadrul de la momentul N-1
folosit la predicţia conţinutului cadrului de la momentul N (s-au figurat şi
vectorii de mişcare); (C) Eroarea de predicţie obţinută fără compensarea
mişcării (toţi vectorii de mişcare sunt presupuşi nuli); (D) Imaginea care
trebuie codată, obţinută prin folosirea compensării mişcării.

B) Interpolarea
Deşi codarea cu ajutorul predicţiei ne oferă o rată de compresie mai
bună decăt cea rezultată în urma unei compresii JPEG efectuată cadru cu
cadru, şi aceasta poate fi îmbunătăţită. Astfel MPEG permite codarea
cadrelor video folosind două cadre de referinţă. Unul este considerat în
cadrul precedent (aposteriori) iar celălat în cel viitor (apriori) faţă de cadrul
curent. Această abordare poartă denumirea si de interpolare bidirecţională şi
are ca efect o rată de compresie mai bună decât cea obţinută prin folosirea
unui singur cadru de referinţă.
Pentru a întelege de ce interpolarea bidirecţională poate îmbunatăţi
semnificativ rata de compresie considerăm o imagine care se mişcă în raport
cu cadrul imagine la o rată de 1/2 pixeli per cadru. Încercând determinarea
unui macrobloc în cadru actual bazându-ne pe cadrul imediat următor nu vom
putea găsi nici un bloc care să se potrivească. În mod similar vom obţine
acelaşi lucru procedând la fel şi în cazul următorului cadru. Totuşi o estimare
a celei mai bune potriviri dintre cadrul precedent şi cel viitor ne va determina
o predicţie exactă, astfel încât matricea de eroare va deveni nulă.
Figura 6.3 ilustrează tehnica folosită în interpolarea bidirecţională.
Cadrul curent considerat a fi cadrul B este procesat în funcţie de cele două
cadre de referinţă: cel precedent respectiv cel viitor. Fiecare macrobloc va
putea fi codat folosind un bloc din cadrul ulterior (vorbim în acest caz de
predicţie apriori), un bloc din cadrul anterior (predicţie aposteriori), sau câte
un bloc din fiecare cadru referinţă (mediere) rezultând matricea de eroare
minimă.
70 Laborator 6

În cazul interpolării bidirecţionale trebuie codată mai multă informaţie.


O dată cu predicţia cadrelor o matrice diferenţă va rezulta şi apoi se va coda
folosind DCT. În plus fiecare macrobloc va fi codat indicându-se modul de
predicţie (apriori, aposteriori, prin mediere) şi folosind unul sau doi vectori de
mişcare.

Ordonarea Cadrelor
În MPEG se definesc trei tipuri de cadre:
a) Cadre I (Intra-coded images):
 Sunt codate fără referinţe la alte imagini. Un cadru I este tratat ca o
imagine fixă.
 MPEG foloseşte codarea JPEG pentru aceste imagini. Totuşi, contrar
JPEG, compresia trebuie făcută în timp real. Rata de compresie a
imaginilor I este mai mică cu MPEG.
 Cadrele I sunt punctele de acces aleator în fluxul MPEG.
 Cadrele I folosesc 8x8 blocuri pentru a defini un macrobloc pe care se
calculează DCT.
 Coeficienţii DC sunt codaţi DPCM. Diferenţe ale blocurilor succesive
sunt calculate şi transformate utilizând codarea cu lungime variabilă.

b) Cadre P (Predictive-coded frames): codarea se face folosind predicţia cu


compensarea mişcării faţă de un cadru anterior I sau P, acesta fiind folosit
ca referinţă pentru predicţii apriori;

c) Cadre B (Bi-directionally predictive coded frames): codarea se face


luând drept referinţă atât cadrul precedent cât şi pe următorul (vezi
Interpolarea) ; nu se foloseşte ca referinţă pentru predicţie.

d) Cadre D (DC – coded frames)


 Sunt cadre codate intra. Ele pot fi folosite pentru derulare rapidă înainte
sau înapoi.
 Numai parametrii DC ai DCT sunt codaţi, coeficienţii AC sunt
neglijaţi.
 Cadrele D constau numai din componentele de joasă frecvenţă a
imaginilor. Ele utilizează numai un tip de macro-bloc şi numai
coeficienţii DC sunt codaţi.
 Derularea înainte sau înapoi se poate realiza şi cu cadre I. Pentru
aceasta cadrele I trebuie să apară periodic în fluxul de date. Redarea
înapoi însă necesită o cantitate imensă de stocare deoarece toate
imaginile dintr-un grup trebuie decodate în modul forward şi stocate,
după care redarea înapoi este posibilă.
Laborator 6 71

Frecvenţa relativă de apariţie a acestor cadre în interiorul unui flux


video este un parametru configurabil care trebuie însă să satisfacă câteva
reguli.
În primul rând trebuie să satisfacă cerinţele pentru ‘acces aleator‘ şi
căutare ‘fast forward/reverse’. Acestea determină o limitare asupra frecvenţei
de apariţie a cadrelor I în sistemul codat considerat.
În al doilea rând trebuie să ţină seama de legătura strânsă ce există între
complexitatea de calcul şi numărul de cadre B, astfel încât cu cât avem mai
multe cadre B cu atât volumul de calcul va creşte.
În al treilea rând cadrele B nu pot fi procesate decât ţinând cont de
cadrele I şi P deoarece un cadru B nu poate fi considerat referinţă pentru un
alt cadru B. De aceea cu cât există mai multe cadre B cu atât va creşte distanţa
medie dintre acesta (cadrul B) şi cadrele sale de referinţă şi cu atât va fi mai
mică corelarea între cadrul B şi referinţe.

Regulile de codare sunt:


- fiecare cadru I este codat folosindu-se doar codarea intracadru;
- fiecare cadru P este codat folosindu-se predicţia faţă de cel mai recent
cadru P sau I;
- fiecare cadru B este codat folosindu-se cele mai apropiate cadre I sau P
(precedent şi viitor)
Cadrele sunt organizate în grupuri de cadre. Fiecare grup este alcătuit
dintr-un singur cadru I urmat de un număr de cadre P şi B. Un cadru B nu
poate fi decocodat până când cadrele de referinţă, cel precedent respectiv cel
viitor nu au fost decodate. Organizarea fiecărui grup se face astfel încât
fiecare cadru B să urmeze ambelor cadre de referinţă.
Pentru o mai bună înţelegere se consideră exemplul ilustrat în Figura
6.5. Se observă că primele şase cadre formează un grup. Modul de aranjare al
acestora în interiorul grupului ţine cont de ceea ce s-a afirmat mai sus. Astfel
pentru a realiza predicţia pentru cadrele B 2 şi 3, cadrul 4 va fi stocat dupa
cadrul 1(cadru folosit pentru realizarea predicţiei apriori). Cadrele 5 si 6 sunt
interschimbate din acelaşi motiv. Cadrul B notat cu 7 face parte din grupul
următor deoarece este codat după cadrul I 8.
72 Laborator 6

Predicţie apriori

1 2 3 4 5 6 7 8
TIMP
I B B P B P B I

Predicţie Bidireţională

Figura 6.5 Exemplu de organizare a cadrelor în timp

Decodorul efectuează operaţiile inverse codării: Se extrag şi se


decodează cuvintele codate entropic din stream-ul de biţi pentru a se obţine
toţi coeficienţii DCT diferiţi de zero pentru fiecare cadru. Odată reconstruiţi
toţi aceşti coeficienţi ce aparţin unui singur cadru (cu ajutorul Q-1) se aplică
transformata IDCT obţinându-se valoarea pixelilor dintr-un cadru. Procesând
întregul stream de biţi toate cadrele (imaginile) sunt decodate şi reconstruite.

6.2 Standardul MPEG 2


Standardul MPEG2 VIDEO (ISO/IEC 13818-2) a fost realizat pentru
codarea
- în transmisiuni TV prin cablu/satelit.
- în televiziunea de înaltă definiţie (HDTV).
- în servicii video prin Internet (ATM).
Codarea video se face la o rată între 4 şi 9 Mbiţi/s. Codorul MPEG 2
permite codarea semnalului video întreţesut şi scalarea imaginii.

Cerinţe principale:
 Compatibilitate cu semnalul video întreţesut (ITU-R 601).
 Codarea la calitate bună la rate cuprinse între 4 şi 9 Mbiţi/s.
 Acces aleator la comutarea canalelor, căutare şi derulare FF/FR folosind
punctele de acces din grupurile de imagini.
 Permite codarea crominanţei şi la formate de rezoluţie mai mare 4:2:2 şi
4:4:4.
 Codarea scalabilă video pentru aplicaţii care au cerinţe diferite de calitate a
semnalului video.
Laborator 6 73

 Sistemul să suporte sincronizarea între fluxurile audio-video la


redare/acces pentru fluxuri multiple.

Cerinţe suplimentare:
 Compatibilitate şi interoperabilitate cu MPEG1.
 Sistemul să suporte codarea formatelor neîntreţesute şi întreţesute la
diferite rate de cadru.
 Sistemul să suporte formate video la diferite rapoarte de aspect.
 Încărcare minimă a sintaxei MPEG pentru includerea facilităţilor de mai
sus.
 Codorul şi decodorul să aibă o complexitate rezonabilă.

Facilităţi noi faţă de MPEG1:


 Suportă formatele 4:2:2 şi 4:4:4.
 Imagini asociate cadrelor şi câmpurilor (la video întreţesut).
 DCT adaptat pentru cadru/câmp.
 Compensarea mişcării pentru cadru/câmp/duale.
 Scanare alternativă a coeficienţilor DCT.
 Tabel de codare variabilă (VLC) diferit pentru coeficienţii DCT.
 Tabel de cuantizare neliniară – măreşte acurateţea cuantizării pentru valori
mici.

Figura 6.6 Formatele de codare luminanţă – crominanţă


74 Laborator 6

a) b) c)
câmpul câmpul
par impar par impar

timp timp timp


Figura 6.7 Scanarea a) întreţesută 4:1:1; b) întreţesută 4:2:2/4:4:4 şi c)
progresivă

Codarea semnalului video


 Există două tipuri de imagini: imagini-cadru şi imagini-câmp
 Compensarea mişcării se face în mai multe moduri:
- Predicţia între cadre în cazul imaginilor-cadru se face ca la
MPEG1.
- Predicţia între câmpuri în cazul imaginilor-câmp:

referinţă curent

Figura 6.8 Predicţia între câmpuri pentru imagini-câmp


Laborator 6 75

- Predicţia între câmpuri în cazul imaginilor-cadru:

16x8 blocuri câmp

Macrobloc cadru
Figura 6.9 Predicţia între câmpuri pentru imagini-cadru

- Predicţia dual-primă pentru cadrele P (se aplică atât imaginilor-


câmp cât imaginilor-cadre), rezultând 16x8 vectori de
compensare a mişcării

referinţă curent

Figura 6.10 Predicţia dual primă

 Adaptarea DCT pentru cadre/câmpuri:


- Se organizează blocuri de 16x16 pixeli ca blocuri pe cadru sau
blocuri pe câmpuri.
76 Laborator 6

blocuri pe cadru blocuri pe câmpuri


Figura 6.11 Împărţirea în blocuri

- Se calculează corelaţia pe direcţie verticală în ambele cazuri.


- Se alege varianta care are corelaţie mai mare.

 Scanarea coeficienţilor DCT

a) b)
Figura 6.12 a) Scanare zig-zag a coeficienţilor DCT inter; b) Scanare alternată
a coeficienţilor DCT intra

6.3 Compresia MPEG audio


Standardul MPEG audio este caracterizat de o complexitate ridicată a
algoritmului, compresie mare a datelor, si calitate foarte buna a semnalului
audio. Compresia este aplicabilă semnalelor audio in general, nu este adaptata
numai semnalelor vocale.
Reprezentarea digitală a datelor audio prezintă o serie de avantaje:
imunitate sporită la zgomot, stabilitate în timp, şi reproductibilitate. De
asemenea, permite o implementare eficientă a unor funcţii de prelucrare, cum
ar fi mixarea, filtrarea, egalizarea, etc., cu ajutorul computerului.
Conversia analog-digitală a semnalului audio se face prin eşantionare si
cuantizare, fiecare eşantion fiind reprezentat printr-un cuvânt de cod binar
(procedeu numit modulaţia impulsurilor în cod sau PCM). Astfel, pentru
reprezentarea unei secunde de material stereo la calitate CD (frecvenţa de
Laborator 6 77

eşantionare 44,1 kHz şi cuantizare pe 16 biti) este nevoie de aproximativ 1,4


Mbiti.

44100 esantioane/s 16 biti/esantion  2 canale  1411200 biti/s

Reducerea acestei rate ridicate de date se face prin compresie.


Algoritmul MPEG/audio este primul standard international pentru compresia
digitală a semnalului audio de înalta fidelitate.
Deşi compresia MPEG/audio este foarte potrivită pentru aplicaţii audio
de sine stătătoare, ea face parte din standardul de compresie combinat MPEG.
Acesta conţine trei părţi: video, audio si sisteme, şi se adresează compresiei
semnalelor video si audio sincronizate.
Pana la ora actuala, au fost adoptate ca standarde trei versiuni MPEG
audio, fiecare aducând îmbunătăţiri faţă de cel precedent. Iată cele trei
versiuni MPEG/audio si câteva caracteristici:

MPEG-1 audio:
 Suportă rate de eşantionare de 32, 44.1 sau 48 kHz;
 Acceptă surse cu unul sau două canale audio;
 Rate de bit acceptate: 32 – 224 kbiti/s pentru un canal;
 Permite introducerea unui cod corector de erori (CRC);
 Permite introducerea altor date decât cele audio in fluxul rezultant;
 Oferă o alegere intre 3 niveluri de compresie (numite layere), pentru a
oferi posibilitatea de compromisuri între calitatea audio si
complexitatea codec-ului:
- Layer I: este cel mai simplu şi este potrivit pentru rate de peste
128 kbps pentru un canal.
- Layer II: este de complexitate medie şi este destinat codării la rate
in jurul a 128 kbps pentru un canal. Este folosit in standardele
Digital Audio Broadcasting (DAB), CD-Interactive (CD-I) si Video-
CD.
- Layer III: este cel mai complex, dar oferă cea mai bună calitate
pentru rate de 64 kbps pentru un canal. Este potrivit pentru
transmisie prin ISDN, pentru arhive de muzica (format mp3), etc.

MPEG-2 audio:
 Este o extensie a standardului MPEG-1 audio pentru rate de eşantionare
scăzute: 16, 22.5, 24 kHz, oferind o calitate mai bună pentru rate de bit
sub 64 kbps mono.
78 Laborator 6

 Este compatibil cu MPEG-1 pentru codarea unor surse cu mai multe


canale: 5 canale normale si unul pentru frecventele joase (5.1), care
poate fi decodata si cu un decodor MPEG-1;
 Introduce o metodă nouă de compresie numita Advanced Audio Coding
(AAC), care nu mai este compatibilă cu MPEG-1, deci nu poate fi
decodată de un astfel de decodor. Caracteristicile AAC: calitate audio
foarte bună la rate de 64 kbps pe un canal, suporta 48 de canale audio,
16 canale pentru frecvenţe joase, 16 canale pentru voce în mai multe
limbi, 16 fluxuri de date. Blocurile codecului au fost îmbunătăţite,
obtinându-se o îmbunătăţire a ratei de compresie cu 30% faţă de
MPEG-1 Layer III.
 Foloseşte tot o structură cu 3 layere ca şi la MPEG-1;

MPEG-4 audio:
 Destinat pentru o gamă largă de aplicaţii audio:
- Compresia semnalului vocal: rate de 2-24 kbps, folosind metodele
HVXC (Harmonic Vector eXcitation Coding), si CELP (Code
Excited Linear Prediction);
- Citirea textului dintr-un document (text-to-speech interface);
- Compresia semnalului audio de înaltă fidelitate;
- Sunet sintetic (muzică sintetizată gen MIDI);
- Mixarea acestor tipuri diferite de semnal audio într-o singură
coloană sonoră;
- Scalabilitatea fluxului de date audio: transmiterea cu rată variabilă
în funcţie de lărgimea de bandă a canalului folosit, prin degradarea
calităţii audio;

Tehnici folosite in compresia MPEG audio


Standardul de compresie MPEG-1/audio realizează performanţe
remarcabile prin exploatarea a doua caracteristici psihoacustice ale aparatului
auditiv uman:
1. Benzile critice: Urechea internă are o reprezentare a spectrului
semnalelor audio la o scară neliniară, sub forma unor benzi de
frecvenţă numite benzi critice. Banda frecvenţelor audibile, care se
întinde până la 20 kHz, este împărţită in 25 de benzi critice, ale căror
lărgimi cresc cu frecvenţa. Cu alte cuvinte, aparatul auditiv poate fi
modelat ca un banc de filtre trece bandă (un set de filtre în paralel),
constând în 25 de benzi nedisjuncte, cu lărgimi începând de la mai
puţin de 100 Hz pentru frecvenţe joase, si ajungând la 5 kHz pentru
frecvenţe înalte.
Laborator 6 79

Tabelul 6.1
Nr. bandă Frecvenţa (Hz) Nr. bandă Frecvenţa (Hz)
0 50 14 1.970
1 95 15 2.340
2 140 16 2.720
3 235 17 3.280
4 330 18 3.840
5 420 19 4.690
6 560 20 5.440
7 660 21 6.375
8 800 22 7.690
9 940 23 9.375
10 1.125 24 11.625
11 1.265 25 15.375
12 1.500 26 20.250
13 1.735
(frecvenţele reprezinta limita superioară a benzii)

2. Mascarea auditivă: Este un fenomen numit şi mascarea


zgomotului, şi se manifestă astfel in domeniul frecvenţă: când un
semnal de nivel mic si unul de nivel mare apar simultan si sunt
destul de apropiate in frecvenţă, dacă semnalul mic se afla sub un
prag de mascare, acesta nu se va auzi din cauza semnalului mai
puternic. Acest fenomen este mai pronunţat când ambele semnale se
află în aceeaşi bandă critică, şi mai putin observabil când acestea se
află in benzi alăturate.

Semnalul puternic
Amplitudine

Zona unde semnalele


mai slabe sunt mascate

Frecvenţa
Figura 6.13 Mascarea auditivă

Figura 6.14 ilustrează definirea principalilor parametrii care descriu


mascarea auditivă. Semnalul puternic se află în interiorul benzii
critice. Semnalele mai slabe care se află sub pragul de mascare nu se
aud. Pragul minim de mascare reprezintă pragul sub care toate
sunetele din banda respectivă sunt mascate de semnalul puternic.
80 Laborator 6

Raportul semnal-mascare (SMR) reprezintă diferenţa dintre puterea


semnalului puternic si pragul minim de mascare. Diferenţa dintre
SMR şi SNR (raportul semnal zgomot datorat cuantizării cu R biti),
reprezintă raportul zgomot-mascare (NMR = SMR – SNR). În
interiorul unei benzi critice, zgomotul de cuantizare este inaudibil
atâta timp cât NMR-ul corespunzător cuantizării este negativ. Astfel
se poate reduce numărul de biţi ai cuantizorului până la limita
NMR-ului.
Semnalul
puternic

SMR Pragul de mascare


SNR
Pragul
minim de
mascare

Nivelul
zgomotului de
cuantizare
Banda critică

Figura 6.14 Parametrii care descriu mascarea auditivă

Schema bloc a codecului MPEG-1/audio:

Date audio
digitale
Cuantizor si Formatare flux Date comprimate
(PCM) Bancul de filtre
codor de biţi

Model Date auxiliare


psihoacustic

Figura 6.15 Codorul MPEG


Date audio
Date comprimate Despachetare Reconstrucţie digitale (PCM)
semnal pentru Bancul de filtre
flux de biţi
fiecare bandă

Date auxiliare

Figura 6.15 Decodorul MPEG


Laborator 6 81

Bancul de filtre are rolul de a descompune semnalul audio in subbenzi.


Aceasta descompunere este realizată cu diferite grade de complexitate în cele
3 layere. In Layer I, II si III, spectrul este împărţit în 32 de subbenzi de
lărgime constantă, fiind astfel un compromis între eficienţa calculelor si
performanţa perceptuală:

Figura 6.16 Descompunerea în subbenzi

Layer II este doar o îmbunătăţire a lui layer I, prin codarea datelor în


grupuri mai mari. Layer III foloseşte un algoritm mult mai complex, fiind
proiectat să obţină rezoluţii în frecvenţă mai apropiate de modelul benzilor
critice.
Modelul psihoacustic este elementul cheie al codorului. El are funcţia
de a analiza conţinutul spectral al semnalului şi să calculeze SMR-ul pentru
fiecare bandă. În urma acestei analize, cuantizorul decide cum să împartă
numărul de biţi disponibili pentru fiecare bandă. Această alocare dinamică de
biţi este realizată astfel încât să minimizeze audibilitatea zgomotului de
cuantizare.
Unitatea de formatare biţi aranjează eşantioanele cuantizate într-un
flux de biţi decodabili.

Decodorul execută operaţiile în sens invers, convertind datele


comprimate într-un semnal audio standard.

6.4 Codorul MPEG (MEnc) în programul VcDemo


Opţiunile de compresie sunt prezentate în Figura 3.17. Există şase tab-
uri cu următorii parametrii:
82 Laborator 6

Figura 6.17 Opţiuni de compresie pentru codorul MPEG

File: Permite alegerea numelui şi a formatului (MPEG-1


sau MPEG-2) .
Rate: Permite setarea ratei de bit a fişierului comprimat, în
Mbiţi/secundă.
GOP(Group of pictures): Permite alegerea câtorva succesiuni standard (nu
adaptiv) de cadre în fluxul comprimat.
Motion: Permite selectarea deplasamentului maxim folosit în
compensarea mişcării.
Format: Pentru formatul MPEG-2, se poate alege modul
progresiv sau modul întreţesut. Dacă se alege modul
întreţesut, poziţia primului câmp trebuie precizată.
Field/Frame: Pentru modul întreţesut se poate îmbunătăţi
rezultatul compresiei MPEG-2 prin setarea unor
opţiuni suplimentare pentru codarea pe cadre şi
câmpuri (semicadre).

Din fereastra text se obţin informaţiile cele mai utile cu privire la


codarea cadrului respectiv: rata de bit per cadru (exprimată în biţi/pixel), tipul
cadrului (I/B/P) obţinut prin codare, felul în care a fost codat fiecare
macrobloc al cadrului (afişând o matrice de litere conform poziţiei
macroblocului în cadru).

Observaţie: Acesta este un codor educaţional. Un codor MPEG profesionist


permite mult mai multe setări, obţinând rezultate superioare.

 Se alege „Open Image Sequence” din toolbar şi se deschide secvenţa


‘Suzie.yuv’. Se alege codorul MPEG din toolbar (MEnc).

Observaţie: Până la alegerea unui nume pentru secvenţa video de comprimat


(Save as…), opţiunile din interfaţa codorului MPEG sunt inactive.
Laborator 6 83

Figura 6.18 Codorul MPEG

 Se aleg (de exemplu) opţiunile: (File) Save as Suzie.mpg / Mpeg1 /(Rate)


1.15Mb/s /(Gop) IBBPBB / (Motion) 15. Codarea începe prin confirmarea
opţiunilor (Apply):

Figura 6.19 Alegerea deplasamentului maxim

Observaţie: Interfaţa codorului arată cadrul care tocmai a fost codat şi o


fereastră text cu date despre compresia cadrului şi a macroblocurilor sale.
Codarea poate fi întreruptă/reluată în orice moment prin apăsarea Spacebar-
ului.

Figura 6.20 Informaţii din fereastra text


84 Laborator 6

Semnificaţia literelor este următoarea:


 S – (macrobloc) ignorat;
 I – codat intra;
 0 – obţinut prin predicţie apriori (forward) fără compensarea mişcării ;
 F - obţinut prin predicţie apriori (forward) a cadrului;
 f - obţinut prin predicţie apriori (forward) a câmpului(MPEG-2
întreţesut);
 p - obţinut prin predicţie spaţială şi temporală ;
 B - obţinut prin predicţie aposteriori (backward) a cadrului;
 b - obţinut prin predicţie aposteriori (backward) a câmpului;
 D - obţinut prin interpolare pe cadre;
 d- obţinut prin interpolare pe câmpuri;

 Se întrerupe de mai multe ori compresia. Se notează care sunt cele mai
utilizate tipuri de macroblocuri în codare (cele obţinute prin interpolare,
cele obţinute prin predicţie etc).
 Se reia codarea selectând şi alte opţiuni.

Observaţie: Codorul MPEG al programului VCDemo nu introduce în fluxul-


ul comprimat informaţii de sistem (timing), în consecinţă pentru vizualizarea
secvenţei nu se poate folosi Windows Media Player-ul, ci de exemplu
decoderul MPEG al VCDemo.

6.5 Decodorul MPEG (MDec) în programul VcDemo


Opţiunile de compresie sunt prezentate în Figura 6.21. Există cinci tab-
uri cu următorii parametrii:

Figura 6.21 Opţiuni de compresie pentru codorul MPEG

Operation: Permite setarea a ceea ce va fi afişat prin decodare:


 decoded frames - decodare normală
Laborator 6 85

 frame prediction – cadrele obţinute doar prin predicţie.


Se poate astfel evalua oarecum calitatea predicţiei
(erorile predicţiei se propagă);
 coded difference – cadrele diferenţă faţă de predicţie.
Permite o evaluare mai precisă a calităţii predicţiei şi a
numărului de macroblocuri codate intra (asupra cărora nu
s-au făcut predicţii).
Display: Permite afişarea alb-negru sau color a secvenţei decodate,
cu sau fără suprapunerea vectorilor de mişcare, cu sau fără
includerea cadrelor de tip B (pentru a necesita mai puţină
putere de calcul);
Video: Permite decodarea pas cu pas sau automată;
Save...: Permite salvarea secvenţei decodate în format YUV.

Decodorul VCDemo permite reconstituirea secvenţelor de imagini


comprimate MPEG-1 sau MPEG-2.
Fereastra text a interfeţei conţine informaţii despre dimensiunea
cadrelor din secvenţă, rata de bit a acesteia, numărul de cadre/secundă,
dimensiunea VideoBuffer-ului folosit la decodare, tipul compresiei secvenţei
(MPEG-1 sau 2), tipul cadrelor ce se succed (I/P/B), etc.

 Se încarcă secvenţa MPEG Mobile.mpg sau Bike.mpg.

Figura 6.22 deschiderea fişierului MPEG

 Se alege afişarea decoded frames cu suprapunerea vectorilor de mişcare şi


decodare pas cu pas. Ca şi până acum decodarea începe prin selectarea
Apply. Decodarea poate fi întreruptă prin selectarea No în fereastra de
dialog care apare. Selectarea Cancel are drept rezultat continuarea
decodării în mod automat.
86 Laborator 6

Figura 6.23 Informaţiile din caseta text

 Se alege afişarea frame prediction. Ce se poate spune despre calitatea


predicţiei?
 Se alege afişarea coded difference. Ce se poate spune despre numărul de
macroblocuri care necesită o codare de tip intra?
 Se reia decodarea şi pentru alte secvenţe, urmărind cum depinde calitatea
predicţiei de dinamismul secvenţei.

6.6 Exerciţii

1. Cum se poate reduce consumul de biţi pentru benzile de frecvenţe înalte,


care nu sunt importante atunci când se urmăreşte buna compresie şi nu
calitatea (ex: rate de mai puţin de 112 kbps)?
2. Cum trebuie să fie materialul audio original pentru o compresie bună:
înregistrare de calitate proastă, cu zgomot, sau sunet clar ?
3. Codorul MPEG afişează cadrul care tocmai a fost prelucrat. Explicaţi de ce
secvenţa afişată nu respectă succesiunea temporală normală.
4. Explicaţi de ce secvenţa Suzie.yuv ar fi putut fi comprimată cu performanţe
asemănătoare şi conform standardului H.261.
5. Comparaţi rezultatele obţinute prin transmiterea cadrelor diferenţă de
imagine fără compensarea mişcării cu cele obţinute prin compensarea
mişcării. În ce condiţii se obţine o îmbunătăţire semnificativă?
6. La decodarea secvenţei Mobile.mpg prima coloană de macroblocuri (în
stânga imaginii) conţine aproape în exclusivitate macroblocuri codate intra
(fără predicţie). Explicaţi de ce.
Bibliografie 87

BIBLIOGRAFIE

1. Paleologu C., Udrea R. M., Răducanu M., Vizireanu D. N. Prelucrarea


numerică a semnalelor – Aplicaţii în Matlab, UPB, 2001
2. Răducanu M. Sisteme şi aplicaţii multimedia – Algoritmi pentru compresia
semnalelor video, Editura MatrixRom, 2004.
3. Răducanu M. Sisteme şi aplicaţii multimedia – Transformări
biparametrice utilizate în analiza imaginilor, Editura Electronica 2000,
2004.
4. Răducanu M., Preda R. O., Udrea R. M. Sisteme şi aplicaţii multimedia –
Îndrumar de laborator, Editura Electronica 2000, 2004.
5. Udrea R. M. Comunicaţii multimedia – note de curs.
6. Vizireanu D. N. Recunoaşterea formelor – Elemente fundamentale,
Editura Academiei Tehnice Militare, 2002.
7. Vizireanu D. N., Udrea R. M., Pavel R. F. Prelucrarea imaginilor şi
recunoaşterea formelor – Îndrumar de laborator, Editura Electronica
2000, 2003.
Tiparul executat în
TIPOGRAFIA
UNIVERSITĂȚII MARITIME
Constanța

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