Inter-cadru

O imagine inter-câmp sau inter-cadru sau inter-imagine înseamnă în imaginea video de compresie sau un cadru aparținând unui flux care a fost codificat dintr-un algoritm de predicție între cadre. Depinde de imaginile codificate anterior pentru a prezice poziția macroblocurilor originale . Obiectivul acestui algoritm este de a defini un vector de mișcare care traduce deplasarea unui bloc într-o așa-numită imagine de referință deja codificată și poziția sa în imaginea curentă. Această predicție se mai numește predicție temporală. Scopul său este de a profita de redundanțele temporale dintre imaginile sau cadrele învecinate și astfel se obține o rată de compresie mai bună. Acesta diferă de cadrul intra-cadru care este codificat folosind un algoritm de predicție spațială . Avantajul previziunii inter este că pentru a codifica un obiect în mișcare, este suficient să găsiți un bloc existent într-o imagine deja codificată, care seamănă cu blocul curent și să codați diferența dintre valorile componentelor dintre aceste două blocuri, precum și vectorul său. întrucât pentru predicție intra, fiecare macrobloc al imaginii curente trebuie codat din textura vecinilor lor, care poate varia destul de ușor.

Predicție inter-cadru

Pentru a fi codificată, o imagine este împărțită în macroblocuri (blocuri de dimensiuni 16x16 pixeli). Pentru a evita codarea directă a valorii pixelilor bruti, fiecare macrobloc este prezis fie din vecinătatea lor, așa cum este cazul predicțiilor intra-cadru, fie din imaginile de referință (caz de cadru inter-cadru). Codificarea inter constă în găsirea unui bloc similar cu blocul curent pe o imagine de referință . Acest proces este realizat de un algoritm de potrivire a blocurilor . Dacă codificatorul a reușit să găsească un astfel de bloc, vectorul care conectează cele două blocuri se numește vector de mișcare ( (ro) vector motion ) va fi înregistrat și se codifică diferența dintre acest vector și vectorul prezis. Acest vector prezis este definit de standard și este o funcție a vectorilor macroblocurilor vecine deja codificate. Procesul calculează apoi eroarea de predicție, adică diferența de valoare a componentelor de luminanță și crominanță dintre blocul prezis în imaginea de referință și blocul original, numit și bloc rezidual. Acesta din urmă va fi codificat în fluxul binar după pași de transformare și cuantificare . În codarea video, această etapă de căutare vectorială se numește estimarea mișcării, iar cea a calculării diferențelor este compensarea mișcării .

Schematic:

Vecteur de mouvement - Vecteur prédit ⇒ Vecteur différentiel qui sera codé. Bloc ciblé - Bloc courant ⇒ Bloc résiduel qui sera transformé, quantifié et codé.

Următoarea imagine ilustrează procesul de predicție inter:

Din punctul de vedere al decodificatorului, procesul are nevoie doar de blocul rezidual și de vector pentru a restabili valorile macroblocului. Într-adevăr, imaginile de referință sunt de asemenea decodificate anterior și vectorul prezis este cunoscut, deoarece definiția sa este cunoscută de standard. Blocul decodat rezultat este diferit de blocul original, deoarece este o compresie cu pierderi datorită cuantificării.

Schematic:

Vecteur prédit + Vecteur différentiel ⇒ Vecteur de mouvement à appliquer dans l'image de référence. Bloc ciblé + Bloc résiduel ⇒ Bloc décodé.

Acest tip de predicție are avantaje și dezavantaje. Dacă algoritmul este capabil să găsească un bloc cu valori ale componentelor foarte apropiate de blocul curent, eroarea de predicție va fi mică și, prin urmare, odată transformată și comprimată, dimensiunea setului „vector de mișcare și bloc rezidual” va fi mai mică decât cea a blocului curent necomprimat. În schimb, dacă estimarea mișcării nu găsește un bloc adecvat, eroarea de predicție va fi mare, iar fluxul codat va avea o dimensiune mai mare decât cea a blocului necomprimat actual. În acest din urmă caz, codificatorul alege o codificare brută a acestui bloc. Pe scurt, cu cât predicția este mai bună, cu atât diferența este mai mică și, prin urmare, compresia este mai bună.

Această tehnică de predicție este limitată, deoarece nu poate fi utilizată pentru a comprima singur un videoclip întreg. Dacă blocul indicat de vectorul de mișcare într-un cadru de referință a fost, de asemenea, codificat dintr-un mod de predicție inter-cadru, erorile făcute cu privire la codificarea acestuia vor fi, de asemenea, propagate la următorul bloc. Cu alte cuvinte, dacă toate imaginile ar fi codate numai cu această tehnică, decodorul nu ar putea sincroniza fluxul video, deoarece ar fi imposibil să obțineți imaginile de referință. Acesta este motivul pentru care este necesară codificarea anumitor imagini independent de timp, cum este cazul imaginilor I numite și cadre intra sau cadre I care sunt codificate doar din conținutul lor cu un algoritm de predicție spațială și care nu au nevoie de date suplimentare pentru a fi decodificat. Din aceste imagini fiabile, va fi apoi posibilă decodarea imaginilor de referință.

Structura unui grup de imagini (GOP)

În mai multe codecuri, sunt definite două tipuri de cadre inter: imagini P (cadre P) și imagini B (cadre B). Cu cadrele I, aceste trei tipuri de imagini alcătuiesc un grup de imagini, alias GOP ( (en) Group Of Pictures ), care se repetă periodic în timpul codificării. Un GOP este compus dintr-o imagine I și conține de obicei mai multe imagini P și B, ceea ce înseamnă că o singură imagine I poate decoda un GOP întreg. Sincronizarea decodării se realizează în virtutea periodicității imaginilor I din flux.

Una dintre structurile tipice ale unui GOP este IBBPBBP ... Imaginea I este utilizată pentru a prezice prima imagine P, apoi din aceste două imagini procesul prezice primele două imagini B. A doua imagine P este prezisă din prima P- cadru și cele două imagini B incluse între aceste două imagini vor fi următoarele. Următoarea imagine ilustrează acest tip de GOP:

Pentru a putea prezice imaginile, este necesar să se schimbe ordinea imaginilor care urmează a fi codate. Acesta este motivul pentru care în timpul codificării, un secvențiator stabilește în prealabil tipul imaginilor cunoscând structura GOP și schimbă ordinea imaginilor care urmează a fi codificate pentru a obține toate imaginile de referință. În acest exemplu, ordinea de afișare este I B1 B2 p.  1 B3 B4 p.  2 dar ordinea codării este I p.  1 B1 B2 p.  2 B3 B4. Deoarece GOP trebuie să fie complet decodificat pentru a fi vizibil, este necesar să se asigure un timp de întârziere între decodare și ieșirea unei imagini pe ecran.

Tipuri de cadre inter

Inter cadrele sunt tipuri de imagini sau cadre care depind de așa-numitele imagini de referință care trebuie decodate. Diferența dintre cadrele P și cadrele B poate fi redusă la cadrele de referință utilizate de algoritmul de predicție constând în estimarea mișcării și compensarea mișcării.

Cadru P

Cadrele P sunt imagini prezise înainte , dintr-o imagine trecută . Predicția este făcută dintr-o imagine localizată mai devreme în timp, în principal o imagine I și care necesită mai puține informații de codificare (câștig de aproximativ 50% comparativ cu dimensiunea unei imagini I). Informațiile care trebuie codificate se referă la vectorii de mișcare și la corecția de predicție tradusă de coeficienții transformați ai blocului rezidual.

Cadru B

Cadrele B sunt definite ca imagini prevăzute bidirecțional, adică sunt prezise dintr-o imagine viitoare și o imagine trecută . Acest tip de predicție necesită, de asemenea, mai puține informații de codare decât cadrele P, deoarece acestea pot fi prezise și interpolate din două imagini de referință care o încadrează în timp. La fel ca cadrele P, cadrele B necesită informații despre vectorul mișcării și blocul rezidual, precum și cadrele de referință pentru a fi decodate. Pentru a evita propagarea prea multă a erorilor, imaginile B nu sunt în general utilizate ca imagine de referință.

Îmbunătățiri de predicție în standardul H.264

Una dintre îmbunătățirile majore aduse standardului H.264 este predicția între cadre. Ea permite:

Partiționare bloc H.264

Pentru a obține o compensare precisă și eficientă a mișcării, fiecare macrobloc de luminanță poate fi împărțit în subblocuri (a se vedea figura de mai jos). În standardul MPEG-2 , partițiile sunt la număr: 1 bloc de 16x16 pixeli, 2 blocuri de 16x8 pixeli, 2 blocuri de 8x16 pixeli sau 4 blocuri de 8x8 pixeli. Fiecare partiționare este asociată cu un mod de codificare inter. Pentru fiecare mod, estimarea mișcării găsește cel mai bun vector de mișcare pentru subblocul care indică un bloc de aceeași dimensiune în imaginea de referință, iar compensarea calculează o aproximare a costului de codare a macroblocului pentru modul dat. Odată ce toate modurile au fost finalizate, algoritmul alege modul de partiționare care a dat cel mai mic cost și efectuează codificarea definitivă a macroblocului.

În standardul H.264, numărul modurilor de partiționare crește cu posibilitatea de a împărți un bloc de 8x8 în subblocuri cu dimensiunea 4x8 pixeli, 8x4 pixeli sau 4x4 pixeli.

Precizie cu un sfert de pixel

Pentru a fi mai precis în căutarea vectorului de mișcare, imaginea de referință este mărită pentru a avea o rezoluție mai mare. În loc să lucreze cu rezoluția perfectă pentru pixeli, coordonatele vectorului pot fi setate la un număr zecimal de pixeli. Probabilitatea de a obține un bloc similar cu blocul actual este mai mare și, prin urmare, căutarea este mult mai eficientă. În standardul MPEG-2, precizia vectorului poate atinge jumătate de pixel. În H.264, precizia cu un sfert de pixel poate fi aleasă pentru fiecare mod de predicție inter. Pentru a utiliza valori subpixel care nu există, se folosesc tehnici de interpolare . Interpolația pentru a obține jumătate de pixeli constă în aplicarea unui filtru de lungime 6 în vecinătatea pixelului curent. Această primă operație permite calcularea valorilor sfert-pixel care se efectuează prin interpolare biliniară în standardul H.264. Figura de mai jos prezintă diferiții pixeli care trebuie calculați pentru a avea o precizie de un sfert de pixel.

Subpel interpolation.jpg

Referințe multiple

Aceste referințe multiple se referă la etapa de estimare a mișcării. Face posibilă găsirea care este cea mai bună imagine de referință dintre imaginile codificate anterior pentru fiecare partiție sau sub-partiție. Prin urmare, pot exista mai multe imagini de referință utilizate pentru codarea unui macrobloc. Dacă este o imagine P, numărul de imagini de referință anterioare poate fi de până la 4, adică algoritmul de căutare înregistrează un vector pentru fiecare imagine de referință pentru un bloc curent și calculează costul de codare. După ce a parcurs toate referințele, compară și alege cel mai mic cost. Informațiile referitoare la imaginea de referință sunt apoi codificate. În ceea ce privește imaginile B, numărul de referințe poate crește, de asemenea, dar numai în imaginile anterioare , deci dacă sunt alese două imagini de referință, procesul va utiliza cea mai apropiată imagine din trecut și imaginea viitoare . Dacă sunt alese patru imagini, va fi utilizată imaginea viitoare, precum și cele trei imagini anterioare cele mai apropiate de imaginea curentă. În standard, imaginile de referință sunt păstrate în buffere numite List0 pentru imaginile anterioare și List1 pentru imaginile viitoare . Chiar dacă există un cost de codare datorat imaginilor de referință, această tehnică face posibilă creșterea calității imaginii și o compresie mai bună, eroarea de predicție fiind în general mai puțin importantă.

Referințe multiple.jpg

Mod îmbunătățit Direct / Skip

Modurile Skip și Direct sunt frecvent utilizate în special cu imaginile B. Reduc semnificativ numărul de biți de codat. Dacă acest mod este ales de algoritm, nu vor fi codificate informații suplimentare, nici un vector de mișcare și nici un bloc de reziduuri. În acest caz, decodificatorul deduce vectorul de predicție definit din macroblocurile vecine deja codificate. Codificatorul înregistrează numai informațiile despre modul de predicție corespunzător macroblocului de sărituri.

În standardul H.264, există două moduri de a deduce mișcarea:

Folosește vectorul de mișcare al blocului din imaginea List1, situat în aceeași poziție pentru a deduce vectorul de mișcare al blocului curent. Blocul tampon List1 utilizează blocul List0 ca referință.

Salt direct.jpg

Prezice mișcarea de la macroblocurile învecinate în imaginea curentă. Criteriul posibil ar putea fi copierea vectorului de mișcare din blocul vecin. Aceste moduri sunt utilizate în zone uniforme ale imaginii în care nu există prea multă mișcare.

Blocați partiția.jpg

În figura de mai sus, blocurile roz sunt blocuri omise, folosind modul Direct / Skip. În acest exemplu, majoritatea macroblocurilor din imaginea B au fost codificate cu acest mod.

Informații suplimentare

Deși utilizarea termenului cadru este obișnuită în utilizarea informală, un concept mai general este folosit cu cuvântul imagine mai degrabă decât cadru, deoarece imaginea poate fi la fel de bine un cadru complet sau un singur câmp. (Câmp) întrețesut .

Codec - uri video precum MPEG-2 , H.264 sau Ogg Theora reduce cantitatea de date într - un flux prin următoarele keyframes , cu una sau mai multe inter-frame. De obicei, aceste cadre utilizează o rată de biți mai mică decât ar necesita absolut, deoarece o porțiune mare din fiecare cadru este - de obicei - similară cu cea anterioară. Prin urmare, numai piesele mobile trebuie recodificate.

Referințe

  1. Software H.264: http://iphome.hhi.de/suehring/tml/download/
  2. T. Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Prezentare generală a standardului de codificare video H.264 / AVC . Tranzacții IEEE pe circuite și sisteme pentru tehnologia video, vol. 13, nr. 7, iulie 2003
  3. ThomasWiegand, Gary J. Sullivan, „  „ Prezentare generală a standardului de codare video H.264 / AVC  ” , la http://ip.hhi.de , IEEE,2003(accesat la 19 ianuarie 2011 )
  4. Serkan Oktem și Ilker Hamzaoglu, „  O arhitectură hardware eficientă pentru estimarea precisă a mișcării H.264 cu un sfert de pixel  ” , la http://people.sabanciuniv.edu (accesat la 19 ianuarie 2011 )
  5. Jeremiah Golston și Dr. Ajit Rao, „  Tutorial codecs video: compromisuri cu H.264, VC-1 și alte codecuri avansate  ” , la http://www.eetimes.com ,2006(accesat la 19 ianuarie 2011 )

Vezi și tu

Articole similare

linkuri externe