4. CODAREA SEMNALELOR VIDEO 4.1. Semnale video - concepte de bază Proprietăţile sistemelor video se bazează pe proprietăţile de percepţie ale ochiului. Cel mai mic detaliu ce poate fi reprodus într-o imagine este pixelul. Ideal, fiecare detaliu este redat de un pixel. Dar unele detalii se pierd prin efect Kell. Privite de la distanţă, două linii apropiate din imagine sunt percepute ca o singură linie. Imaginea în care pixelii sunt succesiv alb sau negru, conţine cele mai multe detalii (are frecvenţa maximă spaţială): Rata cadrelor: film 24 cadre/s TV (prin împărţirea cadrelor în două câmpuri): NTSC 30 cadre (29,97cadre) PAL 25 cadre (90 minute la cinema = 86,4 minute la TV). NTSC (USA, Jap., Can., Mex.) PAL (Marea Britanie) PAL (Germania, Austria, Italia) PAL (China) SECAM (Franţa, Rusia) 29.97 25 25 25 25 525/480 625/580 625/580 625/580 625/580 Banda MHz 4.2 5.5 5.0 6.0 6.0 h h 4 Raportul de aspect: p = = v 3 Rata cadrelor: Fiecare imagine completă se numeşte cadru. Acesta se obţine prin eşantionare temporală. Rata minimă de redare a cadrelor pentru ca ochiul să perceapă continuitatea mişcării: 50 Hz. Fiecare cadru este format din linii prin eşantionare verticală. Acestea pot fi obţinute prin scanare progresivă: a) scanarea progresivă; b) scanarea întreţesută sau scanare întreţesută, fiecare cadru este împărţit în două câmpuri, asigură o combinare între eşantionarea temporală şi verticală. 1 v SVGA 640 480 640 480 1024 768 1280 1024 STANDARDE INTERNAŢIONALE DE SCANARE ÎN TV Raport de aspect Întreţesere Cadre/ s Linii Total/ Active STANDARDE DE SCANARE LA COMPUTERE Color Întreţesere Cadre/s Linii Linii/s Banda Mode (MB/s) 8bpp 24bpp 8bpp 4bpp No No No No 60 70 70 70 2 525 525 800 1100 31,500 36,750 56,000 77,000 18.4 64.5 55.0 45.9 Codarea culorilor Semnalul RGB (Red, Green Blue) - monitoare, etc. - celelalte culori se obţin ca o combinaţie a culorilor primare. - alb: R+G+B=1. Reprezentarea YUV (Y luminanţa, U,V crominanţa). - Sistemul PAL, SECAM Y = 0.3R+ 0.59G+ 0.11B U = 0.493( B Y) V = 0.877( R Y) - Erorile de luminanţă sunt mai importante (mai supărătoare pentru ochi) decât erorile de crominanţă. Reprezentarea YIQ: - Sistemul NTSC Y = 0.3R+ 0.59G+ 0.11B I = 0.6R 0.28G 0.32B Q= 0.21R 0.52G+ 0.31B
Apariţia prelucrării digitale a semnalului video: Televiziunea digitală introduce eşantionarea şi pe linii făcând legătura dintre standardele de televiziune şi cele folosite la redarea pe ecranele monitoarelor calculatoarelor personale, unde se utilizează explorarea progresivă. Legătura dintre rezoluţia pe orizontală, banda video şi rata cadrelor este dată de relaţia: BW = 1 2 ( FR)( NL)( HR) ρ FR = rata cadrelor, NL = numărul de linii/cadru, HR = rezoluţia pe orizontală, ρ = partea de timp alocată semnalului video activ dintr o linie. Număr activ de pels/linie Luminanţa (Y) Crominanţa (U,V) STANDARDE VIDEO DIGITAL ITU-R 601 ITU-R 601 525/60 625/50 NTSC PAL/SECAM 720 360 3 720 360 CIF 360 180 Număr activ de linii/pic Luminanţa (Y) Crominanţa (U,V) 480 480 576 576 288 144 Interlacing 1:1 Rată temporală 60 50 30 Raportul de aspect Rate brute de date (Mbps) 165.9 165.9 37.3 Televiziunea de înaltă definiţie (HDTV): 1280 pels 720 linii luminanţa, 640 pels 360 linii crominanţa 60 cadre/s 8 biţi/pel/canal, = aproximativ 663.5 Mbps Pentru a transmite HDTV pe un canal de 6MHz trebuie o compresie de 663.5:20=34:1. 4.1. Standardul H.261 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 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 sunt codate cu semnal de luminanţă Y şi semnale diferenţă de crominanţă C B şi C R. Poziţia eşantioanelor de luminanţă (Y) şi crominanţă (C B şi C R ): Numai două formate (de raport 4/3) de imagini sunt permise: Common Intermediate Format (CIF) - componenta de luminanţă: 288 linii şi 352 pixeli/linie. - componenta de crominanţă: 144 linii şi 176 pixeli/linie. Quarter-CIF - componenta de luminanţă: 144 linii şi 176 pixeli/linie. - componenta de crominanţă: 72 linii şi 88 pixeli/linie. 4
Toate implementările H.261 trebuie să poată face codarea în ambele formate CIF şi QCIF. Un semnal necomprimat QCIF la o rată de 29,97cadre/s are rata de bit 9,12Mbit/s, iar în format CIF la aceeaşi rată 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. Vector de mişcare Un grup de blocuri este definit prin 33 de macro-blocuri. - imaginea QCIF are 3 grupuri de blocuri. - imaginea CIF din 12 grupuri de blocuri. Pentru obţinerea vectorilor de mişcare se consideră diferenţa dintre macroblocurile localizate pe aceeaşi poziţie în imaginile care urmează. Blocul este codat DPCM şi dacă valoarea codată depăşeşte o anumită valoare de prag, se aplică DCT şi se transmit coeficienţii (codare intracadru). Altfel se transmit numai componentele vectorului de mişcare codate entropic fără pierderi (codare intercadru). 4.1.2. Algoritmul de codare Utilizează două metode diferite de codare: intercadre şi intracadre. Pentru codarea intracadre nu este luată în considerare redundanţa între cadre. Pentru codarea intercadre informaţia din cadrul anterior sau următor este folosită. Decizia privind modul de codare se ia pe măsura compresiei în funcţie de anumiţi parametrii. Codarea intracadre 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 intercadre este bazată pe predicţia fiecărui macro-bloc al imaginii. Aceasta se realizează printr-o comparare a macro-blocurilor dintre imaginile anterioare şi cea curentă. Vectorul de mişcare este definit de poziţia relativă a blocului anterior faţă de cel curent. 5 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 în bufferul unde 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ă. 6
Schema detaliată a codorului: Decodorul: 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 - tabel 2D pentru codare de lungime variabilă (VLC). 7 De exemplu: 0 0 0 1 6 0 3 EOB se codează: 001111 001000010 001001010 10 8
Codarea vectorilor de mişcare (MV). Vectorii de mişcare au valori întregi între 15 şi 15. Se codează diferenţa între MV cu lungime variabilă a codului. Decizia codării mişcării 4.1.3. Cuantizarea coeficienţilor De exemplu: 15 14 13 12... diferenţa: 1 27 25... se codează: 011 00001010 00000111... Decizia codării intercadre sau intracadre 9 Ajustarea pasului de cuantizare se face în funcţie de cantitatea datelor în bufferul unde se face transmisia. Pasul de cuantizare poate varia între 2 şi 62 (din 2 în 2). Dimensiunea bufferului: q 64 kbiţi. Rata de bit: q 64 kbiţi/s. Rata cadrelor: 30 Hz, ( 1...4 k k = ). Numărul mediu de biţi pe MacroBloc: CIF: 5 k q QCIF: 20 k q umplerebuffer Pasul de cuantizare: 2 int + 2 200 q Umplerea bufferului Pasul de cuantizare < 200*q 2 < 400*q 4 < 600*q 6 < 800*q 8...... < 6000*q 60 < 6200*q 62 10
Debitul la decodare tn+ 1 d + 1 b + R() t dt B n n tn Timpul este dat în multiplii întregi de perioade CIF (1/29,97; 2/29,97 etc.) 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; - MVD: MV Data; - CBP: Coded Block Pattern 4. Nivelul Blocuri - TCOEFF: Coeficienţii transformatei; 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ă. 11 12
4.2. Standardul H.263 Standard ITU-T pentru codare video la rate de bit foarte mici. Pentru transmisie prin reţelele PSTN (Public Switched Telephone Network). Rate de bit între 10 şi 24kbiţi/s. Este o combinaţie între H.261 şi codări similare MPEG pentru obţinerea unei rate foarte mici. Comaraţii cu H.261: - Permite mai multe formate decât H.261 şi diferite structuri GOB. - Compensarea mişcării la nivel de jumătate de pixel. - Codare VLC după un tabel 3D. Performanţe: - are PSNR cu 3-4dB mai mare decât H.261 la rate mai mici de 64kbiţi/s. - reducere cu 30% a ratei de biţi faţă de MPEG-1. Formate de imagini: Sub-CIF QCIF CIF 4CIF 16CIF Pixeli/linie 128 176 352 704 1408 Linii 96 144 288 576 1152 Rezoluţia de determinare a vectorilor de mişcare este jumătate de pixel. Codarea cu tabel 3D: - Un simbol este format din: {last, run, level}. - last=1 indică ultimul coeficient diferit de zero. - nu mai este nevoie de EOB. Există patru moduri de codare: 1. Modul de codare a vectorilor de mişcare fără restricţii (Unrestricted Motion Vector Mode) 2. Modul de predicţie avansată (Advanced Prediction Mode) 3. Modul de codare a cadrelor PB (PB-Frame Mode) 4. Modul de codare bazat pe codarea aritmetică a sintaxei (Syntax-based Arithmetic Coding Mode) Decodorul semnalează codorului ce mod este capabil să decodeze. Dacă codorul suportă acele moduri, le va activa. Intervalul de valori pentru vectorii de mişcare este [-16, 15.5]. Predicţia vectorilor de mişcare: Modul UMV (Unrestricted Motion Vector Mode) - Vectorii de mişcare pot indica în afara imaginii. - Pixelii de pe margini se repetă. - Apare un câştig pentru codarea mişcarii spre marginea scenei. - Se face o extindere a valorilor vectorilor de mişcare la intervalul [-31.5, 31.5]. - Utilizat în formatele 4CIF şi 16 CIF. - Este bun pentru codarea imaginilor în care se camera video se deplasează sau există mişcare în fundal. Modul AP (Advanced Prediction Mode) - Se codează blocuri suprapuse. - Se folosesc patru vectori de 8x8 în loc de un vector de 16x16 pentru unele macroblocuri pentru o mai bună predicţie a mişcării. - Vectorii de mişcare pot indica în afara imaginii ca la UMV. 13 14
Modul PB-Frame - Un cadru PB costă din două imagini - Imaginea P este prezisă din ultima imagine decodată - Imaginea B este prezisă atât din ultima imagine decodată cât şi din imaginea P care este decodată. - Vectorii de mişcare din B sunt obţinuţi din cei ai lui P. - Se codează un macro-bloc din P urmat de un macro-bloc din B. Modul SAC (Syntax-based Arithmetic Coding Mode) - Se utilizează codarea aritmetică în loc de VLC - Se obţin mai puţini biţi pentru acelaşi raport semnal-zgomot. 15