Documente Academic
Documente Profesional
Documente Cultură
TEHNICI DE COMPRESIE
A SEMNALELOR
Îndrumar de laborator
Editura
NAUTICA
I
II
Radu Mihnea UDREA Mircea RĂDUCANU
Radu Ovidiu PREDA
TEHNICI DE COMPRESIE
A SEMNALELOR
Îndrumar de laborator
Editura
NAUTICA
III
Copyright © 2013, Editura NAUTICA
Toate drepturile asupra acestei ediţii sunt rezervate Editurii
IV
CUPRINS
Pagina
LABORATOR 1
Noţiuni introductive în codarea imaginilor ................................................... 1
LABORATOR 2
Codarea în domeniul frecvenţă ..................................................................... 11
LABORATOR 3
Codarea JPEG şi JPEG2000 ........................................................................ 20
LABORATOR 4
Estimarea mişcării ......................................................................................... 36
LABORATOR 5
Standardul H.261 .......................................................................................... 43
LABORATOR 6
Standardul MPEG ......................................................................................... 64
BIBLIOGRAFIE .......................................................................................... 87
V
VI
Laborator 1 1
LABORATOR 1
Noţiuni introductive în codarea imaginilor
1.1.1 Introducere
VcDemo este un program de învăţare a tehnicilor de compresie a
imaginilor şi de compresie video.
Scopul programului este de a face posibilă experimentarea cu diferiţi
algoritmi de compresie (mai mult sau mai puţin complecşi) fără a avea în
vedere implementarea lor propriu-zisă. Din această cauză programul este
bazat pe meniuri de dialog şi permite utilizatorului să experimenteze cu
diferiţi parametrii specifici operaţiei de compresie.
Pe de o parte, vizualizarea rezultatelor de compresie a imaginilor ajută
la înţelegerea performanţelor unui anumit algoritm de compresie, iar pe de
altă parte rezultatele stimulează o modalitate de rezolvare a problemei. O
modalitate efectivă de a lucra cu VcDemo este de a-ţi pune tot timpul
întrebările: „ce se va întâmpla dacă folosesc o anumită combinaţie de
parametrii”, „care este cauza artefactelor de compresie” şi „cum pot fi
comparate tehnicile de compresie atât din punct de vedere vizual cât şi
numeric”.
imaginii de start active sau tipului imaginii (imagine fixă, secvenţă video,
secvenţă MPEG).
PSNR Calitate
> 40dB Foarte bună
30 – 40dB Bună
< 30dB Slabă
Laborator 1 3
Secvenţe YUV
Reprezentarea imaginilor color în formatul YUV (Y – luminanţa, U,V
– crominanţa) se face pornind de la reprezentarea RGB (Red Green
Blue) astfel:
Y 0.3R 0.59G 0.11B
U 0.493( B Y )
V 0.877( R Y )
Secvenţele YUV conţin secvenţe de imagini brute fără header. Datele
sunt stocate ca o succesiune de blocuri de date Y-U-V. Formatul de
stocare poate fi doar luminanţă sau luminanţă- crominanţă în format
4:2:0 sau 4:2:2. Pentru fiecare secvenţă trebuie să existe un fişier
header cu acelaşi nume. De exemplu
...\adir\secv.yuv
conţine date YUV cu format descris în secv.hdr. Secvenţe doar de
luminanţă sunt conţinute în fişiere cu extensia .y.
Secvenţe BMP
O secvenţă de imagini BMP este de exemplu: imag1.bmp, imag2.bmp,
..., imag9.bmp, imag10.bmp, etc. Programul nu cunoaşte lungimea
acestei secvenţe. Pentru a indica programului că există o secvenţă imag,
imaginile trebuie organizate după cum urmează:
...\adir\imag.seq
...\adir\imag1.bmp
...\adir\imag2.bmp
...\adir\imag3.bmp
etc
Programul caută fişiere cu extensia *.seq şi după selectare va încărca această
imagine ca prima imagine a secvenţei. De aceea imag.seq trebuie să fie
identică cu imag1.bmp (o copie cu extensie diferită). Toate celelalte cadre vor
4 Laborator 1
Filtru Decimare
Trece Jos M:1
1.2.3 Exerciţii
a)
b)
c)
Bitrate: Selectează rata de bit pentru PCM (doar valori întregi). Este
aplicat un cuantizor uniform pentru o funcţie de densitate de
probabilitate uniformă.
Dithering: Înaintea compresiei PCM o cantitate mică de zgomot poate fi
suprapusă peste imagine. Acest lucru face ca artefactele de
compresie PCM să fie mai puţin observabile. Deoarece
zgomotul este generat local, el poate fi scăzut la decodare.
Această opţiune poate fi selectată sau nu. Cantitatea de
zgomot este controlată de către mărimea pasului dither-ului.
Errors: Când datele sunt comprimate din ce în ce mai mult, biţii devin
din ce în ce mai vulnerabili la erorile de canal. VcDemo
permite adăugarea înaintea decodării a unor erori de bit
aleatoare in fluxul de bit codat. Astfel se pot vedea efectele
erorilor (simple) de canal. Pot fi selectate diferite rate de erori
de bit.
1.3.3 Exerciţii
1. Găsiţi pentru imaginea „Lena256B.bmp” care este numărul minim de biţi,
pentru care diferenţa faţă de imaginea iniţială este acceptabilă. Câte nuanţe
de gri are imaginea în acel caz?
2. Adăugaţi dither la imagine înaintea codării PCM. Reduceţi numărul de biţi
şi obţineţi o imagine de aceeaşi calitate cu imaginea codată anterior. Care
este câştigul în rata de bit? Care este concluzia, dacă se iau în considerare
numai evaluările numerice?
8 Laborator 1
~
x (i, j )
xˆ (i, j ) Predictor Memorie
x(i, j ) Figura 1.7 Codorul DPCM
Laborator 1 9
În Figura 1.7 este reprezentată schema codorului DPCM, unde sunt folosite
următoarele simboluri:
Direcţia de
parcurgere
Pixelul curent
Figura 1.8 O secţiune din harta de biţi pentru modelul de codare DPCM
1.4.3 Exerciţii
1. Alegeţi imaginea de test „Lena256B.bmp”. Se alege primul model de
predicţie. Determinaţi compresia pentru fiecare din cele 6 rate de bit.
2. Care este câştigul în rata de bit pentru aceeaşi calitate a imaginii
(subiectivă) faţă de codarea PCM?
3. Realizaţi compresia folosind diferite modele de predicţie. Comparaţi
imaginile rezultate.
4. Reprezentaţi grafic dependenţa SNR în funcţie de rata de bit pentru ultimul
model de predicţie.
Laborator 2 11
LABORATOR 2
Codarea în domeniul frecvenţă
unde H1(z) este un filtru trece-jos, iar filtrele Hk(z), k=2,3,...,M, sunt filtre
trece banda şi au caracteristicile:
2.1.3 Exerciţii
1. Deschideţi imaginea ”Lena256B.bmp” şi realizaţi descompunerea pe
subbenzi. Pentru un număr diferit de coeficienţi ai filtrului observaţi
imaginea codată rezultată.
2. Pentru aceeaşi imagine, alegeţi o structură de descompunere şi un anumit
filtru. Modificând tipul de codare al subbenzilor, între DPCM şi PCM,
observaţi cum apare imaginea codată şi funcţie de parametrul c.
3. Selectaţi un filtru cu 16 coeficienţi, o descompunere pe 28 subbenzi şi
alegeţi compresia PCM pentru toate subbenzile. Alegeţi o valoare optimă
pentru c. Observaţi câştigul SNR în cazul codării entropice.
4. Pentru diferite grade de descompunere, alegând codarea entropică,
observaţi SNR.
5. Pentru imaginea “Lena256B.bmp” alegeţi un anumit tip de codare al
subbenzilor, precum şi un anumit parametru c. Variaţi numărul de
subbenzi folosite în descompunere precum şi tipul filtrelor. Cum variază
SNR funcţie de rata de bit?
Laborator 2 15
2.2.3 Exerciţii
1. Alegeţi imaginea “Lena256B.bmp”. Această imagine este transformată în
coeficienţi DCT. Verificaţi calitatea imaginii reconstruite pentru diferite
dimensiuni ale blocului DCT. În ce măsură corespunde teoria cu
implementarea practică?
2. Pentru imaginea “Lena256B.bmp” selectaţi transformata DCT 8x8 şi
compresie PCM pentru toţi coeficienţii DCT. Alegeţi o valoare rezonabilă
pentru parametrul c. Desenaţi două curbe SNR - număr de bpp, cu şi fără
codarea entropică. Cât de multă compresie suplimentară ( sau ce SNR ) dă
codarea entropică?
3. Repetaţi punctul (2) pentru valori incorecte ale lui c. Fiţi atenţi la
diferenţele dintre numărul de bpp selectat, cel prezis şi cel rezultat în urma
compresiei. Explicaţi diferenţele observate.
4. Repetaţi punctul (3) utilizând setările corecte pentru parametrul c, pentru
alte două cazuri, şi anume:
- compresie DPCM pentru toţi coeficienţii
- compresie DPCM pentru primul coeficient DCT şi compresie PCM
pentru restul de coeficienţi.
Ce câştig de performanţe se obţine utilizând compresia adiţională DPCM?
5. Repetaţi punctul (3) pentru imaginea “Noise256B.bmp”. Observaţi
varianţa coeficienţilor DCT şi rezultatul în urma alocării biţilor. Comparaţi
rezultatele cu compresia DPCM aplicată acestei imagini.
6. Încărcaţi imaginea ”Lena256B.bmp” şi calculaţi dependenţa SNR-număr
de bpp utilizând blocuri DCT de diferite mărimi, păstrând compresia
coeficienţilor DCT fixă (de exemplu, utilizând DPCM pentru primul
Laborator 2 19
LABORATOR 3
Codarea JPEG şi JPEG2000
Tabelul 3.1
Compresie Calitate
0.25 – 0.5 biţi/pixel color moderată spre bună
0.5 – 0.75 biţi/pixel color bună spre foarte bună
0.75 – 1.5 biţi/pixel color excelentă
> 1.75 biţi/pixel color nu se poate face diferenţa cu imaginea
originală
Codorul JPEG
diferenţa DC
Bloc de
imagine
8x8
coeficienţii AC
Figura 3.1 Codorul JPEG
Laborator 3 21
Decodorul JPEG
diferenţa DC
Imaginea
reconstruită
coeficienţii AC
Figura 3.2 Decodorul JPEG
Pregătirea imaginii
Procesarea unităţilor datelor se poate face:
componentă cu componentă, şi parcurse de la stânga la dreapta, şi de
sus în jos. Acest mod este cunoscut sub numele de procesare
neîntreţesută (vezi Figura 3.4a). Utilizând acest mod pentru o imagine
codată RGB, de înaltă rezoluţie, vor fi afişate pe rând, componentele de
roşu, apoi, verde, şi la sfârşit albastru.
22 Laborator 3
* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *
DCi-1 DCi
DIFF= DCi-DCi-1
Bloci-1 Bloci
3.1.3 Exerciţii
1. Încărcaţi imaginea “Lena256B.bmp”. Utilizaţi matricea standard de
normalizare a luminanţei. Desenaţi trei grafice SNR-număr de bpp, câte
unul pentru fiecare mod de codare entropică ales. Ce SNR suplimentar ne
oferă codarea entropică? Pe aceleaşi grafice, desenaţi caracteristica Calitate
(Quality)-SNR. Ce observaţi în legătură cu aceste grafice?
2. Repetaţi punctul (1) pentru o matrice de normare uniform distribuită (flat
cuant). Observaţi că SNR-ul obţinut în acest caz este mai mare! Daţi o
justificare pentru utilizarea matricii standard de normare în loc de matricea
de normare uniform distribuită.
3. Comparaţi cuantizarea coeficienţilor DCT în codarea JPEG cu cea rezultată
din modul de compresie DCT, de exemplu, pentru imaginea
“Lena256B.bmp” la o rată de 1 bpp. Puteţi găsi diferenţele? Explicaţi.
4. Examinaţi efectele fenomenului de smoothing asupra imaginii JPEG
decodate.
5. Determinaţi raportul de scădere a SNR-ului în urma introducerii de markeri
în fişierul codat JPEG.
Laborator 3 27
Imagine
Transf.
originală Pregătire
Wavelet Cuantizare Codare
imagine
Discretă
Imagine
comprimată
Împachetare Controlul
date fluxului
Pregătirea imaginii
Conform standardului JPEG2000 pregătirea imaginii este compusă din
următorii paşi (vezi Figura 3.11):
- partiţionarea imaginii în cadre
- ajustarea nivelului datelor
- o transformare color ireversibilă
Pentru situaţia, în care imaginea, care trebuie comprimată, este mai mare
decât memoria disponibilă, s-a prevăzut posibilitatea partiţionarea
imaginii în dreptunghiuri disjuncte numite cadre.
Valorile datelor de intrare trebuie să fie într-o gamă centrată în jurul lui
zero, deoarece standardul operează cu filtrări de tip trece-sus. Aşa se
explică necesitatea celei de a doua etape de ajustare nivel.
Al treilea pas în această etapă constă într-o tranformare ireversibilă a
matricii color. Tipul de transformare depinde de reprezentarea iniţială a
28 Laborator 3
I II
Pregătire
imagine III IV
Partiţionare
imagine
Transformare
color Y 0,29 R 0,587G 0.114 B
Cb 0,564( B Y ) 128
Cr 0,713( R Y ) 128
Q dj f
2
~ n
m 2
1
P dj 1 f
2
m0 n
P dj f
2
~ n
m 2
0
m0 n
Filtru trece-sus
I II
III IV
LH2 HH2
LH1 HH1 LH1 HH1
LH3 LH4
HL2 HL1 HL2 HL1
LH2 HH2 LH2 HH2
LH1 HH1 LH1 HH1
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 .)
subimagine
Codarea
Fiecare subimagine a unui cadru al imaginii este împărţită în unităţi şi mai
mici, numite blocuri de cod cu dimensiuni de tipul 64x64 sau 32x32
pixeli.
În cadrul unui bloc de cod citirea valorilor cuantizate ale coeficienţilor
Transformatei Wavelet se face în benzi, fiecare bandă având o înălţime de
patru eşantioane.
La rândul ei, citirea benzilor se face de la stânga la dreapta şi de sus în jos,
aşa cum este prezentat in Figura 3.16
….
.….
.….
….
.
.….
.….
. . . .
. . . . .
. . . .
. . . .
. . . .
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
Controlul debitului
Controlul ratei de debit este operaţia prin care fluxul de date este alterat în
scopul atingerii unui debit de date dorit
Trebuie să se analizeze toate blocurile comprimate şi să se decidă care din
ele să fie trunchiat, după o stategie care să minimizeze efectul
distorsiunilor
Laborator 3 33
Culoarea fundalului
reprezintă diverse nivele de
rezoluţie, iar desenul
reprezintă o regiune
Header Date
pachet comprimate
Encode: Aici se poate seta rata de bit pentru codare în cazul, în care nu
s-a ales la tab-ul de cuantizare opţiunea „Lossless quant”
Quant: Aici se poate selecta tipul de cuantizare a coeficienţilor
Wavelet. Dacă se bifează opţiunea „Lossless quant”, atunci
cuantizarea coeficienţilor Wavelet se realizează fără pierderi
şi tab-urile Encode şi Decode nu vor mai fi active. Tot aici se
poate selecta dimensiunea blocurilor de cod ce urmează a fi
codate.
Levls: Se selectează numărul de nivele de rezoluţie. VcDemo
permite alegerea de până la 9 nivele de rezoluţie, dar
standardul JPEG2000 permite un număr maxim de 32 de
nivele de rezoluţie.
Decode: Aici se poate seta rata de bit la care să se facă decodarea.
Dacă se alege o rată de bit mai mică decât la codare, atunci se
pierde din calitatea imaginii decodate. Alegerea unei rate de
bit foarte mici poate duce la alterarea completă a imaginii
decodate.
Tiling: În etapa de pregătire a imaginii, aceasta poate fi partiţionată
în mai multe subimagini care vor fi procesate complet separat.
Aici se poate alege dimensiunea în pixeli a subimaginilor.
LABORATOR 4
Estimarea mişcării
Fereastră de căutare
Cadrul k-1
Bloc
Cadrul k
Căutarea completă
Este folosită pentru evaluarea criteriilor de potrivire în fiecare bloc de
dimensiune 2M1 1 2M 2 1 din fereastra de căutare. Această strategie este
extrem de consumatoare de timp şi nu se prea foloseşte. În schimb sunt
folosiţi alţi algoritmi de căutare mai rapizi.
2 2 2
1 1 2 1 2
3 3 3
2 2 3 2 3
3 3 3
1 0
1 1 1
Căutarea încrucişată
Metoda căutării încrucişate este altă strategie de căutare logaritmică, la
care la fiecare pas există 4 poziţii de căutare care sunt colţurile unei cruci „+”
(vezi Figura 4.3).
Distanţa dintre punctele de căutare este redusă dacă cea mai bună
potrivire este în centrul crucii sau la marginea ferestrei de căutare.
Laborator 4 39
1 2 3
1 0 1 2 3
5
1 2 3 5 4 5
5
4
fereastra de
căutare
dy
dx dx
dy blocul curent
Imaginile afişate:
Este estimată mişcarea pentru fiecare cadru al secvenţei de imagini.
Apar patru ferestre (vezi Figura 4.6):
Secvenţa de imagini originală (stânga sus)
Diferenţa dintre două cadre consecutive (dreapta sus)
Predicţia compensată de mişcare a imaginii actuale, peste care
este suprapus câmpul de mişcare (stânga jos). Punctul de
pornire al vectorului de mişcare este indicat printr-un punct
negru
Diferenţa compensată de mişcare dintre cele două cadre
consecutive (dreapta jos)
4.1.3 Exerciţii
Încărcaţi secvenţa „car.seq” şi folosiţi estimarea mişcării cu strategia
de căutare „Full Search” pe blocuri 8x8 şi un deplasament maxim de 8 pixeli
8. Care este cea mai bună strategie de căutare din punctul de vedere al erorii
şi din punctul de vedere al timpului de calcul pentru acelaşi număr de
blocuri şi acelaşi deplasament maxim? Ce metodă ar fi cel mai bun
compromis între eroarea de estimare şi timpul de calcul?
9. Comparaţi cele două criterii de estimare (MAD – Minimum Absolut
Difference şi MSE – Mean Square Error) din punct de vedere al erorii şi
din punct de vedere al timpului de calcul.
10.Comparaţi eficienţa estimării mişcării pentru diferite mărimi ale blocurilor
(8, 16 sau 32).
11.Comparaţi eficienţa compensării mişcării pentru cele două deplasamente
(„0.5” – jumătate din dimensiunea blocului şi „1” – dimensiunea blocului).
Laborator 5 43
LABORATOR 5
Standardul H.261
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ţă.
12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33
Algoritmul de codare
H.261 utilizează două metode diferite de codare: intercadru şi
intracadru.
- Pentru codarea intracadru nu este luată în considerare
redundanţa între cadre.
- Pentru codarea intercadru este folosită informaţia din cadrul
anterior sau următor.
Decizia privind modul de codare se ia în timpul compresiei în funcţie
de anumiţi parametrii.
Codarea intracadru se realizează similar cu JPEG. Fiecare bloc de 8x8
pixeli este transformat cu DCT. Cei 64 coeficienţi DCT sunt cuantizaţi
(diferit pentru DC şi AC) şi apoi codaţi entropic.
Codarea intercadru este bazată pe predicţia fiecărui macro-bloc al
imaginii. Aceasta se realizează printr-o comparare a macro-blocurilor
din cadrele anterioare şi cel curent. Vectorul de mişcare este definit de
poziţia relativă a blocului anterior faţă de cel curent.
Vectorul de
mişcare Cadrul de referinţă
Cadrul curent
Escape 0000 01
De exemplu: 0 0 0 –1 6 0 3 EOB
se codează: 001111 001000010 001001010 10
Cuantizarea coeficienţilor
Ajustarea pasului de cuantizare se face în funcţie de cantitatea datelor
în bufferul, din care se face transmisia. Pasul de cuantizare poate varia
între 2 şi 62 (din 2 în 2).
Dimensiunea bufferului este q 64 kbiţi, rata de bit q 64 kbiţi/s iar
30
rata cadrelor Hz, ( k 1...4 ).
k
Numărul mediu de biţi pe MacroBloc este:
- pentru CIF: 5 k q
- pentru QCIF: 20 k q
umplerebuffer
Pasul de cuantizare este 2 int 2
200 q
Fluxul de date
Fluxul de date are o structură ierarhică formată din mai multe niveluri.
1. Nivelul imagine
- PSC (20 biţi): Picture Start Code;
- TR (5 biţi): Temporal Reference;
- PTYPE (6 biţi): CIF sau QCIF;
- dacă PEI = 1, PSPARE: biţi de rezervă;
2. Nivelul Grup de Blocuri (GOB)
- GBSC (16 biţi): GOB Start Code;
- GN (4 biţi): Group Number;
- GQUANT: Group Cuantizer, 1...31;
- dacă GEI = 1, GSPARE: biţi de rezervă;
3. Nivelul MacroBlocuri (MB)
- MBA: MB Address;
- MQUANT: MB Cuantizer, 1...31;
Laborator 5 51
- MVD: MV Data;
- CBP: Coded Block Pattern
4. Nivelul Blocuri
- TCOEFF: Coeficienţii transformatei;
În primul rând priviţi clipul video H.261. Lăsaţi secvenţa să ruleze până
la sfârşit. Vezi observa că:
Mişcarea este prea rapidă. Viteza de rulare este dependentă de viteza
procesorului, pe care lucraţi.
Apar artefacte nedorite în imagine (vezi Figura 5.11): Aceste zgomote
provocate de codare se observă când bărbatul din imagine îşi mişcă
mâna (începe aproximativ la cadrul 128 şi continuă până la cadrul 161,
iar artefactele se pot observa până la cadrul 203).
Pentru a putea vedea mai clar aceste artefacte, avansaţi cadru cu cadru
(CTRL+P).
54 Laborator 5
Artefacte
vizuale
Macrobloc
selectat cu
mouse-ul
Macrobloc
de culoare
verde
Numărul
macroblocului
(X Y)
Numărul
cadrului
Figura 5.14 Fereastra MB Tooltip
Laborator 5 57
Analiza grafică
Avansaţi în secvenţa video cadru cu cadru
Vezi vedea în background multe macroblocuri codate intra de culoare
verde şi galbenă. Aceste macroblocuri folosesc cei mai mulţi biţi pentru
codarea cadrului
Se pare că foarte mulţi biţi sunt folosiţi pentru background-ul static din
spatele bărbatului. Verificaţi acest lucru: opriţi secvenţa video şi selectaţi
„Graph / Enable” şi setaţi cele două opţiuni din Figura 5.15.
Selectaţi
opţiunile
Selectaţi fişierul de ieşire din “Graph / Export File…” (de exemplu ‘H261
example’)
Codorul H.261
Aplicaţia Codor H.261 reprezintă o implementare practică a
algoritmului H.261 descris de “Recomandarea H.261” versiunea 2 din martie
1993. El a fost realizat în mediul vizual Visual C++ pentru Windows 95, 98,
ME şi Xp folosind o implementare a standardului H.261 realizată de către
Standford University havefun.stanford.edu:pub/p64.
Prezentarea meniului
Meniul “Fişier” conţine doua opţiuni cu ajutorul cărora se poate alege
sursa video care urmează a fi comprimată. Se poate opta între codarea unui
fişier de tipul *.avi, *.qcif, *.cif existent pe disc (“Deschide fişierul sursă”)
sau codarea in timp real a unei surse video externe furnizată de o camera
video cu opţiunea ”Noua fereastră de captură”.
60 Laborator 5
Cel de-al doilea meniu, „Video” include trei opţiuni: Sursă, Format,
Opţiuni.
Prin selectarea opţiunii “Sursă” se poate alege sursa video externă:
camera video, tuner tv. Se poate seta din driverul sistemului de operare
Laborator 5 61
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.
LABORATOR 6
Standardul MPEG
Modul
intracadru
Bit
stream
DCT Q VLC
Video IN
Q 1
Modul
intercadru
IDCT
ME FM
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
Cadrul decodat
anterior
(24,4)
Cadrul curent
Cadrul decodat
viitor
(16,8)
(8,24)
Bloc
16x16
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.
Ec ( x, y) I c ( x, y) I r [( x, y) M rc ]
MIN
mM
( x , y )B
C[ I c ( x, y ) I r (( x, y ) m)]
A. B.
Laborator 6 69
C. D.
Figura 6.4.(A) Cadrul de la momentul N; (B) Cadrul de la momentul N-1
folosit la predicţia conţinutului cadrului de la momentul N (s-au figurat şi
vectorii de mişcare); (C) Eroarea de predicţie obţinută fără compensarea
mişcării (toţi vectorii de mişcare sunt presupuşi nuli); (D) Imaginea care
trebuie codată, obţinută prin folosirea compensării mişcării.
B) Interpolarea
Deşi codarea cu ajutorul predicţiei ne oferă o rată de compresie mai
bună decăt cea rezultată în urma unei compresii JPEG efectuată cadru cu
cadru, şi aceasta poate fi îmbunătăţită. Astfel MPEG permite codarea
cadrelor video folosind două cadre de referinţă. Unul este considerat în
cadrul precedent (aposteriori) iar celălat în cel viitor (apriori) faţă de cadrul
curent. Această abordare poartă denumirea si de interpolare bidirecţională şi
are ca efect o rată de compresie mai bună decât cea obţinută prin folosirea
unui singur cadru de referinţă.
Pentru a întelege de ce interpolarea bidirecţională poate îmbunatăţi
semnificativ rata de compresie considerăm o imagine care se mişcă în raport
cu cadrul imagine la o rată de 1/2 pixeli per cadru. Încercând determinarea
unui macrobloc în cadru actual bazându-ne pe cadrul imediat următor nu vom
putea găsi nici un bloc care să se potrivească. În mod similar vom obţine
acelaşi lucru procedând la fel şi în cazul următorului cadru. Totuşi o estimare
a celei mai bune potriviri dintre cadrul precedent şi cel viitor ne va determina
o predicţie exactă, astfel încât matricea de eroare va deveni nulă.
Figura 6.3 ilustrează tehnica folosită în interpolarea bidirecţională.
Cadrul curent considerat a fi cadrul B este procesat în funcţie de cele două
cadre de referinţă: cel precedent respectiv cel viitor. Fiecare macrobloc va
putea fi codat folosind un bloc din cadrul ulterior (vorbim în acest caz de
predicţie apriori), un bloc din cadrul anterior (predicţie aposteriori), sau câte
un bloc din fiecare cadru referinţă (mediere) rezultând matricea de eroare
minimă.
70 Laborator 6
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ă.
Predicţie apriori
1 2 3 4 5 6 7 8
TIMP
I B B P B P B I
Predicţie Bidireţională
Cerinţe principale:
Compatibilitate cu semnalul video întreţesut (ITU-R 601).
Codarea la calitate bună la rate cuprinse între 4 şi 9 Mbiţi/s.
Acces aleator la comutarea canalelor, căutare şi derulare FF/FR folosind
punctele de acces din grupurile de imagini.
Permite codarea crominanţei şi la formate de rezoluţie mai mare 4:2:2 şi
4:4:4.
Codarea scalabilă video pentru aplicaţii care au cerinţe diferite de calitate a
semnalului video.
Laborator 6 73
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ă.
a) b) c)
câmpul câmpul
par impar par impar
referinţă curent
Macrobloc cadru
Figura 6.9 Predicţia între câmpuri pentru imagini-cadru
referinţă curent
a) b)
Figura 6.12 a) Scanare zig-zag a coeficienţilor DCT inter; b) Scanare alternată
a coeficienţilor DCT intra
MPEG-1 audio:
Suportă rate de eşantionare de 32, 44.1 sau 48 kHz;
Acceptă surse cu unul sau două canale audio;
Rate de bit acceptate: 32 – 224 kbiti/s pentru un canal;
Permite introducerea unui cod corector de erori (CRC);
Permite introducerea altor date decât cele audio in fluxul rezultant;
Oferă o alegere intre 3 niveluri de compresie (numite layere), pentru a
oferi posibilitatea de compromisuri între calitatea audio si
complexitatea codec-ului:
- Layer I: este cel mai simplu şi este potrivit pentru rate de peste
128 kbps pentru un canal.
- Layer II: este de complexitate medie şi este destinat codării la rate
in jurul a 128 kbps pentru un canal. Este folosit in standardele
Digital Audio Broadcasting (DAB), CD-Interactive (CD-I) si Video-
CD.
- Layer III: este cel mai complex, dar oferă cea mai bună calitate
pentru rate de 64 kbps pentru un canal. Este potrivit pentru
transmisie prin ISDN, pentru arhive de muzica (format mp3), etc.
MPEG-2 audio:
Este o extensie a standardului MPEG-1 audio pentru rate de eşantionare
scăzute: 16, 22.5, 24 kHz, oferind o calitate mai bună pentru rate de bit
sub 64 kbps mono.
78 Laborator 6
MPEG-4 audio:
Destinat pentru o gamă largă de aplicaţii audio:
- Compresia semnalului vocal: rate de 2-24 kbps, folosind metodele
HVXC (Harmonic Vector eXcitation Coding), si CELP (Code
Excited Linear Prediction);
- Citirea textului dintr-un document (text-to-speech interface);
- Compresia semnalului audio de înaltă fidelitate;
- Sunet sintetic (muzică sintetizată gen MIDI);
- Mixarea acestor tipuri diferite de semnal audio într-o singură
coloană sonoră;
- Scalabilitatea fluxului de date audio: transmiterea cu rată variabilă
în funcţie de lărgimea de bandă a canalului folosit, prin degradarea
calităţii audio;
Tabelul 6.1
Nr. bandă Frecvenţa (Hz) Nr. bandă Frecvenţa (Hz)
0 50 14 1.970
1 95 15 2.340
2 140 16 2.720
3 235 17 3.280
4 330 18 3.840
5 420 19 4.690
6 560 20 5.440
7 660 21 6.375
8 800 22 7.690
9 940 23 9.375
10 1.125 24 11.625
11 1.265 25 15.375
12 1.500 26 20.250
13 1.735
(frecvenţele reprezinta limita superioară a benzii)
Semnalul puternic
Amplitudine
Frecvenţa
Figura 6.13 Mascarea auditivă
Nivelul
zgomotului de
cuantizare
Banda critică
Date audio
digitale
Cuantizor si Formatare flux Date comprimate
(PCM) Bancul de filtre
codor de biţi
Date auxiliare
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.
6.6 Exerciţii
BIBLIOGRAFIE