680 likes | 968 Views
PRELUCRARE VIDEO DIGITAL. Cupris PRELUCRARE VIDEO DIGITAL Statii de lucru digitale Prelucrare video Compozitia digitala Cadre cheie Coduri de timp Corectia de culoare Rendering DISTRIBUTIE VIDEO Fisiere video digitale Codecuri Compresia MPEG. PRELUCRARE VIDEO DIGITAL
E N D
Cupris PRELUCRARE VIDEO DIGITAL Statii de lucru digitale Prelucrare video Compozitia digitala Cadre cheie Coduri de timp Corectia de culoare Rendering DISTRIBUTIE VIDEO Fisiere video digitale Codecuri Compresia MPEG
PRELUCRARE VIDEO DIGITAL Statii de lucru digitale Principalele tipuri de camere digitale: (la inceputul anilor 2000) DV cu variantele sale (inclusiv profesionale DVCAM, DVCPRO 50 sau de inalta definitie HDV, DVCPRO HD), cel mai popular pentru amatori fiind miniDV. Camerele video si cu unitati de hard-disc, DVD si carduri de memorie, permitand compresia si salvarea direct in format MPEG-1 sau MPEG-2 => transferul imediat pe calculator (simpla copiere de fisiere), dar este o metoda cu pierderi. Un calculator pentru prelucrare video trebuie sa dispuna de caracteristici minime: frecventa procesorului 1 GHz, memoria interna RAM de 1 GB, rezolutia ecranului 1024x768 si foarte mult spatiu pe disc. Astfel pentru formatul DV rata de transfer este de 25 Mb/s, ceea ce inseamna aprox. 11 GB intr-o ora.
Pentru conversia semnalului video analogic in forma digitala este necesara o placa de captura video. Captura este un proces in timp real (exemplu o ora de video se achizitioneaza intr-o ora). Un tip de legatura prin cablu la calculator este IEEE 1394 (numita si Firewire sau iLink). Se utilizeaza de asemenea USB si USB2. Cu unele camere performante se utilizeaza SDI („serial data interface”), SDDI („Sony digital data interface”) si SDTI („serial digital transport interface”). Software-ul de prelucrare video a devenit accesibil chiar si amatorilor. Componentele principale ale unui astfel de software sunt: mediu de captura si secventiere a clipurilor, modul de aplicare a efectelor speciale si program de compresie si programare DVD.
Prelucrare video Principalii pasi in prelucrarea video digitala sunt: -filmarea video; -colectarea („gathering”) media intr-un mediu de prelucrare video: -captura clipurilor video de la camera in formatul nativ al programului de editare video; -importarea clipurilor suplimentare care au fost anterior capturate sau copiate pe calculator; -importarea de sunete, imagini statice, grafica vectoriala, grafica in miscare pe masura ce sunt necesare; -editarea si secventierea clipurilor: -marcarea punctelor clipurilor video sau sunet individuale; -plasarea clipurilor video, sunet sau cadre statice pe axa de timp; -aplicarea de tranzitii intre clipuri; -ajustarea temporizarii.
-aplicarea de efecte speciale: -compozitia prin aplicarea de transparenta, masti, chei croma sau luma, etc; -schimbare de culori, forme, miscare, etc pentru scopuri speciale; -editare de sunet; -aplicarea de ajustari si balansari de culori finale; -randare („rendering”); -exportarea filmului intr-un format de fisier corespunzator cu compresie; -programarea video pe un DVD, plasarea pe un website sau distribuirea intr-o alta maniera.
Filmarea si captura video. Filmarea („shooting”) presupune indreptarea camerei catre scena si inregistrarea imaginilor. Filmarea buna tine de arta cinematografica!!! a) Inregistrarea video cu ajutorul unei camere pe o banda video, apoi captura video pe calculator (proces in doua etape). b) Conectarea unei camere video digitale la calculator si inregistrarea direct pe hard discul calculatorului. Evita etapa de captura video. Dezavantaj: camera fiind conectata permanent la calculator limiteaza libertatea de filmare. c) Conectarea unei camere video analogice la calculator si inregistrarea direct pe hard discul calculatorului. Necesita o placa de captura video, conversie analog-numerica in timp real. Asemanator, pentru transferul unei casete VHS pe calculator. d) Inregistrarea cu o camera video digitala direct pe hard discul intern al camerei, pe DVD sau card de memorie. Aceste camere realizaeza digitizarea si compresia in format MPEG-1 sau MPEG-2. Fisierul poate fi apoi transferat pe calculator. e) Copierea de fisiere video digitale de la o sursa externa.
Colectarea media. Un mediu de editare video digital poate fi referit ca editor neliniar NLE („nonlinear editor”). NLE reprezentative sunt Ulead VideoStudio, Premiere, Final Cut. In general un astfel de editor include: -fereastra de captura; -fereastra pentru colectare si organizarea media; -fereastra pentru editarea clipurilor inainte de plasarea lor pe axa timpului. Exemplu: se aleg punctele In si Out pentru taierea la lungimea dorita. Fereastra se numeste „Source” in Premiere sau „Viewer” in Final Cut; -fereastra pentru vizionarea clipurilor care sunt pe axa timpului si aplicarea de efecte speciale (se numeste „Program” in Premiere sau „Canvas” in Final Cut); -axa de timp pentru secventierea clipurilor, imaginilor statice si fisierelor de sunet. Intr-un proiect de editare video se pot importa diferite tipuri de fisiere (imagini statice, sunete), iar in proiect se plaseaza linkuri catre acestea in loc sa se includa fisierele respective. Oricand aceste linkuri pot fi sterse, neglijate (skip) sau refacute, rezultand astfel usurinta in editare (actualizarea media).
Secventierea. Se presupune ca clipurile video au fost colectate si pot fi selectate plasandu-le unele dupa altele pe axa timpului cu tranzitii intre ele. Taierea clipurilor este un proces nedistructiv, deoarece doar se marcheaza punctele de In si Out, fara sa modifice fisierele din calculator. Se pot aplica tranzitii intre clipuri pe axa timpului, tranzitii de diferite tipuri (fade in, fade out, cross fade, wipe, peel), cateva fiind prezentate in figura (de la Ulead Video Studio):
Unele medii de editare video permit organizarea clipurilor in secvente de clipuri, asemanatoare scenelor dintr-un film sau capitolelor dintr-o carte. Secventele pot fi imbricate in alte secvente si pot fi exportate si reutilizate in alte filme. Se pot aplica efecte la clipuri pe linia timpului. Efectele de baza (efecte fixe sau efecte de miscare)includ schimbarea dimensiunii, formei, pozitiei sau opacitatii unui clip. Efectele speciale ca distorsiunile formelor sau „chroma keying” sunt grupate pe tipuri.
Compozitia digitala Canale alpha si „Alpha Blending”. In cursul procesului de compozitie se pot combina mai multe clipuri si imagini statice, permitand creativitatea. Diferite clipuri pot fi plasate pe diferite piste, eventual in acelasi interval de timp. Daca un clip de pe pista din varf nu acopera intregul cadru sau este partial transparent, atunci clipul de pe pista inferioara poate fi vazut. Se poate chiar sterge fondul unui obiect si poate fi plasat un alt fond pentru el. Initial aceste efecte erau realizate optic, prin proiectarea simultana a doua sau mai multe secvente de film. In prelucrarea digitala valorile de pixeli din imagini sunt combinate matematic.
O operatie de compunere digitala de baza „alpha blending” a fost introdusa intr-un capitol precedent. Considerand o imagine RGB cu doua straturi cu o valoare de pixel „foreground” F, valoare de pixel „background” B si o valoare alpha α in acea locatie, atunci, presupunand ca background-ul este complet opac, culoarea compusa a pixelului C este data de relatia: C = αfF + (1 – αf)B Aceasta operatie este facuta canal cu canal. In cazul compunerii a doua straturi avand opacitate mai mica de 100% trebuie aplicata o metoda de jos in sus salvand la fiecare pas valoarea alpha ramasa („rest”) α’.
Algoritm „alpha blending”. Astfel, fiind data o imagine RGB cu doua straturi, foreground si background, cu valorile de pixel F = (fr, fg, fb) si respectiv B = (br, bg, bb) , valorile alfa αf, respectiv αb, unde 0≤αf, αb≤1. Pentru fiecare pixel F de foreground si B de background, culoarea de pixel rezulata C = (cr, cg, cb) creata prin alpha blending este unde iar operatiile sun facute canal cu canal. Se aplica astfel o fractie a culorii pentru fiecare pixel proportional cu canalul alpha pentru fiecare strat.
Exemplu. Se considera patru straturi, de opacitati diferite reprezentate prin patrate: negru opacitate 100%, albastru de culoare (40, 100, 255) opacitate 80%, verde (130, 152, 74) opacitate 40% si roz (248, 98, 218) opacitate 60%. Daca se porneste de jos in sus (incepand cu patratul negru, opacitate 1, se va obtine pentru stratul rezultat intotdeauna α’ = 1, care este transportat la operatia urmatoare. Daca se porneste de sus in jos se obtine α’ < 1. Rezultatele calculelor:
(In bottom up, blue over black s-a tinut cont ca pentru negru valoarea de pixel este 0,0,0).
Ecuatia pentru alpha blending se aplica in video cadru cu cadru, la fel ca pentru imagini statice.
Canalele alpha pot fi utilizate si altfel in compozitia video. Se poate importa o imagine statica intr-un NLE permitand afisarea acesteia pentru un numar de cadre. De exemplu, un personajeste extras din background. Imaginea avand un strat nu exista straturi de afisat prin zona sa transparenta. Aceasta imagine poate fi salvata intr-un format care suporta canale alpha (PSD, BMP, PNG) si importata intr-o aplicatie care suporta informatii de transparenta (Premier, Final Cut, Cinellera) sau intr-un limbaj de programare multimedia (Director). De exemplu, imaginea a fost preluata intr-un program de editare video si plasata pe o pista deasupra clipului video. Canalul alpha defineste care pixeli din imaginea statica sunt vizibili si care nu. In zonele in care imaginea statica nu este vizibila este afisat clipul de dedesubt, aparand iluzia ca personajul a fost plasat in noul background reprezentat de clipul video.
Se poate realiza si operatia inversa, decupand o fereastra ovala sau rectangulara de pixeli transparenti, salvand informatiile de opacitate intr-un canal alpha si plasand imaginea deasupra unui clip video, care apoi va fi afisat prin fereastra respectiva.
Mattes. Reprezinta o alta solutie de compozitie video digitala. Provine din domeniul fotografiei digitale si a filmului, cand in procesul de compozitie optica se bloca prelucrarea chimica a unor portiuni din imagine fiind combinate cu altele. Un matte poate fi reprezentat printr-o cartela (card) cu o anumita portiune decupata. Se poate plasa un matte peste lentila aparatului sau peste un film, cand numai o portiune din film este expusa, corespunzatoare decupajului. In video digital este asemanator. Un matte este un fisier continand valori corespunzatoare pixelilor avand aceeasi dimensiune ca si cadrul video. Un matte de imagine (masca de imagine) este o imagine ale carei valori de pixeli determina nivelul de opacitate al pixelilor in cadrele video carora li se aplica matteul respectiv.
Pentru a pune un matte de imagine pe un video clip intr-un editor NLE se parcurg urmatoarele etape: -se creaza matte-ul intr-un editor de imagine; -se alege un efect pentru matte dintr-o lista „Effects” (sau „Filters”) si se plaseaza pe o pista in NLE; -in locul unde sunt setati parametrii se specifica tipul de matte, „luma” sau „alpha”, de asemenea fisierul in care se gaseste matte-ul. Un matte „luma” este un matte de imagine care utilizeaza valori de luminozitate pentru specificarea nivelurilor de opacitate. Un matte „alpha” este un fisier de imagine cu un canal alpha, valorile alpha definesc opacitatea pixelilor din cadrele carora se aplica matte-ul respectiv. Diferenta fata de solutia precedenta (canale alpha) este ca matte-ul nu se plaseaza pe o pista pe linia de timp.
Un matte se poate defini sub forma unor puncte intr-un cadru. Deoarece aceste puncte se pot muta in timp, acest tip de matte se numeste „track matte” sau „traveling matte”. De exemplu un „track matte” se aplica unui clip A plasat pe o pista mai sus decat clipul B. Atunci aria definita de punctele specificate de matte vor fi vizibile, in rest clipul A va fi invizibil, permitand afisarea clipului B. Pozitiile punctelor pot varia in timp, urmarind eventual un anumit obiect sau personaj. Un astfel de matte se mai numeste si „garbage matte”, caci orice in afara acestei zone este considerat gunoi (aruncat afara din scena).
Chroma keying. Reprezinta procesul de eliminare a pixelilor de o anumita culoare, in interiorul unei tolerante si opereaza dupa aceleasi principii ca matting. La identificarea unei culori de eliminat dintr-un cadru, in principiu se cere crearea unui matte specificand nivelul de opacitate al fiecarui pixel in acel cadru. Se realizeaza transparenta pixelilor in functie de apropierea de o anumita culoare. Pentru modelul de culoare HLS se identifica nuanta („hue”) nedorita hkey si se seteaza α=0 pentru toti pixelii cu hkey in interiorul unei anumite tolerante t. Definitie. Fie C=(h, l, s) culoarea unui pixel, unde 0 ≤ h, l, s ≤ 1. Fiind data o nuanta care trebuie eliminata din imagine si o toleranta t, valoarea alpha pentru pixel se poate calcula cu relatia: Se poate realiza un control mai bun daca sunt create valori alpha pentru toate cele trei componente, care apoi sunt combinate ponderat pentru a obtine o valoare alpha pentru fiecare pixel.
Definitie. Fie C=(h, l, s) culoarea unui pixel, unde 0 ≤ h, l, s ≤ 1. Se considera pondeile wh, wl si wz, unde wh + wl + wz = 1. Fiind data o culoare K=(hkey, lkey, skey) care trebuie eliminata din imagine si o tolerantele th, tl si ts, valoarea alpha pentru pixel se poate calcula cu relatia: α = wh αh + wl αl + ws αs unde Metode chroma key se pot aplica si in spatiul YCbCr, avand avantajul ca opereaza in acelasi spatiu de culoare ca metoda de compresie MPEG. Totusi nu sunt foarte eficiente pentru video DV, care subesantioneaza componentele de crominantala o rata de 4:1:1 (pentru NTSC).
Cea mai comuna aplicatie pentru chroma keing este elimnarea unui obiect din background-ul sau si plasarea intr-un alt background. De exemplu se poate inregistra un personaj pe un fond albastru uniform (sau verde), apoi acest fond este eliminat si inlocuit cu un fond reprezentand o plaja. Metoda se numeste „bluescreening” sau „greenscreening”. Aplicatie obsnuita: in televiziune, la rubrica meteo, prezentatorul este inregistratpe un fond verde, care apoi este inlocuit cu o harta. S-au ales culorile verde sau albastru, pentru ca pielea umana contine putine tonuri din aceste culori. Pentru un bun efect „bluescreen” sunt necesare urmatoarele conditii: -background-ul sa fie o culoare albastru consistenta; -background-ul sa fie filtrat; -iluminarea sa fie cat mai uniforma pe background, pentru a evita reflexiile si umbrele; -foreground-el sa nu contina nuante de albastru, utilizate in background; -foreground-ul sa fie la cativa metri distanta de background. Aceste conditii ideale nu pot fi intotdeauna indeplinite. Astfel, anumite nuante de albastru se pot gasi in foreground ca umbre sau textura; pe foreground se pot gasi unele reflexii din background.
La inceputul anilor 1960, Vlahos a dezvoltat o metoda de bluescreening, bazata pe observatii, care identifica pixelii avand componenta albastra dominanta fata de componentele rosu si verde, calculand corespunzator valoarea alpha. Definitie. Fie C = (cr, cg, cb) culoarea unui pixel, unde 0 ≤ cr, cg, cb ≤ 1. Valoarea alpha pentru pixel se calculeaza prin metoda „color difference keying method for bluescreening” α = 1 – (cb – max (cr , cg)) cu rezultatul taiat in intervalul [0, 1]. Aceasta ecuatie furnizeaza α = 0 pentru pixelii albastru pur, o valoare α aproape de 0 pentru pixeli predominant albastri si α = 1 pentru pixelii care nu contin de loc albastru.
O alta metoda de bluescreening a fost dezvoltata de Mishima in 1992, cunoscuta ca Primatte Keyer. Poate fi descrisa in spatiul de culoare RGB. In interiorul cubului RGB culorile de foreground si background sunt despartite in doua arii (S3 si respectiv S1), cu o arie de tranzitie S2. Sistemul lucreaza interactiv cu utilzatorul, care identifica pixeli care apartin backgroundului. Pe masura ce se identifica mai multi pixeli se traseaza o invelitoare sferica peste aceste culori in spatiul RGB (S1 in figura). Utilizatorul identifica si pixelii foreground fiind trasata o invelitoare sferica S2 astfel incat niciun pixel din foreground sa nu se gaseasca in aceasta invelitoare. Orice pixel avand culoarea in S1 are α = 0. Orice pixel avand culoarea in S3 are α = 1. Fie P un punct din S2 si C culoarea corespunzatoare acelui punct. Se traseaza un segment din P la granita exterioara a lui S2, obtinand segmentul YP. Se traseaza un segment din P la granita interioara a lui S1 obtinand XP. Atunci orice pixel avand culoarea C va avea α = |XP|/|XY| (unde |XP| reprezinta dimensiunea segmentului XP). Valoarea α a unui pixel va fi mai mica, proportionala cu apropierea la regiunea S1.
Cadre cheie Se doreste schimbarea in timp a efectelor aplicate clipurilor video, in acest proces sunt esentiale cadrele cheie si „tweening”. Un cadru cheie („keyframe”) este un cadru marcat ca punct de referinta. Tweening este procesul care modifica gradual un parametru de la un cadru cheie la altul. Prin parametru se intelege o proprietate ca pozitia, dimensiunea sau culoarea unui obiect. Etape: -se selecteaza un clip pe linia timpului; -se merge in fereastra unde controalele clipului sunt accesibile; -se gaseste locul in care parametrii pentru efect pot fi setati; -se face deplasarea pe linia timpului asociata cu clipul selectat si se aleg momente de timp care sa fie cadre cheie; -pentru fiecare din aceste momente de timp seteaza parametrii pentru efectul aplicat.
Coduri de timp Solutia standard pentru specificarea timpului este codul de timp video SMPTE, sub forma ore:minute:secunde:cadre. Intr-un mediu de editare video timpul este utilizat pentru durata unui clip, pentru puncte de In si Out, pentru pozitia indicatorului curent de redare („playhead”). In standardul NTSC apare o problema legata de numarul de cadre pe secunda care nu este intreg (29.97 cadre/s). Exista doua optiuni. Prima optiune”nondrop-frame timecode” rotunjeste 29.97 la 30, deci cadrele sunt numerotate de la 0 la 29. Apare insa o discrepanta intre codul de timp si timpul real de redare a clipului (la fiecare 29.97 s se adauga 0.03 s).
A doua solutie este „drop-frame timecode”. Aceasta metoda nu elimina niciun cadru, doar schimba numerotarea cadrelor astfel incat timpul afisat sa reflecte durata unui clip. Cadrele sunt renumerotate astfel incat primele doua cadre din fiecare minut sunt sarite (nu sunt numerotate), exceptand cadrele minutelor avand ultima cifra 0 (minutul 10, minutul 20, etc) care nu sunt sarite (sunt numerotate). Exemple: dupa cadrul 0;00;59;29 urmeaza 0;01;00;02, dupa 0;01;59;29 urmeaza 0;02;00;02, etc (se sar primele doua cadre la numerotare), dar dupa 0;09;59;29 urmeaza 0;10;00;00 (nu se sar cadre). Intr-adevar, in 10 minute la rata de 29.97 cadre/s exista 2997*60*10 = 17982 cadre. Prin numerotare cu 30 cadre/s in 10 minute exista 18000 cadre, mai putin cate doua cadre in fiecare din noua minute din cele zece, deci minus 18 cadre, adica in total tot 17982. In acest caz codul de timp reflecta corect durata corecta a clipului. Se utilizeaza ‘;’ pentru „drop-frame timecode” si ‘:’ pentru „non-drop-frame timecode”. Foarte important: in niciun caz nu se elimina vreun cadru din clip.
Ajustarea vitezei Se poate modifica viteza unui clip, specificand redarea acestuia mai repede sau mai incet. In acest fel se modifica si durata acestuia. Se poate specifica modificare de viteza constanta. Exemplu: incetinirea cu 50% avitezei conduce la dublarea duratei de redare a unui clip. O solutie este redarea de doua ori a fiecarui cadru, dar aceasta poate sa conduca la un efect stroboscopic. Unele editoare permit cadre noi care sa fie o combinatie a doua cadre vecine. Se poate varia viteza fara sa se modifice durata clipului (modificare de viteza variabila). De exemplu pentru un clip de 60 s se doreste redarea cadrului numarul 90 in exact secunda 5 (in loc de aprox secunda 3). Rezulta o incetinire a primelor 90 de cadre, dupa care celelalte cadre sunt accelerate pentru ca durata clipului sa nu se modifice.
Corectia de culoare Pentru verificarea culorilor NLE furnizeaza o serie de instrumente, ca de exemplu „vectorscope”, „waveform view” si „parade views” care reprezinta componentele de culoare.
„Vectorscope” indica nuanta si saturatia unui cadru video trasate pe un graf circular. Nuanta fiecarui pixel din graf este data de unghiul facut de pixel cu punctul central. In exemplul urmator sunt reprezentate culorile primare si complementele acestora. Negru si alb se gasesc in centrul cercului. Punctele aproape de perimetrul cercului corespund culorilor saturate.
„Waveform view” reprezinta variatia stralucirii cadrului selectat de la stanga la dreapta. In exemplul precedent se observa cresterea stralucirii de la stanga la dreapta (pentru imaginea in tonuri de gri). „RGB parade” indica cantitatile de rosu, verde si albastru (in exemplu apar cantitati egale). „YCbCr parade” indica cresterea luminantei, dar componentele de crominanta raman constante.
Rendering In anumite limite se poate previzualiza clipul final pe masura ce se editeaza. Totusi anumite efecte aplicate necesita calcul intensiv si nu pot fi aplicate din mers. Compozitia, ajustarea culorilor cu filtre multiple, scalare, rotatie etc, implica cerinte mari de calcul procesorului pentru calcul in timp real. Aceasta inseamna ca anumite calcule trebuie realizate inainte de a vedea efectul. Astfel, calculul care furnizeaza video final cu toate efectele se numeste „rendering”. Important, anumite efecte speciale se realizeaza intr-o anumita ordine, iar schimbarea ordinii poate schimba rezultatul obtinut.
DISTRIBUTIE VIDEO Fisiere video digitale Pasul final in productia video este pregatirea pentru distributie prin alegerea tipului de fisier si a codec-ului. Este in functie de audienta tinta, sistem de operare impreuna cu codec uzual, media de distributie (CD, DVD sau web), largimea de banda pentru descarcare, cerintele de memorie. Sufixul utilizat pentru un fisier video nu furnizeaza informatii complete despre continut. De exemplu sufix ca .avi sau .mov nu specifica daca fisierul este comprimat, iar daca da, ce codec este utilizat. AVI, MOV si WMV sunt formate de fisier container (un tip de format metafile) care pot contine media de diferite tipuri. Acestea permit o varietate larga de codec-uri. AVI (Audio Video Interleave) a fost introdus de Microsoft in 1992 si este in format RIFF (Resource Interchange File Format), care grupeaza datele in bucati etichetate. MOV este format de film QuickTime, creat de Apple in 1991. WMV a fost original format Advanced Systems (apartinand de Microsoft), acum fiind standardizat de SMPTE. MPEG contine unul dintre codecurile standardizate MPEG. La salvarea si compresia unei productii video se aleg (implicit sau explicit) tipul de fisier container si codec-ul.
Codecuri Proprietati ale codec-urilor. Fisierele video sunt foarte largi, astfel ca fara compresie sau subesantionare standardul video NTSC ar avea 240 Mb/s, HD ar avea rata de date de peste 8 Gb/s. Au fost discutate metode de compresie pentru imagini statice, metode care pot fi aplicate pentru video digital, fiecare cadru fiind o imagine statica. Gasirea de cai pentru indepartarea redundantelor si informatiilor straine dintr-un cadru se numeste compresie intracadru („intraframe compression”), sau compresie spatiala. Exista doua metode comune pentru compresie spatiala: -codificarea transformarii (schimbarea reprezentarii fiecarui cadru de la reprezentare spatiala la reprezentare in frecventa, prin utilizarea transformarii cosinus discrete si cuantizarea intr-o maniera care sacrifica informatiile de frecventa inalta); -cuantizare vectoriala(codificarea unei secvente de pixeli prin gasirea potrivirii celei mai bune a unei chei de culoare intr-o tabela). Prima este metoda de compresie JPEG care poate fi aplicata si cadrelor video, a doua se va discuta mai tarziu.
Video digital are o alta caracteristica care ofera oprtunitati de compresie: timpul. Compresia temporala permite eliminarea informatiilor redundante sau inutile considerand cum se modifica imaginile in timp. Deoarece compara cadre vecine se mai numeste si compresie intercadru („interframe compression”). Metoda de baza pentru compresie intre cadre este detectarea modului in care obiectele se deplaseaza de la un cadru la altul, reprezentarea sub forma unui vector si utilizarea codificarii diferentiale de-a lungul vectorului. Determinarea deplasarii vectorului se face prin metoda numita estimarea miscarii, o alta tehnica de compresie care se va examina mai tarziu. Unele codec-uri permit selectarea codificarii cu rata de biti constanta sau variabila (CBR – „constant bit rate” sau VBR – „variable bit rate”). VBR modifica rata de biti in functie de cata miscare exista intr-o scena. Daca nu exista prea multa miscare intr-o scena, aceasta poate fi comprimata mai mult, obtinand o rata mai mica de biti. Pentru scenele cu multa miscare rata de biti este mai mare. Adeseori codec-urile sunt asimetrice, insemnand ca timpul necesar compresiei nu este egal cu timpul pentru decompresie.
Cuantizare vectoriala. Primele codecuri au fost proiectate pentru a se incadra in rata scazuta a sistemelor disponibile atunci (de exemplu player 1X CD-ROM). Aceste codecuri utilizau metoda de cuantizare vectoriala. Metoda se baza pe procesul de rotunjire a cuantizarii cuplat cu un tabel de coduri. Etape ale metodei: -creaza o paleta pentru un cadru, paleta reprezentand culorile dominante si sabloanele de culoare ale cadrului si servind ca o tabela de coduri; -imparte cadrul in arii, de exemplu de 4 x 4 pixeli si cauta in tabela de coduri cea mai buna culoare care se potriveste cu aceasta arie; -codifica aria printr-un index in tabela de coduri. Aceasta categorie de codecuri necesita un timp indelungat pentru compresie. Decompresia este mult mai rapida, necesitand doar o translatare pe baza tabelei de coduri.
Cele mai cunoscute codecuri sunt: -Cinepack, initial pentru QuickTime sub Macintosh, apoi portat sub Windows. Intentionat pentru distributie video cu CD sau web, rezolutia era de 320x240 si 12 cadre/s. Atinge rate mari de compresie. Versiunea actualizata Cinepack Pro. -Indeo pentru redare de pe CD, compresie cu rata mare. Dezvoltat initial de Intel ca o metoda de cuantizare vectoriala, vandut apoi lui Ligos si evoluand catre diferite implemetari. -Sorenson dezvoltat initial pentru QuickTime. Mai puternic decat Cinepack si Indeo. Utilizat pentru trailers de filme pe web.
Compresia Motion JPEG. Se poate aplica compresia JPEG de la imaginile statice, cadru cu cadru, metoda fiind numita Motion JPEG (MJPEG). QuickTime include MJPEG-A si MJPEG-B, atingand astfel un nivel de standardizare. Ambele metode aplica compresie spatiala separat pentru fiecare din cele doua campuri intretesute. Diferenta dintre variantele A si B este ca A permite markeri in bitstream, in timp ce B, nu. La fel ca JPEG, MJPEG permite specificarea calitatii video (aplicand mai multa compresie daca se doreste un fisier mic). Compresia DV. Compresia DV standard produce rezolutii de 720x480 pentru NTSC si 720x576 pentru PAL. Camerele DV preiau semnalul RGB, il convertesc in YCbCr, executa subesantionare 4:1:1 (NTSC) sau 4:2:0 (PAL) si apoi aplica transformarea cosinus discreta, cuantizare adaptiva si codificare de lungime variabila. Se obtine un flux (stream) de date video de 25 Mb/s, iar daca se adauga audio si verificarea la eroare rezulta 36 Mb/s. DV este un format potrivit pentru video, obtinandu-se fisiere de dimensiuni gestionabile. Compresia este de tip intraframe, permitand editarea cadrelor individual.
Compresia MPEG Compresia MPEG. Dupa editarea video cand este gata de distributie se doreste aplicarea unei compresii mai mari, care combina compresiile intraframe cu interframe, unul dintre cele mai flexibile fiind MPEG. MPEG a fost dezvoltat in doua directii. Prima de ITU-T si subcomitetul sau Video Coding Experts Group (linia de codecuri cunoscuta ca seriile H.26*, * fiind inlocuita de o cifra), iar a doua Motion Pictures Experts Group, de unde si numele. H.261 a fost dezvoltat de ITU-T in 1990 ca standard de compresie pentru video conferinte sau video digital de transmis prin linii telefonice ISDN. Suporta rezolutii de 352x288 (Common Intrechange Format CIF) si 176x144 (1/4 CIF sau QCIF) la o rata de date intre 64 kb/s si 2 Mb/s. Metodele de compresie (utilizarea macroblocurilor, JPEG pentru intraframe si predictia miscarii pentru interframe) sunt esentiale pentru versiunile ulterioare MPEG si H.26*.
Linia de codecuri MPEG este complexa, acoperind atat video cat si audio. Versiunile sunt numerotate MPEG-1, MPEG-2 si MPEG-4, in cadrul fiecareia existand parti, fiecare parte fiind legata de o anumita componenta (sistem, audio, video). MPEG-1 are 6 parti, MPEG-2 are 9 parti si MPG-4 are 24 parti. Fiecare parte este impartita in profiluri, identificand un subset de caracteristici care trebuie sa fie incluse intr-o implementare (tip subesantionare, metode de cuantizare, fara pierderi pentru anumite anumite parti ale codificarii, etc). Profilurile sunt impartite in niveluri („levels”), legate de volumul de calcule necesare codificarii pentru a se adapta la rata de biti si rezolutie. In final audio este impartita in straturi („layers”), legate de rata de biti audio. MPEG-1 a rezultat ca standard ISO in 1991, utilizand algoritmul de baza H.261 pe care l-a imbunatatit in predictia miscarii si metodelor de cuantizare. Este utilizat mai ales la distributia de video pe CD sau web, cu o rezolutie de 352x240, rata de cadre de 29.97 cadre/s, rata de date de 1.5 Mb/s, subesantionare 4:2:0 si scanare progresiva. Pentru PLA rezolutia este de 352x288 cu 25 cadre/s. Se obtine calitate VHS pentru imagini si calitate CD pentru audio. Are trei straturi audio MP1, MP2 si binecunoscutul MP3.
MPEG-2 a fost aprobat in 1994, initial ca standard de televiziune. Ca aplicatie primara: codec pentru plasarea de video pe un DVD. Are patru niveluri (vezi tabela). MPEG-3 trebuia sa fie versiunea HD a MPEG-2, dar pentru ca MPEG-2 poate fi aplicat la rate mai mari de biti, MPEG-3 nu a fost niciodata dezvoltat.
H.263, standardizat in 1995, a adaptat metodele de compresie de la H.261 pentru a produce rata mai mica de biti pentru transmiterea pe linii telefonice obisnuite. Pentru a obtine rata mai mare de biti codecul utilizeaza metode de compensatie de miscare si de cuantizare imbunatatite si adauga codificare aritmetica. Rata de biti este cuprinsa intre 64 kb/s si 1024 kb/s, iar rezolutia este intre 128x96 si 1408x1152, dar in mod obisnuit 352x288. MPEG-4 a realizat un progres revolutionar in compresie prin codificarea bazata pe obiecte, unde obiecte media (obiecte audio si video) sunt entitati de prima clasa ce pot fi manipulate direct. MPEG-4 Part 2 a fost proiectat sa fie flexibil pentru diferite aplicatii de la distributie web de rata mica pana la rata mare in transmisia HDTV. MPEG-4 Part 10 (numit uneori si MPEG-4 AVC – Advanced Video Coding), echivalent cu H.264, a fost introdus in 2003, fiind adoptat repede pentru distributie CD, DVD, HD DVD si disc Blu-ray, media web, videoconferinte, videotelefon, transmisie de televiziune. Suporta rate de date intre 5 kb/s si 10 Mb/s.
/*Input: secventa de cadre video digitale; Output: aceeasi secventa comprimata*/ { Imparte secventa de cadre in grupuri de imagini (“groups of pictures” - GOPs),identificand cadre I, P si B. Imparte fiecare cadru in macroblocuri. Identifica cadre I (“intraframes” de comprimat spatial cu JPEG), cadre P (“forward prediction frames”, de comprimat in legatura temporala cu un cadru I sau P precedent) si cadre B (“bidirectional frames”, de comprimat in legatura temporala cu cadre I si/sau P precedente sau urmatoare). Pentru fiecare cadru P si B compara cadrul cu cadrul I sau P corespunzator pentru a determina un vector de miscare (sau mai multi vectori de miscare). Inregistreaza valorile diferentiale pentru cadrele P si B (diferenta dintre valoarea de pixel asteptata, ajustata de compensatia miscarii si valoarea actuala). Pentru toate cadrele comprima cu JPEG transforma datele in domeniul frecventa cu DCT; aranjeaza in ordine zig-zag; cuantizeaza aplica codificare de entropie (ex. Codificare Huffman) }
Pas 1. Imparte secventa de cadre in grupuri de imagini (“groups of pictures” - GOPs),identificand cadre I, P si B. Un GOP este „group of pictures”, un grup de n cadre video secventiale.Cadrele I („intraframe”) sunt comprimate independent, ca si cand ar fi imagini statice, utilizand compresia JPEG (este compresie spatiala, asa cum s-a discutat anterior). Cadrele I sunt puncte de referinta pentru cadrele P („interframes” sau „forward prediction frames”) si cadrele B („bidirectional frames”), care sunt comprimate atat spatial cat si temporal (compresia temporala implica masurarea modului in care imaginea dintr-un cadru se modifica in timp, ceea ce necesita o comparatie intre cadrele vecine). Fiecare cadru P este comparat cu cadrul precedent cel mai apropiat I sau P pentru a determina cum s-a schimbat imaginea. Se aplica un algoritm de estimare a miscarii pentru a determina directia miscarii intre cele doua imagini, reprezentand acest lucru printr-un vector de miscare. Estimarea miscarii este realizata la nivel de macrobloc, o zona de 16x16 pixeli. Similar fiecare cadru B este comparat cu cel mai apropiat cadru I sau P, in ambele directii, inainte si inapoi. Dimensiunea GOP si distanta intre cadrul I si urmatorul cadru P sunt definite de encoder (exemplu, in MPEG-1 GOP poate fi de dimensiune 15 iar M ??? posibil distanta I la P, poate fi de dimensiune 3). Cadrele I servesc ca puncte de acces direct cand video este rulat rapid, caci decomprimarea sa nu se bazeaza pe cadrele vecine.
Pas 2. Imparte fiecare cadru in macroblocuri.Un macrobloc este o zona de 16x16 pixeli, fiind o unitate de calcul gestionabila. Fiind suficient de mic permite compresorului sa se focalizeze intr-o singura zona la un moment pentru observarea miscarii. Miscarea poate fi diferita in diferite parti ale cadrului (mai multe obiecte sau persoane care se misca). Un macrobloc de 16x16 poate fi impartit in blocuri de 8x8, metoda de impartire depinzand de standardul de compresie. Considerand subesantionarea 4:2:0 YCbCr, utilizata in compresia H.261, rezulta un esantion Y pentru fiecare din cei 256 pixeli apartinand zonei de 16x16, dar un singur esantion Cb si un singur esantion Cr pentru fiecare bloc de 2x2 pixeli (echivalent cu esantionarea fiecarei a doua linii, respectiv fiecarei a doua coloane).