460 likes | 638 Views
UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE. Transmisia datelor multimedia in retele de calculatoare MPEG. Conf. Dr. Ing . Costin-Anton Boiangiu < Costin.Boiangiu@CS.PUB.RO >. Cuprins. Compresia prin cuantizarea vectoriala Elemenete de baza in standardul MPEG
E N D
UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE Transmisiadatelor multimedia in retele de calculatoareMPEG Conf. Dr. Ing. Costin-Anton Boiangiu <Costin.Boiangiu@CS.PUB.RO>
Cuprins • 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 cuvintelor de cod se numeste dictionar (codebook)
Compresia prin cuantizarea vectoriala • Fiecare cuvant de cod are asociat un domeniu in spatiul k-dimensional, denumit domeniu Voronoi, dupa regula: • Domeniile (regiunile) Voronoi impart spatiul Rk astfel incat: si
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:
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 • 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 • Raportul de compresie este 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
Evolutiastandardului MPEG • MPEG-1 (1991) (ISP/IEC 11172) • debit de informatie pana la 1.5 Mbps • formatul de imagine tipic CIF (Common Interface Format) • frecventacadrelor 24 … 30 fps • Aplicatiileprincipale: staocareainformatiei video pentru multimedia (CD-ROM); • MPEG-2 (1994) (ISP/IEC 13818) • Extensiepentrumetodele cu intretesere, optimizatpentrurezolutia TV • Calitateaimaginiisimilaracu NTSC, PAL, SECAM la 4-8 Mbps • HDTV la 20 Mbps; • MPEG-4 (1999) (ISP/IEC 14496) • Codarebazatapeobiecte
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 • Unasubiectiva, 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
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 DCTin 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 inter-cadru (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 (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 macro-bloc, 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 suntcodificate ca imagini statice, utilizandmetoda DCT • Cadrele P se obtinprintr-un algoritm de predictiedincel mai recentcadru I sau P • Cadrele B suntprezisedincele mai apropiatedoua cadre I sau P (anteriorul si urmatorul) • O secventatipica de cadre arputea fi: "IBBPBBPBBPBBIBB...« • Dincauza ca pentru a decodifica un cadru B se cercadrele I sau P anterioare si ulterioareacestuia, cadrele nu sunt transmise in ordinesecventiala
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 suntcodificate ca imagini statice, utilizandmetoda DCT • Cadrele P se obtinprintr-un algoritm de predictiedincel mai recentcadru I sau P • Cadrele B suntprezisedincele mai apropiatedoua cadre I sau P (anteriorul si urmatorul) • O secventatipica de cadre arputea fi: "IBBPBBPBBPBBIBB...« • Dincauza ca pentru a decodifica un cadru B se cercadrele I sau P anterioare si ulterioareacestuia, cadrele nu sunt transmise in ordinesecventiala