Standardul MPEG
Download
Report
Transcript Standardul MPEG
UNIVERSITY POLITEHNICA of BUCHAREST
DEPARTMENT OF COMPUTER SCIENCE
Conf. Dr. Ing. Costin-Anton Boiangiu
<[email protected]>
Cuprins
1.
2.
3.
Compresia prin cuantizarea vectoriala
Elemenete de baza in standardul MPEG
Descrierea standardului de compresie MPEG-1
Compresia prin cuantizarea vectoriala
(VQ=vector quantization)
Cuantizarea vectoriala este generalizarea cuantizarii
scalare la cunatizarea unui vector
Saltul de la o dimensiune la mai multe dimensiuni atrage noi
concepte, tehnici si aplicatii
In majoritatea cazurilor intrarea este sub forma numerica iar
iesirea este o forma comprimata.
Compresia prin cuantizarea
vectoriala
In contrast cu cuantizarea scalara, VQ aplica cuantizarea nu la nivel
de esantion ci la nivel de grup de esantioane pentru a forma un vector
si apoi cuantizeaza acel vector
Deci, imaginea digitala este mai intai prelucrata pentru furnizarea unui
set de vectori
Apoi, se genereaza un set al vectorilor reprezentativi, asa numitul
codebook.
Compresia se obtine prin inlocuirea vectorului reprezentativ cu un index
Acest index este adresa unui tabel ce contine vectorii reprezentativi
Rezulta ca fiecare vector este codat cu doua piese de informatie
distincte:
indexul
cuvantul de cod corespunzator
Modifcarea dictionarului in timpul codarii si/sau a cuvintelor de cod din
cadrul tabelului (vectorii reprezentativi) determina obtinerea unor
variante adaptive ale cunatizarii vectoriale
Compresia prin cuantizarea
vectoriala
Cuantizarea vectoriala este o metoda de compresie cu
pierdere de informatie, care se opreste asupra unei multimi
de pixeli, in loc sa se uite la pixelii individuali
Deci, o multime de pixeli cu aceleasi proprietati statistice
(valori apropiate ale stralucirii) sunt inlocuiti cu un singur
element de imagine, in imaginea comprimata
Cuantizarea vectoriala se utilizeaza in multe aplicatii de
compresie audio si video, in recunoasterea vorbirii
Compresia prin cuantizarea
vectoriala
O cale naturala de a aplica tehnica VQ la imagini este:
descompunerea
imaginii
numerice
in
blocuri
dreptunghiulare/patrate de dimensiune fixata
apoi sa se utilizeze aceste blocuri ca sub forma de vectori
Un cuantizor vectorial transforma spatiul vectorial Rk al
vectorilor k-dimensionali intr-o multime finita de vectori
Y={ yj, = 1,2,...,N}
Fiecare vector yj se numeste vector cod
Multimea
(codebook)
cuvintelor
de
cod
se
numeste
dictionar
Compresia prin cuantizarea
vectoriala
Fiecare cuvant de cod are asociat un domeniu in spatiul k-
dimensional, denumit domeniu Voronoi, dupa regula:
Vi x R
k
: x yi x y j ,
j i
Domeniile (regiunile) Voronoi impart spatiul Rk astfel incat:
N
Vi
R
k
i 1
si
N
Vi
i 1
,
i j
Exemplu
Asociat cu fiecare regiune
(sau cluster) se gaseste un
cuvant de cod
Fiecare regiune are un singur
cuvant de cod
Aceste regiuni sunt separate
prin linii imaginare, trasate
cu linie continua
Pentru un vector de intrare,
cuvantul de cod ce este ales
este acela din care face parte
vectorul de intrare.
Cuvinte de cod in spatiul bidimensional.
Vectorii de intrare sunt marcati cu „x”, cuvintele de cod sunt
reprezentate prin cercuri, iar regiunile Voronoi sunt separate
prin linii
Compresia prin cuantizarea
vectoriala
Cuvantul de cod reprezentativ este determinat de cea mai
mica distanta Euclidiana de vectorul de intrare
Distanta Eucliadiana definita prin:
2
k
d ( x ,y i )
x j
j 1
y ij
Algoritm de cuantizare vectoriala
Begin
Operatii off-line:
#1: Stabileste dim. vectorului (domeniului) functie de
eroarea acceptata
#2: Defineste setul de vectori de cod (imagini)
Operatii on-line:
#1: Prezinta imaginea de comprimat
#2: Imparte in blocuri (vectori) de acceasi dimensiune cu
vectorii de cod
#3: PENTRU fiecare bloc al imaginii EXECUTA
#3.1: Cauta cel mai aproape vectorului de cod
#3.2: Codeaza si transmite indicele vectorului de cod.
End
Schema bloc
Schema bloc
La codare se calculeaza indicele cuvantului de cod ce
ofera distanta cea mai mica fata de vectorul de intrare
Criteriul folosit este cel de distorsiune minima, bazat pe
distanta Euclidiana dintre vectorul de intrare si fiecare
cuvant de cod memorat/cunoscut
Pe canal se trimite indexul acelui cuvant de cod
La de-compresie/decodare, se inlocuieste indexul cu
cuvantul de cod corespunzator
Operatia cea mai dificila este proiectarea cuvintelor de
cod, deci de a stabili numarul de cuvinte de cod si modul
de calcul al cuvintelor de cod pentru fiecare regiune
Schema bloc
Desi, cuantizarea vectoriala ofera aceeasi rata a distorsiunii ca
si cuantizarea scalara sau PCM, metoda nu are o raspandire
foarte larga in aplicatiile comerciale
Sunt doua motive:
primul se refera la timpul necesar generarii cuvintelor de cod
al doilea, se refera la viteza de cautare a acestora in multimea
cuvintelor de cod
Cea mai simpla metoda de cautare, aceea a cautarii totale, un
vector de intrare este comparat cu toti vectorii cod (full search
method)
Numarul de operatii fiind foarte mare, metoda cautarii totale
este costisitoare
Exemplu
Se considera imaginea „cameraman”, prezentata in figura
de mai jos
Exemplu
Prin impunerea unei erorii patratice medii mai mici decat
un anumit procent din energia celulei de baza (ce defineste
cuvintele de cod reprezentativi) se obtin rezultatele :
Dependenta numarului de vectori din dictionar functie de
eroarea impusa
Exemplu
Vectorii de cod pentru diferite valorii ale distorsiunii
patratice medii, ca procente din energia celulei de baza
Exemplu
Exemplu
Raportul de compresie este
RC
nc nl n _ bit _ per _ pixel
n _ coef n _ bit _ per _ index
nc nl n _ bit _ per _ pixel
n _ coef log 2 ( n _ coef )
unde
nc este numarul de coloane
nl este numarul de linii
n_bit_per_pixel este numarul de biti pentru reprezentarea
intensitatii unui pixel
n_coef este numarul de coeficienti considerati in
transformare
n_bit_per_coef este numarul de simboluri binare pentru
reprezentarea unui coeficient
Exemplu
Se considera imaginea initiala „cameraman.tif” de
dimensiune 256*256*8 biti (imagine gri)
Celula de baza are dimensiuea de 4x4
Se considerara un numar diferit de vectori de baza in
cadrul dictionarului, de 11.944, 9.764 si 8200
Exemplu
RC
256 256 8
256 256 8
3 . 65
11944 log 2 (11944 )
11944 14
RC
256 256 8
256 256 8
4 . 03
9764 log 2 ( 9764 )
9764 14
RC
256 256 8
256 256 8
4 . 56
8200 log 2 ( 8200 )
8200 14
Evolutia standardului MPEG
MPEG-1 (1991) (ISP/IEC 11172)
debit de informatie pana la 1.5 Mbps
formatul de imagine tipic CIF (Common Interface Format)
frecventa cadrelor 24 … 30 fps
Aplicatiile principale: staocarea informatiei video pentru multimedia
(CD-ROM);
MPEG-2 (1994) (ISP/IEC 13818)
Extensie pentru metodele cu intretesere, optimizat pentru rezolutia TV
Calitatea imaginii similara cu NTSC, PAL, SECAM la 4-8 Mbps
HDTV la 20 Mbps;
MPEG-4 (1999) (ISP/IEC 14496)
Codare bazata pe obiecte
Descriere sumara a standardelor
folosite in compresia video
Elementele de baza ale algoritmilor
de compresie MPEG
Secventele video contin o redundanta mare, atat statistica cat si
subiectiva, atat in interiroul fiecarui cadru cat si intre cadre
Scopul codarii surselor video este reducerea ratei de informatie (a
ratei de bit) pentru stocare si transmisie, prin exploatarea
redundantelor statistice si subiective si de a codifica informatia de
imagine folosind tehnici entropice (bazate pe entropie)
Raportul de compresie depinde de redundanta continuta in
mesaj, precum si de tehnica de compresie folosita
Pentru
tehnicile de compresie un rol important il are
disponibilitatea unei tehnologiii VLSI pentru implementarea
algoritmilor de compresie
Elementele de baza ale algoritmilor
de compresie MPEG
Tehnicile de codare a surselor video pot fi cu si fara pierdere de
informatie
Scopul codarii fara pierdere de informatie este de a reduce
marimea imaginii pentru stocare si/sau transmisie cu mentinerea
calitatii imaginii originale, astfel incat calitatea imaginii decodate
sa fie egala cu calitatea imaginii originale
In contrast, tehnicile de codare cu pierdere de informatie,
(MPEG-1, MPEG-2 si MPEG-4) au scopul de a a obtine o
anumita rata de informatie pentru stocare si/sau transmisie
Criteriile de optimizare folosite la compresie au doua
componente:
una obiectiva, care se refera la masura informationala
Una subiectiva, care se refera la perceptia aparatului vizual al
omului
Sub-esantionare si interpolare
Aproape toate tehnicile de codare video utilizeaza intensiv sub-esantionarea
(numita si decimare) si cuantizarea inainte de codare
Conceptul de baza al decimarii este reducerea dimensiunii semnalului de
intrare video (semnal bi-dimensional, pe orizontala si pe verticala) si a
numarului de cadre, inainte de inceperea codarii
La destinatar, imaginile decodate sunt interpolate pentru afisare
Aceasta tehnica poate fi considerata ca fiind una din cele mai elementare
tehnici, care utilizeaza – de asemenea – caracteristicile fiziologice ale
ochiului uman, si astfel se reduce redundanta subiectiva continuta in
semnalul video, in sensul ca ochiul uman este mai sensibil la schimbarile de
stralucire decat in schimbarile de cromatica (culoare)
De aceea, tehncile de codare MPEG, mai intai impart imaginile in
componente YUV (o luminanta si doua componente de crominanta)
Apoi, componentele de crominanta sunt esantionate relativ la componenta
de luminanta cu un Y:U:V raport specific aplicatii particulare (de exemplu,
in MPEG se utilizeaza un raport de 4:1:1 sau 4:2:2)
Compensarea miscarii prin predictie
(Motion-Compensed Predcition)
Compensarea miscarii este o tehnica pentru reducerea redundantei
temporale intre cadre
Este utilizata intensiv in MPEG-1 si MPEG-2 ca tehnica de predictie
temporala in codarea DPC
Conceptul de compensare a miscarii este bazat pe estimarea miscarii
intre doua cadre video
Asta inseamna ca daca toate elementele unei scene video sunt distribuite
spatial, miscarea dintre cadre poate fi descrisa printr-un numar limitat de
parametri, adica vectori de miscare pentru translatia pixelilor
Pentru fiecare bloc in cadrul actual, N, se estimeaza un vector si care
va fi codat
Vectorul de miscare este indreptat inspre un bloc de referinta de aceeasi
marime ca cel din cadrul anterior, N-1
Se calculeaza o eroare a estimarii miscarii, prin scaderea miscarii
estimate pentru fiecare pixel al blocului DPCM = Differential Pulse
Code Modulation
Exemplu
Fie un bloc de marime 8x8 pixeli
Fiecare pixel este codat pe 8 biti (nivel de gri)
Vectorul de miscare poate fi codat
in coordonate polare, prin doi parametri (lungime si unghi)
in coordonate carteziene prin doi parametri
De asemenea – coordinatele centrului de greutate al noului
bloc, deci (xnew, ynew)
Pentru exprimarea celor doi parametri este nevoie de 2 octeti
Compresia calculata la acest nivel este (8 * 8) / ( 2 * 8) = 4
Principiul compensarii miscarii
Exemplu
In mod uzual, numai eroarea de predictie si vectorii de
miscare se transmit receptorului
In plus se presupune ca un vector miscare este
reprezentativ pentru un „bloc” de pixeli adiacenti
In acest sens, imaginile sunt separate in blocuri disjuncte
de cate 16x16 pixeli (MPEG-1si 2) si se estimeaza numai
un singur vector, care este apoi codat si transmis
Intreteserea coeficientilor
transformatei
Moduri de scanare a coeficientilor DCT in vederea
folosirii corelatiilor intre celule alaturate
Elementele de baza ale algoritmilor
de compresie MPEG
Tehnica de compresie – video implementata in MPEG-1
acopera multe aplicatii, de la sistemele interactive din
CD_ROM la tehnicile de transmisie a informatiei video in
retele de telecomunicatii
Pentru a suporta un numar cat mai mare de aplicatii, sunt
disponibili o serie de parametri de intrare cum sunt:
marimea de intrare a imaginii flexibila
frecventa cadrelor variabila
Acestea pot fi specificate de utilizator.
Elementele de baza ale algoritmilor
de compresie MPEG
MPEG recomanda un set de parametri de tip constrangeri
in ceea ce priveste partea de decodare
Fiecare decodor trebuie sa suporte cel putin parametrii
unei surse video pana la dimensiunea unei imagini TV,
incluzand:
un numar minim de 720 pixeli pe linie
un numar minim de 576 linii pe imagine
o rata minima a cadrelor de 30 cadre/secunda
o rata minima de bit de 1.86 Mbiti/secunda
Schema de codare inter-cadru
Tehnica de compresie MPEG-1,2 este bazata pe structura
macro-bloc, compensarea miscarii, si de inlocuirea
conditionata a macro-blocurilor
MPEG codeaza primul cadru dintr-o secventa cadru in
modul intra-cadru (I)
Fiecare cadru care urmeaza este codat prin predictie intercadru (modul sau cadre P)
Pentru predictie se folosesc datele (informatia) numai din
cadrul anterior, fie I , fie P
Cadrele sunt prelucrate pe baza unei secvente video bazata
pe bloc
Schema de codare inter-cadru
Fiecare cadru color dintr-o secventa video este impartita in
„macro-blocuri”
Fiecare macro-bloc contine blocuri de date din benzile de
luminanta si crominanta
patru blocuri de luminanta Y1, Y2, Y3 si Y4
doua blocuri de crominanta, U, V (fiecare din acestea are 8x8
pixeli)
In acest fel, rata de esantionare intre Y:U:V luminanta si
crominanta este 4:1:1
Schema de codare inter-cadru
Schema de codare inter-cadru
(a) - Ilustrarea cadrelor I
si P intr-o secventa video
Cadrele P sunt codate
folosind
compensarea
miscarii prin predictie
bazata pe cadrul anterior.
Fiecare
cadru
este
divizat in macro-blocuri.
(b) – In fiecare macrobloc, informatia codata se
refera la 4 blocuri de
luminanta (Y1, Y2, Y3 si
Y4) si doua blocuri de
crominanta (U, V)
Concluzii
Exista trei moduri de codare a unui cadru: I, B si P
Imaginea de tip B provine de la (bidirectional predicted /
Bidirectional interpolated pictures)
Acestea se prelucreaza cu referire atat la cadrul anterior cat
si la cadrul urmator celui considerat
Utilitatea acetui tip se refera la asigurarea accesibilitatii
aleatoare in mediile de stocare ale imaginilor:
Tipul P nu permite accesarea oricarui cadru
Tipul I permite accesul la orice cadru
Tipul B permite accesul la cadre din doi in doi
Concluzii
Cadrele I sunt codificate ca imagini statice, utilizand metoda DCT
Cadrele P se obtin printr-un algoritm de predictie din cel mai
recent cadru I sau P
Cadrele B sunt prezise din cele mai apropiate doua cadre I sau P
(anteriorul si urmatorul)
O
secventa
tipica
de
"IBBPBBPBBPBBIBB...«
cadre
ar
putea
fi:
Din cauza ca pentru a decodifica un cadru B se cer cadrele I sau P
anterioare si ulterioare acestuia, cadrele nu sunt transmise in
ordine secventiala
Inlocuirea conditionata
O trasatura esentiala suportata de algoritmul de codare
MPEG-1 este posibilittaea de a actualiza informatia
macro-bloc la decodare numai daca este necesar, adica
daca continutul macro-blocului a fost schimbat in
comparatie cu continutul aceluaiasi macro-bloc din cadrul
anterior
Punctul cheie in obtinerea unei codari eficiente la rate de
bit mici consta in selectia corecta a modurilor de predictie
Inlocuirea conditionata
Standardul MPEG distinge trei moduri de codare a macro-
blocurilor:
MB ne-considerat/sarit = predictia din cadrul anterior cu vector
de miscare zero
Nu se codeaza si nu se transmite informatie despre macro-bloc
MB inter-cadru: se utilizeaza predictia miscarii din cadrul anterior
Se transmit: tipul de MB, adresa MB si, daca este necesar, vectorul de
miscare, coeficientii DCT si pasul de cuantizare
MB intra-cadru: nu se utilizeaza predictia din cadrele anterioare
Se foloseste numai predictia in interiorul cadrului, deci intr-cadru
Se transmit: tipul MB, adresa MB, coeficientii DCT si pasul de cuantizare
Diagrama bloc de baza a codorului/decodorului
hibrid DCT/DPCM
DCT=transformata cosinus discreta; Q=quantizare; Q*= refacere (DAC);
VLC=codare cu lungime variabila; VB=buffer variabil; FS =stocare cadre; MC = compensarea miscarii
Diagrama bloc de baza a codorului/decodorului
hibrid DCT/DPCM
Primul cadru dintr-o secventa video este codat in mod INTRA fara sa se
considere cadrele anterioare sau superioare
La nivelul codorului, fiecarui bloc de luminanta si crominanta de 8x8 i se
aplica o transformare DCT, fiecare din cei 64 coeficienti DCT fiind
cuantizati in mod uniform
Pasul de cuantizare, q, utilizat pentru cuantizarea coeficientilor DCT dintr-
un macro-bloc se transmite – de asemenea – receptorului
Dupa cuantizare, coeficientul DCT cu indicele cel mai mic (componeneta
medie) este tratat diferit de restul ceficientilor (ce reprezinta componenta
alternativa)
Fiecare componenta DC reprezinta intensitatea medie a blocului si se
codeaza utilizand o metoda de predictie diferenatiala (intrucat exista o
corelatie mare intre componentele continue de la un bloc la altul)
Valorile cuantizate diferite de zero ale coeficientilor ramasi, impreuna cu
locatiile lor, sunt scanate in „zig-zag” si sunt codate folosind algoritmi de
codare entropica (VLC = variable length code)
Diagrama bloc de baza a codorului/decodorului
hibrid DCT/DPCM
Decodorul realizeaza operatia inversa, mai intai extragand
si decodand coeficientii transformarii (VLD = Variable
length decoding) din secventa de simboluri receptionata,
pentru a obtine locatia si valorile cuantizate ale
coeficientilor ne-nuli pentru fiecare bloc
Pentru reconstructie se foloseste inversa transformatei
cosinus discrete
La decodare, pixelilor cu miscarea compensata de la
cadrul anterior, (N-1), continuti in FS sunt adunati cu
eroarea de predictie pentru a reface cadrul N
Diagrama bloc de baza a codorului/decodorului
hibrid DCT/DPCM
Pentru codarea cadrelor de tip P, cadrul anterior de tip I sau P este
stocat intr-un memorator de cadre (FS=frame store) atat in codor cat
si in decodor
Compensarea miscarii este efectuata pe o baza macro-bloc – astfel
incat se estimeaza numai vectorul de miscare dintre cadrele N si N-1,
pentru fiecare macro-bloc considerat.
Vectorii de miscare sunt codati si transmisi receptorului
Se aplica apoi o transformare DCT pe un bloc de 8x8 pentru fiecare
bloc continut in macro-bloc urmat de cuantizarea (Q) coeficientilor
DCT
Este necesar un buffer video pentru a asigura o rata de informatie
constanta la iesirea codorului
Pasul de cuantizare este ajustat pentru fiecare macro-bloc dintr-un
cadru pentru a obtine o rata de bit impusa si pentru a evita supra sau
sub – incarcarea bufferului
Concluzii
Cadrele I sunt codificate ca imagini statice, utilizand metoda DCT
Cadrele P se obtin printr-un algoritm de predictie din cel mai recent
cadru I sau P
Cadrele B sunt prezise din cele mai apropiate doua cadre I sau P
(anteriorul si urmatorul)
O secventa tipica de cadre ar putea fi:
"IBBPBBPBBPBBIBB...«
Din cauza ca pentru a decodifica un cadru B se cer cadrele I sau P
anterioare si ulterioare acestuia, cadrele nu sunt transmise in ordine
secventiala