71
MPEG-4 AVC/H.264 Emanuel Di Nardo Studio di approfondimento

MPEG4 AVC-H.264

Embed Size (px)

Citation preview

MPEG-4 AVC/H.264

Emanuel Di Nardo

Studio di approfondimento

MPEG-4 AVC/H.264 - Codec

Standard video nato dall'unione dei comitati Moving Picture Experts Group (sviluppatori dei precedenti codec MPEG) e Video Coding Experts Group (sviluppatori dei precedenti codec H.26x) Nasce dalla necessità di avere la qualità video dell'MPEG-4 ASP, utilizzando la metà del bitrate necessario

Standard in continua evoluzione grazie all'introduzione di nuove estensioni

MPEG-4 AVC/H.264

La fase di codifica prevede: ● La predizione spaziale (Intra-Prediction) e temporale (Inter-

Prediction) sui frame della sequenza video.

● Il processo di quantizzazione (Trasformata DCT Intera e Trasformata Hadamard).

● Produzione del bitstream tramite codifica entropica del video (basata su codificatori riadattati: a lunghezza variabile, codifica aritmetica e codifica di Golomb) .

MPEG-4 AVC/H.264

La fase di decodifica prevede: ● Decodifica del bitstream

● Quantizzazione inversa della sequenza video (Trasformate inverse)

● Applicazione di filtri per ridurre eventuali artefatti ottenuti in fase di codifica

● Riesecuzione della predizione spaziale e temporale per ricostruire i frame della sequenza video

MPEG-4 AVC/H.264

Schema di codifica e decodifica di una sequenza video

MPEG-4 AVC/H.264 - Concetti di baseUna sequenza video è suddivisa in partizioni sempre più piccole secondo il seguente schema:

● Group of Pictures: Sequenza di frame di lunghezza N.

● Frame:Immagine fissa.

● Slice:Parte di un frame.

MPEG-4 AVC/H.264 - Concetti di base● Macroblocco:

Grossi blocchi di pixel utilizzati per scandire l'immagine in fase di codifica/decodifica. Viene generato un macrobloccoper ogni componente dell'immagine(luminanza e crominanza).Può essere suddiviso in blocchi16x16, 16x8, 8x16, 8x8

● Partizione del macroblocco:Utilizzata per migliorare la precisione della predizione. Un macroblocco viene partizionato a partire da blocchi di dimensione 8x8 e può essere suddiviso in blocchi 8x4, 4x8, 4x4

MPEG-4 AVC/H.264 - Concetti di base● Blocco:

Singolo blocco su cui effettuare la predizione

● Campione:Elemento del blocco su cui eseguire effettivamentela predizione

MPEG-4 AVC/H.264 - Concetti di baseSpazio colore: Supporto per gli spazi colore RGB - YCrCb - YCgCo. Spazio colore principale: YCrCb. Il video è convertito da RGB a YCrCb in fase di codifica e riconvertito in RGB quando visualizzato sullo schermo.

YCgCo è stato introdotto per ridurre gli errori di conversione introdotti da RGB -> YCrCb -> RGB. [Poco utilizzato]

MPEG-4 AVC/H.264 - Concetti di baseFormati di campionamento:

● 4:2:0: le componenti di crominanza hannometà della risoluzione verticale e orizzontaledella luminanza;

● 4:2:2: le componenti di crominanza hanno

la stessa risoluzione verticale della luminanza e metà di quella orizzontale;

● 4:4:4: le componenti di crominanza hanno la stessa risoluzione verticale e orizzontale della luminanza;

MPEG-4 AVC/H.264 - Profili

Definiscono gli strumenti (codificatori entropici, formati di campionamento, # bit per campione, tipi di frame, tecniche di resistenza agli errori, tipi di trasformazioni, ecc...) utilizzabili in fase di codifica/decodifica della sequenza video.

Abbiamo 4 profili base: ● Baseline Profile;● Constrained Baseline Profile;● Extended Profile;● Main Profile;

MPEG-4 AVC/H.264 - Profili

Le varie estensioni dell'MPEG-4 Part 10 hanno introdotto nuovi profili:

Fidelity Range Extension, introduce 8 nuovi profili basati sul Main Profile (4 principali e 4 derivati dai primi). Principali: ● High Profile;

● High 10 Profile;

● High 4:2:2 Profile;

● High 4:4:4 Profile;

MPEG-4 AVC/H.264 - ProfiliFidelity Range Extension;

Derivati: ● High 10 Intra Profile; ● High 4:2:2 Intra Profile; ● High 4:4:4 Intra Profile; ● CAVLC 4:4:4 Intra Profile;

MPEG-4 AVC/H.264 - Profili

Scalable Video Coding introduce 3 nuovi profili:

● Scalable Baseline Profile;

● Scalable High Profile;

● Scalable High Intra Profile;

Derivati rispettivamente dal Baseline Profile, High Profile, High 10 Intra Profile;

MPEG-4 AVC/H.264 - Profili

L'ultima estensione introdotta è stata il Multiview Video Coding introducendo gli ultimi 2 profili dello standard (derivati dall'High Profile):

● Stereo High Profile;

● Multiview High Profile;

MPEG-4 AVC/H.264 - Livelli

I livelli limitano i valori che alcuni elementi del video codificati possono assumere. I più importanti tra questi sono:

● Il massimo numero di macroblocchi (per secondo/frame).

● Il bitrate massimo che può avere un video (dipende dal

profilo che si sta utilizzando).

● La massima risoluzione di un video per una determinata

frequenza di frame.

Esistono 16 livelli, solo 5 sono primari, gli altri sono loro

evoluzioni.

MPEG-4 AVC/H.264 - Inter Prediction

Codifica di un frame basandosi su uno o più frame precedenti o successivi al frame corrente.

Tecnica basata sulla compensazione del moto:

Ogni frame utilizzato per effettuare la predizione è chiamato frame di riferimento, e il numero dei frame di riferimento utilizzati dipende dal livello in uso.

Un vettore di moto viene utilizzato per ogni partizione del macroblocco.

Viene effettuala l'interpolazione dei pixel per raggiungere un'alta precisione per i pixel (1/4 per luma e 1/8 per croma).

MPEG-4 AVC/H.264 - Inter Prediction

Particolare attenzione è necessaria prestare all'interpolazione dei pixel del luma che viene eseguita in due passi: 1. Utilizzo del Finite Impulse Response. [Filtraggio di un dato

pixel tra due campioni interi utilizzando un dato kernel].

2. Media dei valori vicini presi in qualunque direzione se il pixel non si trova tra 1/2 pixel ed un pixel intero, altrimenti viene effettuata la media dei soli due valori sopraccitati.

Se un macroblocco può essere predetto perfettamente dai suoi vicini la sua predizione viene saltata [Skip Mode];

MPEG-4 AVC/H.264 - Inter PredictionEsistono 3 tipi di frame:

● I-Frame:Codificati con la predizione spaziale, utilizzo di blocchi 4x4 o 8x8.

● P-Frame:Codificati a partire da I-Frame o P-Frame già codificati, utilizzo di compensazione del moto e predizione pesata (aggiunta di pesi alla compensazione del moto).

● B-Frame:Bidirectional Frame, codificati a partire da I-Frame o P-Frame in entrambe le direzioni, utilizza due vettori di moto e una predizione pesata modificata. [Il codificatore può regolare i valori dei pesi scelti]

MPEG-4 AVC/H.264 - Inter PredictionI frame non hanno un ordinamento arbitrario, sono presenti varie strutture: ● Basso ritardo, storage minimale; [Basso ritardo,

occupazione di memoria minimale, bassa efficienza di compressione;]

● Frame di riferimento multipli; [Elevata efficienza di

compressione, elevato tempo di attesa e elevata occupazione di memoria;]

MPEG-4 AVC/H.264 - Inter Prediction● Struttura gerarchica; [Migliora l'efficienza di compressione i

frame vengono codificati con una struttura ad albero]

● GOP; [Maggiormente utilizzata, elevata efficienza di

compressione, alto ritardo e elevata occupazione di memoria]

MPEG-4 AVC/H.264 - Inter Prediction

Per la GOP l'ordine dei frame in fase di codifica è diverso da quello in fase di decodifica, è necessario avere i frame di riferimento prima di poter decodificare tutta la sequenza video.

MPEG-4 AVC/H.264 - Inter PredictionDue frame speciali sono utilizzati nello standard:

SP/SI-Frame: Simili ai frameI e P, ma permettono l'accesso casuale al video e di ricostruire il campione utilizzando frame di riferimento diversi in fase di predizione. E' necessario creare punti di switching per ogni operazione da eseguire con ogni frame di questo tipo. Gli SP-Frame utilizzando la predizione del moto sono adatti per l'accesso a sequenze video con scene simili, mentre gli SI-Frame permettono l'accesso efficiente a scene completamente diverse da quella attuale utilizzando la predizione spaziale.

MPEG-4 AVC/H.264 - Intra Prediction

Predizione a partire dai valori dei pixel vicini ai pixel da codificare. Esistono 3 diverse grandezze per i macroblocchi: ● Predizione con macroblocchi 16x16:

La predizione non avviene su un pixel arbitrario, ma viene scelto di volta in volta quello più adatto tra 4 differenti modalità: Verticale, Orizzontale, DC, Bidimensionale;

● Predizione con macroblocchi 8x8; ● Predizione con macroblocchi 4x4:

La predizione può avvenire con 9 modalità diverse: Verticale, Orizzontale, DC, 4 diverse direzioni diagonali;

MPEG-4 AVC/H.264 - Quantizzazione

Utilizzo di un quantizzatore scalare, fase estremamente sofisticata perchè occorre evitare divisioni ed operazioni in virgola mobile (non intere) e includere le matrici di pre e post scalatura. Supporto fino a 52 passi di quantizzazione.

Differenti paremetri di quantizzazione per luma e croma, il QP del croma dovrebbe essere fatto derivare dal QP del luma.

Utilizzo della Trasformata Hadamard e Trasformata Coseno Discreta Intera per ottenere i coefficienti da quantizzare.

MPEG-4 AVC/H.264 - QuantizzazioneQuantizzatore scalare: Processo non (perfettamente) reversibile. Viene utilizzato un quantizzatore in avanti (FQ) in fase di codifica e un quantizzatore inverso (IQ) in fase di decodifica.

L'FQ trasforma i valori che approssimano la zero in valori uguali a 0 non essendo significativi.

Il valore di QP è fondamentale:● QP grande: alta compressione, ma approssimazione

grossolana del segnale originale;● QP piccolo: bassa compressione, ma approssimazione

migliore del segnale originale;

MPEG-4 AVC/H.264 - Quantizzazione

Quantizzazione inversa:

Utilizzo del fattore di pre-scalatura e di una costante di valore 64 per evitare errori di arrotondamento;

Il risultato subirà l'operazione di trasformazione inversa per poi essere diviso (utilizzando moltiplicazioni e shift a destra) per la costante precedentemente introdotta.

MPEG-4 AVC/H.264 - Quantizzazione

Vengono utilizzate la trasformata Hadamard e la trasformata Coseno Discreta Intera.

Modalità di trasformazione: ● Trasformazioni per macroblocchi 16x16 utilizzando

sottoblocchi 4x4. (Intra-Mode) ● Trasformazioni per sottoblocchi 2x2 di crominanza.

● Trasformata Coseno Discreta (DCT) per tutti gli altri blocchi

4x4.

MPEG-4 AVC/H.264 - Quantizzazione

Trasformazioni per macroblocchi 16x16 utilizzando sottoblocchi 4x4. (Intra-Mode): In fase di codifica: 1. Utilizzo della DCT; [Otteniamo Wd]2. I blocchi ottenuti sono sottoposti alla trasformata Hadamard; In fase di decodifica:

3. Utilizzo della trasformata Hadamard Inversa;4. Rescaling;5. Utilizzo della IDCT;

MPEG-4 AVC/H.264 - Quantizzazione

Trasformazioni per sottoblocchi 2x2 di crominanza:

Identica alle trasformazioni di blocchi 4x4;

Immagine riassuntiva della fase di quantizzazione

MPEG-4 AVC/H.264 - Quantizzazione

Trasformata Coseno Discreta per tutti gli altri blocchi 4x4:

● La DCT è modificata utilizzando solo trasformazioni intere in modo che non sia possibile avere perdita di precisione in fase di decodifica;

● Nessuna discrepanza tra la trasformata in fase di codifica e la sua inversa in fase di decodifica;

● Possono essere utilizzate solo addizioni e shift;● Le operazioni inverse possono utilizzare solo operazioni

aritmetiche a 16-bit, con una sola moltiplicazione per coefficiente

MPEG-4 AVC/H.264 - Codifica entropica

Utilizza "Codici a Lunghezza Variabile (VLC)" e la "Codificia aritmetica" modificati per adattarsi al contesto del video:

● Context-Adaptive Variable Length Coding (CAVLC)

Utilizzo intelligente dei coefficienti dei blocchi quantizzati. Utilizzo di quattro look-up table per il luma, ne viene utilizzata una in base al numero dei coefficienti non zero presenti

MPEG-4 AVC/H.264 - Codifica entropica● Context-Adaptive Binary Arithmetic Coding (CABAC)

Stima locale basata sull'elemento da codificare. Codifica in quattro fasi:

1. Binarizzazione: I valori vengono resi in binario, i segni non vengono presi in considerazione (bypass coding);

2. Selezione del modello del contesto: probabilità di un modello di essere scelto [range di probabilità 0 - 1];

3. Codifica aritmetica;4. Aggiornamento delle probabilità;

MPEG-4 AVC/H.264 - Codifica entropica● Exp-Golomb Coding:

I dati sono tenuti in una tabella, all'aumentare dell'indice aumenta la lunghezza della codeword.

Codeword: [N zeri] 1 [N-bit informazione]

MPEG-4 AVC/H.264 - Codifica entropica

Codifica:Non necessita di look-up table, viene utilizzato il seguente algoritmo:M = floor(log2(code_num+1)); INFO = code_num+1-2M

Decodifica: ● Vengono contati quanti zero ci sono prima dell'1;● Si ignora 1;● Lettura degli N bit informazione;● Viene trovato il code_num = 2M+INFO-1

MPEG-4 AVC/H.264 - Codifica losslessSe la codifica risulta inefficiente viene utilizzato un metodo lossless tra: ● I-PCM: nessuna predizione, trasformazione e

quantizzazione; video codificati con una qualità percettiva molto alta e un fattore di quantizzazione estremamente basso / utilizzo di H.264 come contenitore per video non compressi. [Altamente inefficiente];

● Transform-bypass: nessuna trasformazione e

quantizzazione; [Efficiente con predizione temporale]

MPEG-4 AVC/H.264 - Filtro di deblocking

Riduce l'effetto di distorsione con smussamento dei contorni.

Il frame filtrato è utilizzato come riferimento per altri frame.

Il filtraggio viene applicato a sottosblocchi 4x4 in ogni direzione e per ogni componente dello spazio colore

Filtraggio di max 3 campioni per lato.Il filtro dipende dal quantizzatore in uso, modalità di codifica dei blocchi vicini e il gradiente dell'immagine lungo i bordi.

MPEG-4 AVC/H.264 - Filtro di deblocking

Durezza del filtro (bS):

Scelta del filtro: p e q = insieme dei campioni filtrati;Un gruppo di campioni è filtrato solose:● bS > 0;● | p0 – q0 | < α AND | p1 – p0 | < ß AND | q1 – q0 | ≤ ß

α e ß aumentano all'aumentare del QP di p/q

MPEG-4 AVC/H.264 - Video interlacciati

Video diviso in field (pari/dispari). Vengono scansionate prima le linee pari e poi quelle dispari.

MPEG-4 AVC/H.264 - Video interlacciati

Due tecniche: ● Macroblock Adaptive Frame Field (MBAFF):

16 campioni per luma in larghezza e 32 in altezza, oguno processato come una coppia di macroblocchi. Viene scelto ogni volta se codificare le coppie come macroblocchi o come field;

Ogni gruppo di field va considerato come un'unica immagine

MPEG-4 AVC/H.264 - Video interlacciati

● Picture Adaptive Frame Field (PicAFF): Sceglie di volta in volta se trattare le field di un frame come immagini di riferimento separate oppure come un'unica immagine di riferimento. Risulta essere più veloce di MBAFF, ma richiede una maggiore quantità di risorse per poter funzionare.

MPEG-4 AVC/H.264 - Scansione video

Dipende dalla modalità in cui sono utilizzate le slice:

Macroblocchi: Scansione a zig-zag

Field: Scansione alternativa

MPEG-4 AVC/H.264 - Error resilienceTecniche principali:

● Redundant Slice:Slice contenenti informazioni rindondanti, vengono scartate in fase di decodifica a meno che i dati non rindondanti siano danneggati, abbassa le performancedi compressione.

● Arbitrary Slice Order (ASO):Le slice sono ordinate in modo diverso da quello arbitrario.

MPEG-4 AVC/H.264 - Error resilience

● Flexible Macroblock Order (FMO):Un macroblocco viene assegnato a più di una slice, ognuna usa un sottoinsieme del macroblocco.

● Data Partitioned Slices:

Un dato è codificato in tre partizioni A, B, C ognuna contenente un sottoinsieme del dato primario.

MPEG-4 AVC/H.264 - Strutturazione Struttura gerarchica:

MPEG-4 AVC/H.264 - Trasporto dei dati

Ogni NAL contiene un Raw Byte Sequence Payload (RBSP). contenente tutte le informazioni sugli elementi.

I trailing bits sono aggiunti per consentire al payload di avere una numero intero di bit

MPEG-4 AVC/H.264 - Trasporto dei dati

Aggiunta di NALU header (1 byte) o utilizo di Emulation prevention (evita che i bit del RBSP corrispondano all'inizio di un'altra NALU (Start Code Prefix)

MPEG-4 AVC/H.264 - Trasporto dei dati

La trasmissione avviene tramite un protocollo di trasporto in cui la NALU si trova tra l'header e il trailer;O tramite bitestream dove ogni NALU viene trasmessa sequenzialmente e divise dallo Start Code Prefix.

MPEG-4 AVC/H.264 - Hardware

Può avere un supporto da hardware specifici per semplificare i processi di codifica/decodifica: ● FPGA (Field Programmable Gate Array): chip programmabile

per supportare H.264 ● ASIC (Application Specific Integrated Circuit): chip specific

purpose in cui è possibile integrare un codificatore H.264

MPEG-4 AVC/H.264 - Evoluzione

Lo standard nel corso degli anni ha subito notevoli evoluzioni. Grande importanza hanno le tre estensioni principali:

● Fidelity Range Extensions (FRExt):Integrata completamente nell'AVC introduce i profili High;

● Scalable Video Coding (SVC);

● Multiview Video Coding (MVC);

MPEG-4 AVC/H.264 - Evoluzione

Scalable Video Coding (SVC):● Trasmissione simulcast;

Il video è codificato/decodifica a differente qualità per ogni trasmissione. Enorme ridondanza.

MPEG-4 AVC/H.264 - Evoluzione

Scalable Video Coding (SVC):● Trasmissione scalare;

Il video è codificato una sola volta diviso in livelli, con diversa informazione. Ogni decodificatore dal livello 1 utilizza i livelli precedenti per effettuare la decodifica completa.

MPEG-4 AVC/H.264 - Evoluzione

Scalable Video Coding (SVC):● Trasmissione scalare;

Il video è codificato una sola volta diviso in livelli, con diversa informazione. Ogni decodificatore dal livello 1 utilizza i livelli precedenti per effettuare la decodifica completa.

MPEG-4 AVC/H.264 - Evoluzione

Tre gradi di scalabilità: 1. Scalabilità temporale: Il livello base e codificato alla piu bassa

risoluzione temporale, e all'aggiunta dei livelli aumenta il frame rate.

2. Scalabilità spaziale: Il livello base e codificato alla piu bassa risoluzione spaziale, e all'aggiunta dei livelli aumenta la risoluzione spaziale della sequenza codificata.

3. Scalabilità qualitativa: Il livello base e codificato alla piu bassa qualita utilizzando un determinato QP, aggiungendo livelli aumenta la qualita della sequenza codificata.

MPEG-4 AVC/H.264 - Evoluzione

MPEG-4 AVC/H.264 - Evoluzione

Scalabilità temporale:

MPEG-4 AVC/H.264 - Evoluzione

Scalabilità spaziale:

MPEG-4 AVC/H.264 - Evoluzione

Scalabilità qualitativa:

MPEG-4 AVC/H.264 - Evoluzione

Scalabilità combinata:

MPEG-4 AVC/H.264 - Evoluzione

Multiview Video Coding:

Incorpora in un solo video riprese multiple della stessa scena. La scena e dunque vista come un insieme di tante scene, riprese da punti di vista differenti.

I vari punti di vista della scena presentano un certa ridondanza

MPEG-4 AVC/H.264 - EvoluzioneMultiview Video Coding: Predizione semplice Predizione complessa

MPEG-4 AVC/H.264 - EvoluzioneE' stato necessario effettuare dei cambiamenti nella struttura del bitstream ● L'SPS specifica in aggiunta le viste e i frame di riferimento.

● RPL migliorata per includere il supporto per la predizione inter-vista.

● L'ordine delle NALU e modificato per permettere l'introduzione del Prefix NALU contenente informazioni aggiuntive sulla vista base.

● La numerazione delle immagini e gli indici di riferimento

sono stati modificati per aggiungere il supporto alle viste multiple.

MPEG-4 AVC/H.264 - Confronto tra standard

H.264 permette di ridurre notevolmente le dimensione dei file video digitali (-80% rispetto al formato Motion JPEG e fino a -50% rispetto allo standard MPEG-4) senza intaccare la qualita delle immagini.

Confronto tra la velocita di trasmissione in bit di un flusso video della durata di 115 secondi offerto dai vari standard di compressionevideo a parita di qualita delle immagini. I codificatori che utilizzano lo standard H.264 sono tre volte piu efficienti rispetto a quelli che utilizzano lo standard MPEG-4 senza compensazione del movimento e fino a sei volte piu efficienti rispetto allo standard Motion JPEG

MPEG-4 AVC/H.264 - Confronto tra standard

MPEG-4 AVC/H.264 - Confronto tra standard

MPEG-4 AVC/H.264 - Confronto tra standard

MPEG-4 AVC/H.264 - Test dello standardCompressione di un video in tre diversi formati AVC, MPEG-4, MPEG-2. (Informazioni ricavate dall'applicazione mediainfo) Originale AVC MPEG-4 ASPLa conversione è stata realizzata con Avidemux

MPEG-4 AVC/H.264 - Test dello standard(Mancano i risultati di MPEG-2 dato che il tempo di conversione era > 8 minuti ed inefficiente)

Impostazioni AVC:● Vettori di moto massimi 16. ● Direzione di predizione: spaziale; ● Predizione pesata per B-frame; ● Partizioni 8x8 DCT spaziale. ● 8x8, 8x16, 16x8 P-frame e B-Frame per Intra-predizione. ● 8x8, 4x4 intra-predizione. ● CABAC. ● Filtro di deblocking con durezza 0 (loop filter). ● B-Frame consecutivi massimi 3, I-Frame con GOP da 0 a 250 massimo einserimento di un I-

Frame ogni 40 frame. ● Stima della crominanza. ● QP minimo 10, massimo 51. ● Passi di quantizzazione 4. ● Codificatore utilizzato x264.

Il video con codifica AVC ha utilizzato un profilo High e livello 4.0 ha un bit rate stimato tra i 5000 - 8999 kbps (secondo i dati raccolti dal programma con cui e stata effettuato il test visivo VLC), il tempo di conversione e di ~1:30 minuti e le dimensioni sono state ridotte ben del 44% essendo passate da 34.4 MB a 15.3 MB.

MPEG-4 AVC/H.264 - Test dello standard Impostazioni MPEG-4 ASP:

● Quantizzatore costante. ● Quattro vettori di moto. ● QP minimo 2, massimo 31. ● Codificatore utilizzato avcodec.

Il video codificato con MPEG-4 ASP invece presenta un aumento della dimensione da 34.4 MB a 36.4 MB dovuta all'aumento spropositato del bitrate nel video che va da un minimo di ~8000 kbps ad un massimo di ~25999 kbps. Il tempo di compressione e stato di poco minore a quello ottenuto con AVC ed e di ~1:00 minuto. Impostazioni MPEG-2:

● Quantizzatore costante. ● GOP da 12 frame, ● Scansione progressiva. ● Bit rate massimo 2400 kbps. ● Codificatore utilizzato avcodec.

MPEG-4 AVC/H.264 - Ambiti di utilizzoUtilizzato nell'industria cinematografica e videoludica.

Utilizzato come formato di compressione standard per i Blu-Ray Disc.

Trasmissione di contenuti in streaming sul web: youtube (Adobe Flash e HTML5). Per videoconferenza: Skype

Servizi di trasmissione per DVB e SBTVD, diretta-broadcast servizi televisivi via satellite, via cavo.