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ă): v h 1
Raportul de aspect: p h = = v 4 3 Rata cadrelor: Fiecare imagine completă se numeşte cadru. Acesta se obţine prin eşantionare temporală. Fiecare cadru este format din linii prin eşantionare verticală. Acestea pot fi obţinute prin scanare progresivă sau scanare întreţesută (fiecare cadru este împărţit în două câmpuri, asigură o combinare între eşantionarea temporală şi verticală) a) scanarea progresivă; b) scanarea întreţesută 2
Rata cadrelor: Film cinema 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). STANDARDE INTERNAŢIONALE DE SCANARE ÎN TV NTSC (USA, Jap., Can., Mex.) PAL (Marea Britanie) PAL (Germania, Italia, România) PAL (China) SECAM (Franţa, Rusia) Raport de aspect 4:3 4:3 4:3 4:3 4:3 Întreţesere 2:1 2:1 2:1 2:1 2:1 Cadre/s 29.97 25 25 25 25 Linii Total/ Active 525/480 625/580 625/580 625/580 625/580 Banda MHz 4.2 5.5 5.0 6.0 6.0 3
STANDARDE DE SCANARE LA COMPUTERE SVGA 640 480 640 480 1024 768 1280 1024 Color Mode 8bpp 24bpp 8bpp 4bpp Întreţesere Cadre/s Linii Linii/s Nu Nu Nu Nu 60 70 70 70 525 525 800 1100 31,500 36,750 56,000 77,000 Banda (MB/s) 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) 4
- 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: 1 ( FR)( NL)( HR) BW = 2 ρ FR = rata cadrelor, NL = numărul de linii/cadru, HR = rezoluţia pe orizontală, ρ = partea de timp alocată semnalului video activ dintr o linie. 5
Număr de pixeli activi/linie Luminanţa (Y) Crominanţa (U,V) Număr activ de linii/cadru Luminanţa (Y) Crominanţa (U,V) STANDARDE VIDEO DIGITAL ITU-R 601 525/60 NTSC 720 360 ITU-R 601 625/50 PAL/SECAM 720 360 CIF 360 180 480 480 576 576 288 144 Întreţesere 2:1 2:1 1:1 Rată temporală (campuri/s) 60 50 30 Raportul de aspect 4:3 4:3 4:3 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. 6
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 şi un canal D are 16kbiţ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. 7
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 ): 8
Numai două formate (de raport 4/3) de cadre 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. Toate implementările H.261 trebuie să poată face codarea în ambele formate CIF şi QCIF. Un semnal necomprimat QCIF la o rată a cadrelor de 29,97cadre/s are rata de bit 9,12Mbit/s, iar în format CIF la aceeaşi rată a cadrelor are 36,45Mbit/s 9
În formatul H.261 unităţile de date sunt de dimensiune 8x8 pixeli şi sunt utilizate pentru luminanţă şi crominanţă Un macro-bloc se obţine prin combinarea a 4 blocuri luminanţă Y cu câte un bloc al fiecărei componentă de crominanţă. Un grup de blocuri este format din 33 de macro-blocuri. - imaginea QCIF are 3 grupuri de blocuri. - imaginea CIF din 12 grupuri de blocuri. 10
4.1.2. Algoritmul de codare Utilizează două metode diferite de codare: intracadru şi intercadru. 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. 11
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 (estimarea mişcării) comparare a macro-blocurilor din imaginea curentă şi cea anterioară Vectorul de mişcare este definit ca poziţia relativă a blocului anterior faţă de cel curent. Vector de mişcare 12
Altfel se transmit numai componentele vectorului de mişcare codate entropic fără pierderi 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ă ca 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 din bufferul din care se face transmisia. 13
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ă. Schema detaliată a codorului: 14
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 15
16
De exemplu: 0 0 0 1 6 0 3 EOB se codează: 001111 001000010 001001010 10 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ă De exemplu: MV: 15 14 13 12... diferenţa: 1 27 25... se codează: 011 00001010 00000111... 17
Decizia codării inter sau intra 18
Decizia codării mişcării 19
4.1.3. Cuantizarea coeficienţilor Ajustarea pasului de cuantizare se face în funcţie de cantitatea datelor din bufferul din care 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 Pasul de cuantizare: umplerebuffer 2 int + 2 200 q 20
Umplerea bufferului Pasul de cuantizare < 200*q 2 < 400*q 4 < 600*q 6 < 800*q 8...... < 6000*q 60 < 6200*q 62 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ă; 21
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; - MTYPE: tip macrobloc - MQUANT: MB Cuantizer, 1...31; - MVD: MV Data; - CBP: Coded Block Pattern 4. Nivelul Blocuri - TCOEFF: Coeficienţii transformatei; 22
23
Fluxul de date H.261 prezintă următoarele caracteristici: - fluxul de date al unui cadru 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. - 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. 24
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 bit 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 25
Rezoluţia de determinare a vectorilor de mişcare este jumătate de pixel. Intervalul de valori pentru vectorii de mişcare este [-16, 15.5]. 26
Predicţia vectorilor de mişcare: Codarea VLC cu tabel 3D: - Un simbol este format din: {last, run, level}. - Last = 1 indică că ultimul coeficient a fost diferit de zero. - nu mai este nevoie de simbolul EOB. 27
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ă bazată pe sintaxă (Syntax-based Arithmetic Coding Mode) 28
Decodorul semnalează codorului ce mod este capabil să decodeze. Dacă codorul suportă acele moduri, le va activa. 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şcării 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 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. Modul PB-Frame - Un cadru PB costă din două imagini - Imaginea P este prezisă din ultima imagine decodată 29
- Imaginea B este prezisă atât dintr-un cadru anterior şi unul ulterior - Vectorii de mişcare din cadrul B sunt obţinuţi din cei ai cadrelor I şi/sau 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. 30