...

Codifica Video H.261 H.263

by user

on
Category: Documents
32

views

Report

Comments

Transcript

Codifica Video H.261 H.263
RETI INTERNET MULTIMEDIALI
Codifica e Compressione del Video:
Introduzione, H.261 e H.263
Il documento è adattato da materiale cortesemente messo a disposizione dal
Prof. Stefano Paris
Introduzione
I formati di compressione per contenuti audio e
video introducono nuovi elementi per
aumentare il rapporto di codifica
 Codifica nello spazio e nel tempo
 Coordinamento per la sincronizzazione audio e video
Esistono numerosi standard specifici per diverse
applicazioni multimediali
 Internet streaming (Digital TV broadcasting, VoD, etc.)
 Video conference
Introduzione
Standard di compressione video
Standard
Applicazione
Rate
Motion JPEG
Camcoders
30 Mbps
Digital Video
Camcoders
25 Mbps
H.261
Video Interattivo su ISDN
64 kbps
H.263
Video Interattivo su reti a
pacchetto
64-384 kbps
MPEG-1
Streaming Video (VCR quality)
Fino 1.5 Mbps
352 x 240
MPEG-2
Streaming Video (Broadcast
quality)
4-15 Mbps
704 x 480
MPEG-4 (H.26L) Video su dispositivi low-rate
> 32 kbps
HDTV
20 Mbps
Televisione ad alta qualità
Raster
720 x 480
1920 x 1080
Standard codifica video
Gli standard della codifica video sono stati sviluppati
da ITU (organismo di stampo telefonico) e da ISO
(organismo di stampo informatico)
Standard codifica video
Transizione da MPEG-2 a H.264/AVC
 Miglioramento delle prestazioni 2:1
Nuova generazione H.265/HEVC in sviluppo
 30-50% miglioramento prestazioni
 Ancora più complesso
Introduzione
Standard delle dimensioni delle immagini
 Common Intermediate Format (CIF)
Formato Immagine
Matrice Luminanza (HxV) Bit Rate a 30 fps
SQCIF
128 x 96
4.4 Mbps
QCIF
176 x 144
9.1 Mbps
CIF
352 x 288
36.5 Mbps
4CIF
704 x 576
146 Mbps
16CIF
1408 x 1152
584 Mbps
Dimensione delle immagini
Gli standard hanno definito diverse
risoluzioni per le applicazioni TV,
HDTV e videoconferenza
Es. H.261 specifica l’impiego di
formati CIF e QCIF organizzati in un
modo ben definito
Risoluzione TV
GOB: Group Of Blocks
176 x 144
352 x 288
CIF
QCIF
VIDEO COMPRESSO
Motion JPEG, Digital Video
Motion JPEG
Motion JPEG è una semplice applicazione di JPEG per
realizzare video: non è standardizzata
Si codifica ogni frame della successione che
rappresenta il video con uno degli algoritmi JPEG
Il rapporto di compressione è molto contenuto in
quanto non si sfrutta il contenuto informativo
ridondante presente in frame successivi (codifica iterframe)
 Es. 30 fps  30Mbps
L’implementazione è molto semplice in quanto si
possono riutilizzare algoritmi e strutture dati di JPEG
 Semplifica editing, memorizzazione, reverse play
Motion JPEG
F4
F3
F2
F1
JPEG
Data Stream
Digital Video
Digital Video (DV) è una versione migliorata di Motion
JPEG utilizzato da videocamera
Viene eseguita un’ottimizzazione locale della tabella di
quantizzazione utilizzata per i coefficienti della DCT
per codificare più efficacemente parti del frame
Utilizza, come la televisione, frame composte da linee
interlacciate per migliorare la velocità di
visualizzazione
Produce un flusso dati con un rate di 25 Mbps, che
aumenta fino a 29 Mbps con l’aggiunta di tecniche di
correzione degli errori
Digital Video
http://www.broadcastpapers.com/whitepapers/PanasonicVideoCompBook.pdf
Digital Video
http://www.broadcastpapers.com/whitepapers/PanasonicVideoCompBook.pdf
Digital Video
http://www.broadcastpapers.com/whitepapers/PanasonicVideoCompBook.pdf
Digital Video
F4
F3
F2
F1
DCT
Xuv/Duv
Scaled DCT
Coefficients
Scaling
Coefficients
Duv
Digital Video
F1
8x8
F2
8x8
8x8 DCT
interleaved
Digital Video
F1
8x8
2-4-8-DCT
F2
8x8
Field 1
Field 2
Digital Video
http://www.broadcastpapers.com/whitepapers/PanasonicVideoCompBook.pdf
VIDEO CONFERENZA
H.261, H.263
Introduzione
H.261 e H.263 sono due standard ITU-T per
applicazioni di videoconferenza real-time in reti
con rate di trasmissione contenuti
 H.261 per connessioni a rate costante ISDN
 H.263 per reti a pacchetto
Entrambi utilizzano risoluzioni minori rispetto a
MPEG-1 e MPEG-2
Entrambi i formati di codifica appartengono ai
gruppi H.320 e H.323 definiti per multimedia
conference
Introduzione
A differenza degli standard MPEG, H.261 e H.263 sono
stati sviluppati per applicazioni interattive bidirezionali
 I ritardi in entrambe le direzioni devono essere comparabili
e contenuti
 Non si fa alcuna assunzione sulla tipologia di canale di
trasmissione (full-duplex, half-duplex, etc.)
La complessità implementativa per la codifica e la
decodifica deve rimanere contenuta
 Codifica e decodifica simmetriche
 DCT per compressione delle immagini e codifica motioncompensated inter-frame
H.261
H.261 supporta due tipi di risoluzione:
 CIF e Quarter CIF (QCIF)
 Le componenti di crominanza Cr e Cb hanno una
risoluzione dimezzata rispetto alla luminanza Y
Il frame rate nominale di H.261 è pari a 29.97 fps,
riducibile fino a una fattore 4
Resolution
CIF
QCIF
Component
Horizontal
Vertical
Luminanza
352
288
Crominanza
176
144
Luminanza
176
144
Crominanza
88
72
Applicazioni H.261
Videotelefonia:
 Risoluzione video e frame rate: CIF,QCIF; frame-rate (7.5), 10,
(25), 30 fps
 Bit-rate: 48-96kbit/s
 Audio bit-rate: 16-32-56-64kbit/s
Videoconferenza:
 Risoluzione video e frame rate: CIF; frame-rate (25), 30 fps
 Bit-rate: 320-1856 kbit/s
 Audio bit-rate: 64 kbit/s
Lavoro cooperativo:
 Risoluzione video e frame rate: QCIF; frame-rate (7.5), 10 fps
 Bit-rate: 48kbit/s
 Audio bit-rate: 16-32 kbit/s
Caratteristiche tecniche di H.261
Data rate (p x 64) kbps: 64Kbps (p=1) < data rate < 1920Kbps
(p=30)
Codifica ibrida DCT-DPCM
Codifica operante su macroblocchi 16x16:
 INTRA: codifica senza predizione
 INTER: codifica dell’errore di predizione dopo motion
estimation/compensation
• NB: Alcuni macroblocchi sono forzati alla sola codifica INTRA per evitare la
propagazione dell’errore, ma non è possibile navigare nella sequenza perché la
sola frame interamente codificata INTRA è la prima
Per i macroblocchi codifica INTER: motion estimation e motion
compensation su macroblocchi di 16x16 pixel; finestra di ricerca
+/-15 pixel
Trasformata DCT su blocchi 8*8 seguita da quantizzazione scalare
Codifica entropica: run-length seguito da codifica di Huffman
Strutture dati di H.261
11
3
GOB
QCIF
CIF
MB
Cb
Y
Cr
H.261 - Codifica
Inter-frame
JPEG
H.261 - Codifica
I dati che compongono l’immagine sono
elaborati in macro-blocchi:
 4 blocchi 8x8 dei coefficienti di luminanza Y
 1 blocco dei coefficienti di crominanza Cr
 1 blocco dei coefficienti di crominanza Cb
I macro-blocchi sono soggetti a due tipi di
codifica:
 Intra-frame: codifica spaziale
 Inter-frame: codifica temporale (motion prediction)
H.261 – Codifica Intra-frame
Ognuno dei blocchi 8x8 di luminanza e crominanza
 DCT: coefficienti trasformati con DCT
 Quantizzazione: output della DCT quantizzato
 Entropy coding: coefficienti quantizzati vengono codificati
utilizzando uno schema lossless
Il processo è del tutto simile a quello eseguito da JPEG
sequenziale
Una copia di ogni blocco viene ricostruita per ricreare
una copia del frame originale
 Rescaler: inverso della quantizzazione
 IDCT: inverso della DCT
H.261 – Codifica Intra-frame
H.261 – Quantizzazione
La quantizzazione in H.261 usa uno step_size costante per
tutti i coefficienti DCT in un macroblocco
Se usiamo DCT e QDCT per indicare i coefficienti DCT prima e
dopo la quantizzazione i coefficienti DC Intra mode valgono:



QDCT  round  DCT   round DCT
8
 step _ size 
Mentre gli altri coefficienti (AC):


QDCT   DCT    DCT 
 step _ size   2* scale 
In cui step_size è un intero ∈ [1,31].

H.261 – Codifica Inter-frame
La replica di ogni blocco ricostruita a partire dai
coefficienti quantizzati è inserita nel frame store
Dalle repliche dei blocchi si ricrea una replica del
frame originale
La replica del frame originale viene utilizzata come
riferimento dall’algoritmo di predizione per predire il
successivo frame
I dati trasmessi alla destinazione sono quindi composti
da:
 Coefficienti della DCT
 Dati di movimento generati dall’algoritmo di predizione
H.261 - Codifica Inter-frame
La compressione Inter-frame si basa sulla
compressione Intra-frame:
 Si codifica la differenza tra il frame corrente e quello
immediatamente precedente anziché i dati grezzi
Compressione Inter-frame
 Calcola le differenze tra blocchi dei due frame
 Utilizza motion estimation per codificare cambiamenti
minimi come un vettore
 DCT - Quantizzazione - Entropy Coding sulla matrice
che rappresenta le differenze
H.261 - Codifica Inter-frame
Generalmente l’informazione contenuta nel
frame ottenuto dalla differenza di due frame
successivi è nettamente inferiore a quella
contenuta nel secondo frame
 FD = F2 –F1
Il movimento aumenta le differenze tra due
frame successivi
 Codificare il movimento come un vettore
 Codificare le differenze del blocco spostato con il
classico schema DCT- Quantizzazione – Entropy
Coding
H.261 - Codifica Inter-frame
Per tutti i frame successivi al primo, si esegue una
predizione di ogni nuovo macro-blocco con uno dei macroblocchi nel frame precedente
L’algoritmo di motion-compensation si occupa di
determinare quale macro-blocco del precedente frame
rappresenta il miglior predittore per il frame corrente
 Macro-blocco composto da 256 (16x16) campioni di luminanza
e da 2x64 (2x8x8) di crominanza
H.261 individua il miglior predittore come il macro-blocco
del frame precedente che minimizza la differenza tra i
macroblocchi del frame corrente e quelli del frame
precedente
H.261 - Codifica Inter-frame
Per ogni macro-blocco viene generato un vettore
di movimento
L’algoritmo di predizione deve cercare tra tutti i
macro-blocchi del frame precedente quelli che
occupano una posizione vicina rispetto al macroblocco del frame corrente
 Non è detto che il macroblocco precedente scelto per
codificare il vettore indichi un movimento
 La ricerca del miglior predittore è un’operazione
complessa (richiede molta potenza di calcolo)
 Lo standard non specifica come eseguire la ricerca
H.261 - Codifica Inter-frame
L’algoritmo di predizione commette un errore di
predizione
 Errori dei valori di luminanza e crominanza tra il frame
corrente e quello predetto
 Errore codificato utilizzando lo schema DCT –
Quantizzazione – Entropy Coding
Il valore dell’errore determina l’informazione
trasmessa:
 Basso (ε < th1): solo vettore di movimento
 Medio (th1 < ε < th2): vettore di movimento ed errore di
predizione
 Alto (ε > th2): solo intra-frame (motion compensation
controproducente)
H.261 - Codifica Inter-frame
Difference image
(=
(with
0 without
motion)
motion
motion)
compensation)
DCTencoder
+ -
channel
DCTdecoder
Frame
Motion
store
compensation
Motion
estimation
Motion vectors
H.261 - Codifica Inter-frame
Stima del Moto
Informazione di moto per ogni macroblocco di 16*16
Vettore di movimento ottimo?
 Investigare tutte le posizioni in una finestra di ricerca;
 Selezionare quella con il minimo Mean Square Error;
 Vettore di movimento = traslazione corrispondente
Non standardizzato
Predizione e motocompensazione
Quando c’è movimento la semplice differenza tra frame
fallisce
Soluzione praticabile: dividere la frame in blocchi contigui
e non sovrapposti e descrivere il movimento di ogni blocco
Predizione del movimento e compensazione riducono
l’errore di predizione, aumentando la compressione
Predizione e motocompensazione
Schema a blocchi della codifica
H.261
Start Frame
Does the
macroblock need
to be forced intra?
yes
no
Integer Pixel
Motion Search
Macroblocks loop
Did the Motion
Estimation find a good
match?
no
yes
Encode INTRA
Encode INTER
End Frame
H.261 – Buffer Management
La quantità di informazione del flusso video
codificato varia nel tempo (tra frame successivi)
ed è funzione di diverse componenti:
 Complessità del frame
 Movimento
Il canale su cui viene trasmesso il flusso video ha
un rate di trasmissione costante (CBR)
 Il buffer può essere soggetto a overflow se non gestito
correttamente
H.261 – Buffer Management
L’algoritmo di gestione del buffer evita l’overflow
L’algoritmo agisce sugli intervalli di
quantizzazione modificando opportunamente i
coefficienti di quantizzazione
 Se la dimensione del buffer supera una determinata
soglia t1, la dimensione degli intervalli si allarga
• Aumenta il rapporto di compressione
• Diminuisce la qualità del video
 Se la dimensione del buffer scende sotto una soglia t2,
la dimensione degli intervalli si riduce
• Diminuisce il rapporto di compressione
• Aumenta la qualità del video
H.261 - Decodifica
Buffer
Compressed image data
Entropy
Decoder
Rescaler
IDCT
+
∑
Video Frame
+
Motion Vector
Motion
Compensation
Frame
Store
H.261 - Decodifica
Decodifica esegue le operazioni inverse della codifica
in ordine inverso
Vengono generati 2 frame
 I macro-blocchi degli errori sono decodificati utilizzando lo
schema Entropy Decoding – Rescaler – IDCT per generare
la replica del frame delle differenze
 Utilizzando l’ultimo frame decodificato e il vettore di
movimento contenuto nel frame corrente si genera un
frame di riferimento (motion-compensated reference
frame)
La somma dei due frame precedenti permette di
generare una replica del frame originale
H.261 – Schema completo
codificatore
H.261 – Schema completo
decodificatore
H.261 - Bitstream
Formato del flusso video codificato (bitstream)
H.261 - Bitstream
Struttura gerarchica
 Ogni frame contiene molti GOB (Group Of Block)
 Ogni GOB contiene a sua volta molti macro-blocchi
(4:2:0)
 Ogni macro-blocco contiene i 6 blocchi 8x8 di
luminanza e crominanza e il vettore di movimento
 Ogni blocco contiene i coefficienti della DCT codificati
GOB (Group of Blocks)
 Contiene diversi macro-blocchi
 Utilizzato per la sincronizzazione con il flusso video
Struttura video H.261 formato CIF
Ogni sequenza video è organizzata in frame
Ogni frame (o picture) è organizzata in:
 12 (2 x 6) Group of Block (punti di sincronizzazione) composti
ciascuno da 11x3 macroblock
• Macroblock (motion estimation) (4 luminance block + 2 chrominance
block, poichè 4:2:0)
– Block (DCT) (8x8 pixel)
Group Of Blocks
MacroBlock
DCT block
CIF (352x288)
(2 x 6) GOB ciascuno
(11 x 3) Macroblock
Totale frame
(22 x 18 Macroblock)
H.263
Evoluzione di H.261
 Definito per applicazioni con bassi rate di trasmissione
 Utilizzato in applicazioni Internet-based con vincoli stringenti sul rate
di trasmissione (es. Modem 28.8-56 Kbps)
Il progetto è derivato da H.261, ma sono introdotte nuove tecniche
per migliorare il rapporto di compressione
H.263 Versione 1 (1996) composto da una versione Baseline con
quattro opzioni negoziabili (Unrestricted Motion Vectors Mode,
Advanced Prediction Mode, PB Frame Mode, Syntax-based
Arithmetic Coding Mode)
H.263 Versione 2 (1998) e Versione 3 (2000), denominate anche
“H.263+” e “H.263++” comprendono la Versione 1 oltre ad altre
opzioni negoziabili che migliorano il rapporto di compressione e la
qualità del video su reti con trasporto inaffidabile (reti a pacchetto
e wireless)
H.263
H.263 utilizza half-pixel prediction per i vettori di movimento
(a differenza della full-pixel utilizzata da H.261)
 Il vettore di movimento può cadere tra due pixel (il cui valore è
ottenuto dalla loro interpolazione)
Sono definiti i seguenti 4 miglioramenti
 Unrestricted Motion Vectors (vettori di movimento che possono
cadere oltre la fine del frame)
 Arithmetic Coding
 Motion vector separati per ogni blocco di luminanza all’interno di un
macroblocco
 Bidirectional Coding
Si utilizzano tutti i 5 formati CIF
Formati H.263
Struttura video H.263
Ogni sequenza video è organizzata in frame:
 ...IPPPP…I... (alternanza di Intra Picture intercalate da Predicted Picture)
 Ogni frame è divisa in:
• Group of Blocks (punti di risincronizzazione). I GOB sono composti da un numero
variabile di macroblocks in dipendenza della risoluzione (i.e. per CIF: 1 GOB = 1 riga di 22
macroblock)
– Macroblock (motion estimation) (composto da 4 blocks of luminance + 2 blocks of
chrominance)
» Block (DCT) 8x8 pixel
Group Of Block
MacroBlock
DCT block
Schema a blocchi codifica H.263
baseline
Start Frame
I-picture
P-picture
MB-INTRA
Integer Pixel
search
MB-INTRA
Macroblocks loop
MB-INTER
Half-Pixel
search
MB-INTER
End Frame
MB-INTRA
Macroblocks loop
Confronto H.261 – H.263
H.263+ e H.263++
H.263+






Seconda versione di H.263
Ridefinisce l’unrestricted vector mode
Si usa la struttura Slice per rimpiazzare i GOB
Implementa scalabilità temporale, SNR e spaziale
Supporta modalità evolute per le PB-frame
Usa filtri per ridurre effetto dei blocchi
H.263++
 L’estensione più recente
 Enhanced Reference Picture Selection (ERPS)
 Data Partition Slice (DPS)
Fly UP