standardul de codare video h - erasmus pulseencoderului h.264. predicția se realizează la nivel de...

23
Standardul de codare video H.264 Ș.l. Cristina Oprea [email protected] Departamentul de Telecomunicații ETTI 1

Upload: others

Post on 20-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Standardul de codare

video H.264Ș.l. Cristina Oprea

[email protected]

Departamentul de Telecomunicații

ETTI

1

Page 2: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Scenarii de codare video

2

Page 3: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

H.264

Zona gri delimitată prin chenar în figură indică blocurile, respectiv etapele standardizate de către ITU în recomandarea: ”H.264 Advanced video coding for generic audiovisual services”. Standardul prevede așadar modul în care trebuie decodat fluxul video codat, precum și sintaxa acestui flux, lăsând implementarea codorului la libera alegere a utilizatorilor.

3

Page 4: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Caracteristici

Cel mai utilizat algoritm de compresie video la ora actuală (cel mai recent este H.265)

Format 4:2:0, cu 8 biți / eșantion

Compresie mai bună (de aproximativ 2 ori) față de orice alt standard

anterior

Scalabilitate d.p.d.v al complexității versus eficiența codării

Seturi de opțiuni/capabilități grupate per profile

Extensii speciale pentru aplicații profesionale

4

Page 5: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Caracteristici

Cadrele video sunt divizate în macro-blocuri (MB)

Predicție în domeniul spațial (pixel)

Compensarea mișcării bazată pe blocuri

Transformata aplicată pe blocuri de dimensiuni mai mici

Cuantizare – scală logaritmică; pași de cuantizare mai fini

Codare entropică:

VLC, îmbunătățită prin adaptare la context (CAVLC)

adăugat Context Adaptive Binary Arithmetic Coding (CABAC)

Filtrare obligatorie tip ”deblocking”

5

Page 6: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Macro-blocuri (MBs) și Slice-uri

Cadrul se împarte în MBs de dimensiune fixă

16x16 – luma

8x8 – fiecare componentă de chroma (4:2:0)

MBs – grupate în slice-uri

Slice

regiune decodabilă independent

1 sau mai multe per cadru

de dimensiuni variabile

Tool-uri pentru rezistență la erori:

FMO (Flexible Macroblock Ordering)

ASO (Arbitrary Slice Order))

RS (Redundant Slices))

6

Page 7: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Slice-uri și cadre

Tipuri de slice:

slice I: toate MB codate INTRA

slice P: MB codate INTRA + INTER (compensarea mișcării uni-direcțional)

slice B: tip P și MB codate INTER (compensarea mișcării bi-direcțional)

SI și SP: ”switching” între secvențe video diferite

1 cadru poate conține slice-uri de tip diferit

Cadru referință – folosit în predicția altor cadre

Cadru IDR (Instant Decoder Refresh) – folosit ca punct de acces aleator, predicție intra.

7

Page 8: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Structura decodorului

8

Page 9: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Structura decodorului

Procese principale:

Decodarea entropică

Predicția (INTRA / INTER)

Decodarea texturii reziduale:

De-cuantizare

Transformata

Reconstrucția

Filtru de ”deblocking”

9

Page 10: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția

Schema prezentată figurează etapele parcurse în procesul de predicție în cadrul encoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în predicție aparțin chiar cadrului curent sau provin din cadre codate anterior. Concret, din macroblocul curent se scade cel predicționat, rezultând un macrobloc cu coeficienți reziduali. Dacă predicția a fost realizată corect, atunci macroblocul predicționat este similar celui curent, iar coeficienții reziduali vor avea valori mici ca amplitudine. Este mai ușor și mai convenabil din punct de vedere al compresiei, ca blocul de codare entropică să primească reziduuri cu valori cât mai reduse. Cu cât sunt mai mici acești coeficienți reziduali, cu atât mai puțini biți vor ocupa ei în fluxul video binar, întrucât se vor transmite decodorului doar amplitudinile lor codate entropic și modul în care a fost realizată predicția. Decodorul va realiza la rândul său predicția indicată în sintaxa fluxului binar, apoi va aduna la macroblocul predicționat coeficienții reziduali extrași din fluxul binar, obținând astfel macroblocul curent.

10

Page 11: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția – Poziționarea vecinilor

Sunt folosite 4 poziții vecine:

Stinga: A

Sus: B

Sus-dreapta: C

Sus-stânga: D

Standardul prevede o notare clară a pixelilor care se pot folosi la predicția spațială de tip intra, aceștia apartinând macroblocurilor vecine cu cel curent dinspre partea stângă și cea de sus. Se aleg doar acești vecini din considerente legate de ordinea de codare a macroblocurilor: fiecare cadru este codat începând cu primul MB din stânga sus mergând de la stânga la dreapta și de sus în jos. Se aleg așadar pentru predicție doar pixelii vecini deja codați anterior, astfel încât decodorul să dispună și el de aceste valori la decodare.

11

Page 12: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTRA

MB de tip I pot fi în orice tip de slice

Slice I – nu are referință temporală fiind codat integral INTRA

Tipuri de MB:

Intra 4x4 : fiecare bloc de 4x4 pixeli din MB este predicționat individual și se

pretează zonelor cu multe detalii

Intra 16x16: este predicționat întregul MB de 16x16 pixeli de luma, mai potrivit

pentru zonele relativ uniforme din imagine

I-PCM: fără predicție; valorile pixelilor sunt trimise fără compresie; permite

codarea fără pierderi.

12

Page 13: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTRA

Predicție direcțională în domeniul spațial – eliminarea redundanțelor spațiale

Se folosesc pixelii vecini pentru a deriva valorile pixelilor din blocul curent (pixelii vecini provin din A, B, C, D)

Intra 4x4: toți vecinii pot fi folosiți

Intra 16x16: vecinii A, B și D

Moduri de predicție 4x4:

Predicția DC (o valoare medie a vecinilor va fi folosită pentru predicția întregului

bloc)

8 moduri de predicție direcționale – se dorește predicția diverselor contururi de

obiecte aflate la diverse înclinații

13

Page 14: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTRA

14

Page 15: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTRA

Moduri de predicție 16x16:

Vertical (0) - B

Orizontal (1) - A

DC (2) – o valoare medie a vecinilor

Planar (3) – blocul predicționat este modelat ca un plan care să aproximeze cât

mai bine variațiile orizontale și verticale ale marginilor sale

15

Page 16: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTRA

16

Page 17: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTER

Prezentă numai în slice-uri P sau B

Tipuri de MB:

Inter 16x16, Inter 8x16, Inter16x8 – fiecare partiție cu propria informație despre mișcare (direcție, cadru referință, vector de mișcare)

Inter 8x8: 4 sub-blocuri independente în MB

Skipped: mod special prezent numai în slice-uri P – nu are informație despre mișcare și nici textură reziduală. Vectorul de mișcare

este derivat din vecini.

Direct: mod special prezent numai în slice-uri

B – poate avea sau nu textură reziduală, cu vector de mișcare derivat.

17

Page 18: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Predicția INTER –informația de mișcare

Informația despre mișcare: tipul de partiție, indexii cadrelor de referință, vectorii de mișcare

Vectorul de mișcare este folosit

pentru identificarea pixelilor sursă care vor fi folosiți la predicția zonei

curente.

Cadrele de referință sunt grupate în liste distincte: L0 (slice-uri P și B

anterioare) / L1 (slice-uri B anterioare sau viitoare).

18

Page 19: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Compensarea mișcării

Compensarea mișcării este o modalitate de predicție temporală (se elimină redundanțele

temporale)

Sunt folosite cadre decodate anterior.

Compensarea mișcării poate fi:

Uni-direcțională (referința este anterioară MB

curent)

Bi-direcțională (o referință anterioară și alta

viitoare; se mediază rezultatul a 2 compensări uni-direcționale)

19

Page 20: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Textura

reziduală

Coeficienții decodați reprezintă textura reziduală care, împreună cu valorile predicționate, vor reconstrui semnalul.

Decodarea texturii reziduale este un proces în 3 etape:

Scanare zigzag

Decuantizare

Transformată inversă

Factorul de cuantizare (QP – quantization parameter) poate lua 52 de valori și poate fi actualizat la fiecare MB care are textură reziduală

20

Page 21: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Reconstrucția cadrului

21

Page 22: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Filtrul pentru ”deblocking”

Codarea bazată pe blocuri conduce la apariția inerentă a artefactelor de tip blocking, mai ales la rate binare mici.

Distorsiunile de tip blocking sunt eliminate printr-o filtrare adaptivă a întregului cadru video.

Sunt afectați numai până la maxim 3 pixeli vecini cu fiecare latură a unui MB

Moduri de funcționare:

Se poate renunța la această filtrare – modul Off.

Filtrare numai în interiorul slice-urilor (nu sunt afectate marginile de slice)

Filtrare inclusiv a marginilor de slice

Avantaje:

Marginile blocurilor sunt uniformizate, ramân numai contururile adevărate ale imaginii

Cadrul filtrat este folosit în predicția Inter a cadrelor viitoare, rezultă astfel valori mai mici ale texturii reziduale.

22

Page 23: Standardul de codare video H - ERASMUS Pulseencoderului H.264. Predicția se realizează la nivel de macrobloc și poate fi de tip intra sau inter, după cum pixelii folosiți în

Decodarea entropică

Proces care transformă fluxul binar codat într-o secvență de valori care

sunt asignate diverselor elemente de sintaxă, urmând regulile schemei de decodare.

La nivel de cadru video există 2 opțiuni de decodare entropică:

CAVLC (Context-based Adaptive Variable Length Coding)

CABAC (Context-based Adaptive Binary Arithmetic Coding)

CAVLC: coeficienții rezultați după transformată și cuantizare la encoder,

sunt decodati la decoder folosind tabele VLC.

CABAC: sunt exploatate corelațiile dintre simboluri folosind contexte. Se ajunge la o rată entropică minimă, indiferent de probabilitățile simbolurilor.

23