45
Transmisia datelor multimedia in retele de calculatoare MPEG Conf. Dr. Ing. Costin-Anton Boiangiu <[email protected]> UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE

Transmisia datelor multimedia in retele de calculatoare MPEG

  • Upload
    stefan

  • View
    52

  • Download
    1

Embed Size (px)

DESCRIPTION

UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE. Transmisia datelor multimedia in retele de calculatoare MPEG. Conf. Dr. Ing . Costin-Anton Boiangiu < [email protected] >. Cuprins. Compresia prin cuantizarea vectoriala Elemenete de baza in standardul MPEG - PowerPoint PPT Presentation

Citation preview

Transmisia datelor multimedia in retele de calculatoare MPEG

Transmisia datelor multimedia in retele de calculatoareMPEGConf. Dr. Ing. Costin-Anton Boiangiu

UNIVERSITY POLITEHNICA of BUCHARESTDEPARTMENT OF COMPUTER SCIENCECuprinsCompresia prin cuantizarea vectoriala Elemenete de baza in standardul MPEGDescrierea standardului de compresie MPEG-1

Compresia prin cuantizarea vectoriala (VQ=vector quantization)Cuantizarea vectoriala este generalizarea cuantizarii scalare la cunatizarea unui vectorSaltul de la o dimensiune la mai multe dimensiuni atrage noi concepte, tehnici si aplicatiiIn majoritatea cazurilor intrarea este sub forma numerica iar iesirea este o forma comprimata.

Compresia prin cuantizarea vectorialaIn 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 vectorDeci, imaginea digitala este mai intai prelucrata pentru furnizarea unui set de vectoriApoi, se genereaza un set al vectorilor reprezentativi, asa numitul codebook.Compresia se obtine prin inlocuirea vectorului reprezentativ cu un indexAcest index este adresa unui tabel ce contine vectorii reprezentativiRezulta ca fiecare vector este codat cu doua piese de informatie distincte: indexul cuvantul de cod corespunzatorModifcarea 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 vectorialaCuantizarea 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 individualiDeci, o multime de pixeli cu aceleasi proprietati statistice (valori apropiate ale stralucirii) sunt inlocuiti cu un singur element de imagine, in imaginea comprimataCuantizarea vectoriala se utilizeaza in multe aplicatii de compresie audio si video, in recunoasterea vorbirii

Compresia prin cuantizarea vectorialaO 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 vectoriUn 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 codMultimea cuvintelor de cod se numeste dictionar (codebook)Compresia prin cuantizarea vectorialaFiecare 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

ExempluAsociat cu fiecare regiune (sau cluster) se gaseste un cuvant de codFiecare regiune are un singur cuvant de codAceste regiuni sunt separate prin linii imaginare, trasate cu linie continuaPentru 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 vectorialaCuvantul de cod reprezentativ este determinat de cea mai mica distanta Euclidiana de vectorul de intrare Distanta Eucliadiana definita prin:

Algoritm de cuantizare vectorialaBeginOperatii 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 blocLa 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/cunoscutPe canal se trimite indexul acelui cuvant de codLa de-compresie/decodare, se inlocuieste indexul cu cuvantul de cod corespunzatorOperatia 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 regiuneSchema blocDesi, cuantizarea vectoriala ofera aceeasi rata a distorsiunii ca si cuantizarea scalara sau PCM, metoda nu are o raspandire foarte larga in aplicatiile comercialeSunt doua motive: primul se refera la timpul necesar generarii cuvintelor de codal doilea, se refera la viteza de cautare a acestora in multimea cuvintelor de codCea 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 costisitoareExempluSe considera imaginea cameraman, prezentata in figura de mai jos

ExempluPrin 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

ExempluVectorii de cod pentru diferite valorii ale distorsiunii patratice medii, ca procente din energia celulei de baza

Exemplu

ExempluRaportul de compresie este

unde nc este numarul de coloanenl este numarul de liniin_bit_per_pixel este numarul de biti pentru reprezentarea intensitatii unui pixeln_coef este numarul de coeficienti considerati in transformare n_bit_per_coef este numarul de simboluri binare pentru reprezentarea unui coeficient

ExempluSe considera imaginea initiala cameraman.tif de dimensiune 256*256*8 biti (imagine gri)Celula de baza are dimensiuea de 4x4Se considerara un numar diferit de vectori de baza in cadrul dictionarului, de 11.944, 9.764 si 8200

Exemplu

Evolutia standardului MPEG MPEG-1 (1991) (ISP/IEC 11172)debit de informatie pana la 1.5 Mbpsformatul de imagine tipic CIF (Common Interface Format)frecventa cadrelor 24 30 fpsAplicatiile 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 MbpsHDTV la 20 Mbps;MPEG-4 (1999) (ISP/IEC 14496)Codare bazata pe obiecteDescriere sumara a standardelor folosite in compresia video

Elementele de baza ale algoritmilor de compresie MPEGSecventele video contin o redundanta mare, atat statistica cat si subiectiva, atat in interiroul fiecarui cadru cat si intre cadreScopul 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 folositaPentru tehnicile de compresie un rol important il are disponibilitatea unei tehnologiii VLSI pentru implementarea algoritmilor de compresieElementele de baza ale algoritmilor de compresie MPEGTehnicile de codare a surselor video pot fi cu si fara pierdere de informatieScopul 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 originaleIn 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 transmisieCriteriile de optimizare folosite la compresie au doua componente: una obiectiva, care se refera la masura informationalaUna subiectiva, care se refera la perceptia aparatului vizual al omuluiSub-esantionare si interpolareAproape toate tehnicile de codare video utilizeaza intensiv sub-esantionarea (numita si decimare) si cuantizarea inainte de codareConceptul 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 codariiLa destinatar, imaginile decodate sunt interpolate pentru afisareAceasta 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 cadreEste 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 videoAsta 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 pixelilorPentru fiecare bloc in cadrul actual, N, se estimeaza un vector si care va fi codatVectorul de miscare este indreptat inspre un bloc de referinta de aceeasi marime ca cel din cadrul anterior, N-1Se calculeaza o eroare a estimarii miscarii, prin scaderea miscarii estimate pentru fiecare pixel al blocului DPCM = Differential Pulse Code Modulation

ExempluFie un bloc de marime 8x8 pixeliFiecare 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 parametriDe asemenea coordinatele centrului de greutate al noului bloc, deci (xnew, ynew)Pentru exprimarea celor doi parametri este nevoie de 2 octetiCompresia calculata la acest nivel este (8 * 8) / ( 2 * 8) = 4Principiul compensarii miscarii

ExempluIn mod uzual, numai eroarea de predictie si vectorii de miscare se transmit receptoruluiIn plus se presupune ca un vector miscare este reprezentativ pentru un bloc de pixeli adiacentiIn 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 transmisIntreteserea coeficientilor transformateiModuri de scanare a coeficientilor DCT in vederea folosirii corelatiilor intre celule alaturate

Elementele de baza ale algoritmilor de compresie MPEGTehnica 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 telecomunicatiiPentru a suporta un numar cat mai mare de aplicatii, sunt disponibili o serie de parametri de intrare cum sunt: marimea de intrare a imaginii flexibilafrecventa cadrelor variabilaAcestea pot fi specificate de utilizator. Elementele de baza ale algoritmilor de compresie MPEGMPEG recomanda un set de parametri de tip constrangeri in ceea ce priveste partea de decodareFiecare decodor trebuie sa suporte cel putin parametrii unei surse video pana la dimensiunea unei imagini TV, incluzand: un numar minim de 720 pixeli pe linieun numar minim de 576 linii pe imagineo rata minima a cadrelor de 30 cadre/secundao rata minima de bit de 1.86 Mbiti/secunda

Schema de codare inter-cadruTehnica de compresie MPEG-1,2 este bazata pe structura macro-bloc, compensarea miscarii, si de inlocuirea conditionata a macro-blocurilorMPEG 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 PCadrele sunt prelucrate pe baza unei secvente video bazata pe blocSchema de codare inter-cadruFiecare cadru color dintr-o secventa video este impartita in macro-blocuriFiecare macro-bloc contine blocuri de date din benzile de luminanta si crominanta patru blocuri de luminanta Y1, Y2, Y3 si Y4doua 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 videoCadrele 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)

ConcluziiExista trei moduri de codare a unui cadru: I, B si PImaginea 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 consideratUtilitatea acetui tip se refera la asigurarea accesibilitatii aleatoare in mediile de stocare ale imaginilor:Tipul P nu permite accesarea oricarui cadruTipul I permite accesul la orice cadruTipul B permite accesul la cadre din doi in doiConcluziiCadrele I sunt codificate ca imagini statice, utilizand metoda DCTCadrele P se obtin printr-un algoritm de predictie din cel mai recent cadru I sau PCadrele 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 secventialaInlocuirea conditionataO 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 anteriorPunctul cheie in obtinerea unei codari eficiente la rate de bit mici consta in selectia corecta a modurilor de predictieInlocuirea conditionataStandardul MPEG distinge trei moduri de codare a macro-blocurilor:MB ne-considerat/sarit = predictia din cadrul anterior cu vector de miscare zeroNu se codeaza si nu se transmite informatie despre macro-blocMB inter-cadru: se utilizeaza predictia miscarii din cadrul anteriorSe transmit: tipul de MB, adresa MB si, daca este necesar, vectorul de miscare, coeficientii DCT si pasul de cuantizareMB intra-cadru: nu se utilizeaza predictia din cadrele anterioareSe foloseste numai predictia in interiorul cadrului, deci intr-cadruSe transmit: tipul MB, adresa MB, coeficientii DCT si pasul de cuantizareDiagrama bloc de baza a codorului/decodorului hibrid DCT/DPCMDCT=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/DPCMPrimul cadru dintr-o secventa video este codat in mod INTRA fara sa se considere cadrele anterioare sau superioareLa 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 uniformPasul de cuantizare, q, utilizat pentru cuantizarea coeficientilor DCT dintr-un macro-bloc se transmite de asemenea receptoruluiDupa 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/DPCMDecodorul 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 blocPentru reconstructie se foloseste inversa transformatei cosinus discreteLa decodare, pixelilor cu miscarea compensata de la cadrul anterior, (N-1), continuti in FS sunt adunati cu eroarea de predictie pentru a reface cadrul NDiagrama bloc de baza a codorului/decodorului hibrid DCT/DPCMPentru 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 decodorCompensarea 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 receptoruluiSe aplica apoi o transformare DCT pe un bloc de 8x8 pentru fiecare bloc continut in macro-bloc urmat de cuantizarea (Q) coeficientilor DCTEste necesar un buffer video pentru a asigura o rata de informatie constanta la iesirea codoruluiPasul 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 bufferului44ConcluziiCadrele I sunt codificate ca imagini statice, utilizand metoda DCTCadrele P se obtin printr-un algoritm de predictie din cel mai recent cadru I sau PCadrele 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