Sunteți pe pagina 1din 89

Comunicaţii multimedia – Laborator 1 1

LABORATOR 1

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 complexi) 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 marime 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 Comunicaţii multimedia – 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
N M
1
er 
NM
 [Y (i, j )  X (i, j)]
i 1 j 1
2

 Raportul semnal - zgomot (SNR)


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

Î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ă
Comunicaţii multimedia – 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 fi încărcate din subdirectorul imag, până când următoarea
4 Comunicaţii multimedia – Laborator 1

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.

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:
Comunicaţii multimedia – 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ă antialiere ş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 Comunicaţii multimedia – Laborator 1

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

3.1 Aspecte teoretice


Metoda de compresie PCM implică realizarea următoarelor operaţii:
1. eşantionarea cu frecvenţa de eşantionare f e  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:
Comunicaţii multimedia – 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 Comunicaţii multimedia – 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


Q VLC

~
x (i, j )
xˆ (i, j ) Predictor Memorie
Figura 1.7 Codorul DPCM
Comunicaţii multimedia – 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  z 2b  z3 c ,
unde z1 , z 2 , z 3 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).
10 Comunicaţii multimedia – Laborator 1

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:

Figura 1.9 Opţiunile de compresie pentru compresia DPCM

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 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.
Comunicaţii multimedia – Laborator 1 11

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.
12 Comunicaţii multimedia – Laborator 2

LABORATOR 2

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 originală). Deoarece energia conţinută în al doilea semnal este
mai mică CODEC 2 poate aloca mai puţini biţi.
Comunicaţii multimedia – Laborator 2 13

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

1.2.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. Valoarea c reprezintă
14 Comunicaţii multimedia – Laborator 2

parametrul de formă a funcţiei de densitate de probabilitate


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

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.
Comunicaţii multimedia – Laborator 2 15

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?
16 Comunicaţii multimedia – Laborator 2

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 Discetă 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 kv Cvu 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
Comunicaţii multimedia – Laborator 2 17

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
c
probabilitate de tip Gaussia 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.
18 Comunicaţii multimedia – Laborator 2

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 coleţ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şe ş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.
Comunicaţii multimedia – Laborator 2 19

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

Figura 2.7 Coeficienţi 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?
20 Comunicaţii multimedia – Laborator 2

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 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?

2.3. Codarea JPEG de bază

2.3.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 2.1 este arătat modul de evaluare a calităţii imaginii
decompresate:

Tabelul 2.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;
Comunicaţii multimedia – Laborator 2 21

- coeficienţii AC sunt codaţi Huffman;

Codorul JPEG

diferenţa DC
Bloc de
imagine
8x8
coeficienţii AC
Figura 2.8 Codorul JPEG

Decodorul JPEG

diferenţa DC

Imaginea
reconstruită
coeficienţii AC
Figura 2.9 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 2.10 Împărţirea în unităţi de date


22 Comunicaţii multimedia – Laborator 2

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 2.11a). 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.
 prin procesare întreţesută (vezi Figura 2.11b), la care se
procesează pentru un bloc toate componentele la rând, iar apoi se
trece la blocul următor

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

Figura 2.11 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).
Comunicaţii multimedia – Laborator 2 23

DCi-1 DCi

DIFF= DCi-DCi-1
Bloci-1 Bloci

Figura 2.12 Cuantizarea şi codarea coeficienţilor DC

 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 2.13 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.

2.3.2 Opţiuni de compresie


Opţiunile de compresie sunt arătate în Figura 2.14. Există şase tab-
uri cu următorii parametrii:
24 Comunicaţii multimedia – Laborator 2

Figura 2.14 Opţiunile de compresie pentru compresia JPEG

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.
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 cromonanţă
 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ă.
Comunicaţii multimedia – Laborator 2 25

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) 
unde valoarea minimă a lui Q N (u, v) este 1 şi NINT este
aproximarea la cel mai apropiat integer. Q este legat de
factorul de calitate Q selectat de utilizator în modul
următor:

Figura 2.15 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
26 Comunicaţii multimedia – Laborator 2

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.

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 2.16 arată
un exemplu:

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


vizibilitate maximă)
Comunicaţii multimedia – Laborator 2 27

2.3.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.
6. Examinaţi consecinţele introducerii biţilor de eroare asupra compresiei
JPEG, la diferite valori ale probabilităţilor.
28 Comunicaţii multimedia – Laborator 3

LABORATOR 3

3.1. Codarea JPEG 2000

3.1.1 Noţiuni teoretice


Standardul JPEG2000 a fost gândit pentru îmbunătăţirea
standardului JPEG. JPEG2000 s-a dorit a fi mai flexibil, cu un raport de
compresie mult mai mare (până la 300:1), cu o structură mai unitară.
JPEG2000 utilizează în locul Tansformatei Cosinus Discrete
Transformata Wavelet Discretă. El permite ambele metode de compresie:
cu pierderi şi fără pierdei.
Paşii algoritmului de codare sunt aceeaşi ca şi pentru standardul
JPEG clasic şi sunt ilustraţi în Figura 3.1:

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

Imagine
comprimată
Împachetare Controlul
date fluxului

Figura 3.1 Schema algoritmului de codare

Pregătirea imaginii
 Conform standardului JPEG2000 pregătirea imaginii este compusă din
următoarii paşi (vezi Figura 3.2):
- 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ă
Comunicaţii multimedia – Laborator 3 29

a 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
~ n
m

0
m0 n 

Figura 3.2 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.3:
30 Comunicaţii multimedia – Laborator 3

Figura 3.3 Funcţia Wavelet Daubechies

 Standardul aplică Transformata Wavelet pe fiecare cadru al imaginii


cu ajutorul algoritmului piramidal reprezentat în Figura 3.4:

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

Filtru trece-sus

Figura 3.4 Algoritmul piramidal de aplicare a Transformatei Wavelet

 Algoritmul realizează descompunerea Wavelet ortogonală a


semnalului discret P2d f la rezoluţia 2 j 1 în semnalul P2d f numit
j 1 j

aproximarea discretă a lui f t  la rezoluţia 2 j şi în semnalul numit


j
detaliu discret Q2d f a lui f(t) la rezoluţia 2 .
j

 Imaginea fiind un semnal bidimendional se aplică Transformata


Wavelet pe linii şi coloane aşa cum este prezentat în Figura 3.5:
Imagine filtrată pe Imagine filtrată pe
Imagine originală linii linii şi coloane

I II

III IV

Figura 3.5 Aplicarea Transformatei Wavelet la o imagine pe un nivel


Comunicaţii multimedia – Laborator 3 31

 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 HL1

LH1 HH1 LH1 HH1

Imaginea după Imaginea după


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

LH3 LH4
HL1 HL1

LH1 HH1 LH1 HH1

Imaginea după Imaginea după


a treia descompunere a patra descompunere

Figura 3.6 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
32 Comunicaţii multimedia – Laborator 3

nou Transformata Wavelet în acelaşi mod. Specificaţiile standardului


JPEG2000 permit efectuarea între 0 şi 32 de nivele de rezoluţie
(aplicare Transformatei Wavelet de 32 de ori). În Figura 3.6 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.7

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

Figura 3.7 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
Comunicaţii multimedia – Laborator 3 33

 De notat faptul că tot procedeul de codare pentru un bloc de cod are


loc la nivel de plan de bit şi nu la nivel de bit
 Pentru codarea planului de bit se utilizează un codor aritmetic binar
adaptiv bazat pe context
 Codarea cuprinde trei etape numite:
- propagarea importanţei (significance propagation)
- rezoluţia amplitudinii (magnitude refinement)
- eliminarea repetiţiilor (clean-up)
 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.8)

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.8 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
34 Comunicaţii multimedia – Laborator 3

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.9:

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

Figura 3.9 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.10)

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.10 Structura fluxului de date


Comunicaţii multimedia – Laborator 3 35

3.1.2 Opţiuni de compresie


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

Figura 3.11 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 alegera 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.
36 Comunicaţii multimedia – Laborator 3

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.1.3 Exerciţii
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
imginii decodate? Cum? Când este folositoare acestă 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?
Comunicaţii multimedia – Laborator 3 37

3.2. Estimarea mişcării

3.2.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 de tectarea
contururilor şi recunoaştera 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 3.12, unde deplasamentul
pentru un pixel (n1 , n2 ) din cadrul k este determinat considerând un bloc
N 1  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  2M 1  N 2  2M 2 .

Fereastră de căutare

Cadrul k-1

Bloc

Cadrul k

Figura 3.12 Potrivirea blocurilor


38 Comunicaţii multimedia – Laborator 3

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 ) 
N1 N 2
 [ s(n
( n1 , n2 )B
1  d1 , n2  d 2 , k  1)  s (n1 , n2 , k )] 2

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


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

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  M 1  d 1  M 1 şi
 M 2  d 2  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 2M 1  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
3.13, unde este reprezentat doar cadrul de căutare cu parametrii ferestrei
de căutare M 1  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).
Comunicaţii multimedia – Laborator 3 39

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.13 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 3.14).
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.
40 Comunicaţii multimedia – Laborator 3

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

Figura 3.14 Căutare încrucişată

3.2.2 Opţiuni de compresie


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

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


Comunicaţii multimedia – Laborator 3 41

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 3.16 Deplasamentul maxim pe orizontală d x şi deplasamentul maxim


pe verticală d y
42 Comunicaţii multimedia – Laborator 3

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. 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 3.17):
 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 dntre 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)
Comunicaţii multimedia – Laborator 3 43

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

3.2.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 avantajosă 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?
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.
44 Comunicaţii multimedia – Laborator 3

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 punctrul 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).
Comunicaţii multimedia – Laborator 4 45

LABORATOR 4
Standardul H.261

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.

4.1.1. 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):


46 Comunicaţii multimedia – Laborator 4

Figura 4.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 4.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 4.3 Structura grupului de blocuri


Comunicaţii multimedia – Laborator 4 47

- imaginea QCIF are 3 grupuri de blocuri.


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

Figura 4.4 Structura unei imagini CIF, respeciv QCIF

3.1.2. 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.
Cadrul anterior
(de referinţă)
Vectorul de
mişcare

Cadrul curent
Figura 4.5 Obţinerea vectorului de mişcare pentru codarea intercadru
48 Comunicaţii multimedia – Laborator 4

 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 4.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ă.
 Schema detaliată a codorului:
Comunicaţii multimedia – Laborator 4 49

Figura 4.7 Schema codorului H.261

 Schema decodorul:

Figura 4.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).
50 Comunicaţii multimedia – Laborator 4

Tabelul 4.1 Tabel pentru codare cu lungime variabilă


RUN Level Cod

0 1 1sa) Dacă e primul coeftficient 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
3 5 0000 0000 1010 0s
3 1 0011 1s
… … ……………………….

Escape 0000 01

 Cele mai întâlnite combinaţii de zerouri succesive (RUN) şi al doilea


simbol (LEVEL) sunt codate cu lungime variabilă (vezi Tabelul 4.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.

Tabelul 4.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
Comunicaţii multimedia – Laborator 4 51

 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 4.3)

Tabelul 4.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 ...
52 Comunicaţii multimedia – Laborator 4

4.1.3 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
30
iar 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 4.4 Codarea vectorilor de mişcare


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

4.1.4 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;
Comunicaţii multimedia – Laborator 4 53

- MVD: MV Data;
- CBP: Coded Block Pattern
4. Nivelul Blocuri
- TCOEFF: Coeficienţii transformatei;

Figura 4.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ă.
54 Comunicaţii multimedia – Laborator 4

4.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 4.10 Încărcarea secvenţei de test

În Tabelul 4.5 sunt descrise diversele butoane din meniu şi


semnificaţia lor:
Comunicaţii multimedia – Laborator 4 55

Tabelul 4.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 4.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).
56 Comunicaţii multimedia – Laborator 4

Artefacte
vizuale

Figura 4.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 4.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
Comunicaţii multimedia – Laborator 4 57

Figura 4.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 4.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)
58 Comunicaţii multimedia – Laborator 4

 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 4.13 Selectarea macroblocului

Macrobloc
de culoare
verde

Numărul
macroblocului
(X Y)

Numărul
cadrului
Figura 4.14 Fereastra MB Tooltip
Comunicaţii multimedia – Laborator 4 59

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

Selectaţi
opţiunile

Figura 4.15 Opţiuni în meniul Graph

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


‘H261 example’)

Figura 4.16 Salvarea fişierului de ieşire


60 Comunicaţii multimedia – Laborator 4

 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 4.17)

Figura 4.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 4.18)

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


graficele.
Comunicaţii multimedia – Laborator 4 61

Figura 4.18 Graficul frecvenţă relativă de codare intra

4.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 reprezină 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 carora 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ă”.
62 Comunicaţii multimedia – Laborator 4

Figura 4.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 4.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
Comunicaţii multimedia – Laborator 4 63

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


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

Figura 4.21 Alegerea sursei video

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


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

Figura 4.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.
64 Comunicaţii multimedia – Laborator 4

Figura 4.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 4.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şeaşă o
matrice în care secvenţa video codată este analizată şi cadru cu cadru în
timp real.
Comunicaţii multimedia – Laborator 4 65

Figura 4.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 pastrat din cadrul anerior.
66 Comunicaţii multimedia – Laborator 5

LABORATOR 5
Standardul MPEG

5.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 5.1 Schema bloc a codorului MPEG

S-au folosit notaţiile:

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


Q - Blocul de Cuantizare (Quantizer);
Comunicaţii multimedia – Laborator 5 67

VLC - Codare Entropică de tip Huffman (Variable Length Coder);


FM - Blocul de Memorare a Cadrelor (Frame Memory);
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 sucesiune 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 5.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 success 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;
68 Comunicaţii multimedia – Laborator 5

 posibilităţi de derulare ”fast forward/reverse”,”reverse playback”;


 posibilitatea de editare a stream-ului comprimat de biţi .
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 5.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ţă
Comunicaţii multimedia – Laborator 5 69

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 macroblocului din cadrul curent faţă de corespondentul
său din cadrul adiacent (vezi Figura 5.3):

Cadrul decodat
anterior

(24,4)
Cadrul curent

Cadrul decodat
viitor
(16,8)

(8,24)

Bloc
16x16

Figura 5.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
70 Comunicaţii multimedia – Laborator 5

o matrice de 16x16 de difereţe între macroblocul curent în cadrul c şi


macroblocul origine din cadrul r:

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

În formula de mai sus E c ( 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
 C[ I
( x , y )B
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.
Comunicaţii multimedia – Laborator 5 71

C. D.
Figura 5.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 5.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ă.
72 Comunicaţii multimedia – Laborator 5

Î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
Comunicaţii multimedia – Laborator 5 73

toate imaginile dintr-un grup trebuie decodate în modul forward şi


stocate, după care redarea înapoi este posibilă.

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ă ţina 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ă inţelegere se consideră exemplul ilustrat în
Figura 5.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 penrtu 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.
74 Comunicaţii multimedia – Laborator 5

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 5.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. Odata
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.

5.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.
Comunicaţii multimedia – Laborator 5 75

 Codarea scalabilă video pentru aplicaţii care au cerinţe diferite de


calitate a semnalului video.
 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 5.6 Formatele de codare luminanţă – crominanţă


76 Comunicaţii multimedia – Laborator 5

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

timp timp timp


Figura 5.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 5.8 Predicţia între câmpuri pentru imagini-câmp


Comunicaţii multimedia – Laborator 5 77

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

16x8 blocuri câmp

Macrobloc cadru
Figura 5.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 5.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.
78 Comunicaţii multimedia – Laborator 5

blocuri pe cadru blocuri pe câmpuri


Figura 5.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 5.12 a) Scanare zig-zag a coeficienţilor DCT inter; b) Scanare
alternată a coeficienţilor DCT intra

5.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
Comunicaţii multimedia – Laborator 5 79

calitate CD (frecvenţa de 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 parti: 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 imbună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 stadardului 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.
80 Comunicaţii multimedia – Laborator 5

 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 imbunătăţite, obtinându-se o imbunătăţire a ratei de compresie
cu 30% faţă de MPEG-1 Layer III.
 Foloseste 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 largimea de bandă a canalului folosit,
prin degradarea calitaţ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
intinde până la 20 kHz, este impărţită in 25 de benzi critice, ale
căror largimi 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 largimi incepând
de la mai putin de 100 Hz pentru frecvenţe joase, si ajungând la 5
kHz pentru frecvenţe înalte.
Comunicaţii multimedia – Laborator 5 81

Tabelul 5.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 5.13 Mascarea auditivă

Figura 5.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ă
82 Comunicaţii multimedia – Laborator 5

sunt mascate de semnalul puternic. 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âna la limita
NMR-ului.
Semnalul
puternic

SMR Pragul de mascare


SNR
Pragul
minim de
mascare

Nivelul
zgomotului de
cuantizare
Banda critică

Figura 5.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 5.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 5.15 Decodorul MPEG


Comunicaţii multimedia – Laborator 5 83

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 impărţit în
32 de subbenzi de lărgime constantă, fiind astfel un compromis între
eficienţa calculelor si performanţa perceptuala:

Figura 5.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ă impartă numarul 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.

5.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:
84 Comunicaţii multimedia – Laborator 5

Figura 5.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).
Comunicaţii multimedia – Laborator 5 85

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.

Figura 5.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 5.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.
86 Comunicaţii multimedia – Laborator 5

Figura 5.20 Informaţii din fereastra text

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.
Comunicaţii multimedia – Laborator 5 87

5.5 Decodorul MPEG (MDec) în programul VcDemo


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

Figura 5.21 Opţiuni de compresie pentru codorul MPEG

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


 decoded frames - decodare normală
 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.


88 Comunicaţii multimedia – Laborator 5

Figura 5.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.

Figura 5.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.
Filtru
Trece
Jos Comunicaţii multimedia – Laborator 5 89

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