Sunteți pe pagina 1din 64

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


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 MPEG2 => 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 0f , b1. 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 personaj este 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.

Exemplu de aplicare a unui mate de imagine de tip luma:

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:

0

1

daca (hkey t ) h (hkey t )


altfel

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

0
h
1

daca (hkey th ) h (hkey th )

0
l
1

daca (lkey tl ) l (lkey tl )

0
s
1

altfel
altfel

daca ( skey t s ) s ( skey t s )


altfel

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 inregistrat pe 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
optiunenondrop-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-dropframe 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% a vitezei
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 MPEG4 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).

Pentru un macrobloc 16x16 se obtin un bloc 8x8 de esantioane Cb, un bloc 8x8
de esantioane Cr si 4 blocuri 8x8 de esantioane Y.
Asemanator pentru subesantionarea 4:2:2 se esantioneaza fiecare al
doilea pixel din fiecare rand pentru Cb si Cr.

Pentru MPEG-2 impartirea cadrelor in macroblocuri este chiar mai complicata.


In final, indiferent de metoda adoptata, blocurile 8x8 sunt prelucrate de
DCT si cuantizate (pas 5).

Pasii 3 si 4. 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).
Acest pas se numeste estimarea miscarii. De multe ori nu exista prea
multa miscare intre un cadru si cadrul urmator, deci nu este eficient sa se
trimita aceleasi informatii in mod repetat. Este mai economic sa se determine
diferentele intre un cadru si cadrul urmator, utilizand codificarea diferentiala. De
multe ori valoarea diferentei dintre doi pixeli corespunzatori din doua cadre
succesive este mai mica decat valoarea insasi a pixelului. Adesea diferenta
este 0, deci o secventa de 0-uri se preteaza compresiei.
Se considera un exemplu: o minge mare albastra rostogolindu-se pe o
alee (nimic altceva nu se schimba in scena respectiva). In cadrul 2 mingea este
deplasata putin spre stanga fata de cadrul 1 (cu x pixeli la stanga si y pixeli in
jos). Diferenta dintre macroblocul din cadrul 1 si macroblocul corespunzator din
cadrul 2 se numeste eroare de predictie.

Cadrul P sau B de comprimat se numeste cadrul tinta. Cadrul de referinta cu


care cadrul P este comparat se numeste cadrul de predictie inainte. Cadrul de
referinta cu care cadrul B este comparat se numeste cadrul de predictie inapoi.
Se incearca in ambele cazuri o potrivire a unui bloc din cadrul P sau B cu
cadrul de predictie. Este posibil sa nu se gaseasca o potrivire cu niciunul din
cadrele de predictie, caz in care cadrul se transforma in compresie intraframe.
Daca se gaseste numai o singura potrivire se utilizeaza un singur vector de
miscare. Daca se determina o potrivire pentru ambele cadre de predictie se
utilizeaza doi vectori de miscare, iar blocurile de coincidenta din cele doua
cadre de predictie se mediaza inainte de calcularea erorii de predictie.

Evident, estimarea miscarii este o operatie necesitand multe calcule.


Se considera un macrobloc din cadrul tinta T, avand originea (coltul
stanga-sus) in x,y notata ca punctul T(x,y). Se cauta un macrobloc de
coincidenta in cadrul de referinta R, punctul corespondent fiind R(x,y), iar
macroblocul cu aceasta origine fiind notat Rxy. Se cauta in vecinatatea lui Rxy
macroblocul care se potriveste cel mai bine cu Txy. in jurul unei distante d. Se
compara fiecare macrobloc Rx+i,y+j la Tx,y pentru d i d si d j d . Se va
alege dintre toate macroblocurile cel care se potriveste cel mai bine. O definitie
pentru cea mai buna potrivire este utilizarea mediei diferentei de culoare a
fiecarui pixel fata de pixelul corespunzator din blocul de referinta, aceasta
numindu-se MAD (mean absolute difference), data de:

unde N este dimensiunea macroblocului iar originile lui R si T sunt R(x,y) si


respectiv, T(x,y).

Se doreste gasirea vectorului (p,q) pentru care MAD(p,q) este minim. Vectorul
dat de (p,q) este deplasamentul macroblocului de coincidenta de la pozitia
(x,y).

algoritm pentru estimarea miscarii (motion_estimation)


/*Input: doua cadre video, cadrul tinta T si cadrul de referinta R; originea (x,y) a
macroblocului de potrivit
Output: vector de miscare (p,q)*/
{
/*Fie MAX_NUM o valoare mai mare decat orice valoare anticipate MAD */

min = MAD(0,0);
p = 0;
q = 0;
for i = d to d
for j = d to d {
avg = MAD(i,j);
if (avg < min) {
min = avg;
p = i;
q = j;
}
}
}

Cautarea completa prezentata in algoritmul precedent este foarte costisitoare


din p.d.v. al calculului. In figura urmatoare pentru estimarea miscarii prin
cautare completa:

este necesar sa se examineze fiecare macrobloc al carui centru este pe sau in


interiorul liniei punctate din figura, in total (2d+1)2 macroblocuri. Fiecare
macrobloc contine N2 pixeli. Deci o cautare completa necesita (2d+1)2 N2
operatii pentru fiecare macrobloc. Pentru MPEG-2 intr-un cadru 720x480 exista
720*480/ N2 macroblocuri, iar la rata de 30 cadre/s solutia devine nerealista.

O alternativa este cautarea logaritmica 2D. Intr-o cautare logaritmica se


incepe prin examinarea a numai 9 macroblocuri, egal distantate in interiorul
unei distante d in jurul pozitiei macroblocului original:

R x d / 2 , y d / 2 , R x , y d / 2 , R x d / 2 , y d / 2 , R x d / 2 , y , R x , y ,
Rx d / 2 , y , Rxd / 2 , y d / 2 , Rx , y d / 2 , Rx d / 2 , y d / 2
Se va cauta cea mai buna potrivire intre acestea. Apoi la urmatoarea iteratie se
cauta intr-o zona mai mica in jurul acestui macrobloc, examinand:

Rx ' d / 4 , y ' d / 4 , Rx ', y ' d / 4 , Rx ' d / 4 , y ' d / 4 , Rx ' d / 4 , y ' , Rx ', y ' ,
Rx ' d / 4 , y ' , Rx ' d / 4 , y ' d / 4 , Rx ', y ' d / 4 , Rx ' d / 4 , y ' d / 4

Se poate continua, in limitele rezolutiei. Aceasta metoda reduce


complexitatea algoritmului la O(N2 log(d)) per macrobloc in cadrul tinta.Este mai
rezonabil, dar complexitatea a fost redusa numai cu un factor:

Deoarece aceasta operatie se repeta de 720*480*30/N2 pe secunda sunt


necesare si alte imbunatatiri.
Un dezavantaj al cautarii logaritmice este ca poate sa conduca catre un
minim (cea mai buna potrivire) local, dar nu neaparat catre un minim global al
intregului cadru. Pentru imbunatatirea rezultatelor este necesar sa se considere
mai multi candidati pentru pasul urmator in cadrul cautarii.
Algoritmul poate fi mai eficient printr-o abordare ierarhica, incepand cu
o rezolutie mai scazuta pentru estimarea macroblocului si gasirea vectorului de
miscare prin niveluri crescute ale rezolutiei.
Aria de cautare a vectorului de miscare depinde de standardul de
compresie: pentru H.261 d este maxim 15, pentru MPEG-1 este maxim 1024.

Pas 5: Pentru toate cadrele comprima cu JPEG.


Compresia unui cadru video este la fel cu compresia unei imagini
statice, putand fi aplicata compresia JPEG. JPEG este legata de trecerea unei
imagini din domeniul spatial in domeniul frecventa. In domeniul frecventa se pot
trata diferit componentele de inalta frecventa si cele de joasa frecventa. Ochiul
uman fiind mai putin sensibil la frecventele inalte (schimbari de culoare in arii
mici), inseamna ca se poate renunta la reprezentarea acestor frecvente inalte si
chiar daca se pierd detalii acestea nu sunt sesizate.
Cadrele I trec numai la compresie intraframe. Compresia se face la fel
ca la imaginile statice, fara referiri la alte cadre.
Cadrele P si B trec la predictia miscarii, cum s-a discutat mai inainte.
Astfel diferenta dintre valoarea asteptata a unui pixel (se intelege valoarea
pixelului in macroblocul de coincidenta cea mai buna din cadrul de predictie) si
valoarea sa actuala este codificata. Valorile diferentiale sunt memorate in
blocuri 8x8. Acestea sunt valori care sunt transformate in domeniul frecventa
prin DCT.
In figura urmatoare se prezinta estimarea miscarii si compresia JPEG
aplicata intercadrelor (interframe).

Cuantizarea este procesul de impartire a fiecarui coeficient DCT printrun intreg si rotunjire. Detaliile cuantizarii variaza de la un standard la altul. Prin
impartire cu un numar mai mare rezulta o cuantizare mai grosolana si la mai
multe pierderi prin eroarea de rotunjire. Se utilizeaza tabele de cuantizare,
astfel ca numerele de cuantizare pot varia in interiorul unui macrobloc.

S-ar putea să vă placă și