capire mpeg sebastian sylwan seba@dsi.unimi.it polo didattico e di ricerca di crema 24/4/99

Post on 01-May-2015

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CAPIRE MPEGSebastian Sylwan

seba@dsi.unimi.it

Polo Didattico e di Ricerca di Crema24/4/99

Concetti base del video digitale

Frame Interlacing Field Pixel Risoluzione Componenti Campionamento Luma SVP

RGB YUV / YCbCr PAL / NTSC 4:4:4 / 4:2:2 / 4:2:0 CIF / SIF SNR Quantizzazione Chroma Broadcast

Vi sono familiari tutti i seguenti termini ?

MPEG

Motion

Pictures

Expert

Group

MPEG-1 1988-90

MPEG-2 1990-94 MPEG-4 1998MPEG-7 2000 (?)

Aggiunte rispetto a MPEG-1

Ottimizzato per il mondo BroadcastDiversi Aspect-ratio (16:9 HDTV WideScreen)Macroblock 4:2:2 4:4:4 InterlacingInformazioni sull’origine del materiale Video

(telecine, 3:2 pulldown, NTSC, PAL)Scalabilità del segnale VideoSistema di trasporto TS/PSMaggiore flessibilità nella compressione

(Variable-Length tables, Scale Factor, ½ px Motion Vectors )

Audio multilinguale

Suddivisione dello Standard

S ys tem sV id eoA u d ioC om p lian ceS oftw are S im u la tionD S M -C CD ig ita l S to rag e M ed ia -C om m an d an d C on tro lR ea l T im e In te rfacefo r S ys tem D ecod ersD S MR eferen ce S c rip t F orm at

M P E G - 2

MPEG-2 VideoObiettivi:

Descrivere un formato che descriva un Bitstream Video codificatoNon definire il processo di codificaDescrivere il processo di decodifica (maggiore flessibilità)Mantenere lo standard estensibile per essere utilizzato in un ampio range di applicazioni

Trasmissione via Satellite TV via cavo TV Interattiva

MPEG-2 VideoParti componenti lo standard:

Definizioni di baseSintassi del segnale Video MPEG-2Descrizione SemanticaProcesso di decodificaEstensioni e ScalabilitàProfili e LivelliAnnessi

MPEG-2 VideoDefinizioni di base

Frame 3 matrici (Luma, 2 Chroma)

Picture Componente codificata (può non avere pixel)

Block 8 x 8 pixels (Luma, 2 Chroma)

MacroBlock 4 Blocchi di Luma + n di Chroma

Slice “Fetta” contiene gruppi di MacroBlocks

GOP Group of Pictures (tipicamente 12 Pictures)

I,B,P Pictures Intra-coded, Bidirectionaly Predicted, Predictive

Fields Interlacing

Overview

Principio di funzionamento

Sfrutto: Ridondanza spaziale Ridondanza temporale Caratteristiche Psico-visive

Prima compressione nel sottocampionamento (4:2:2, 4:2:0)

Bassa sensibilità alle alte frequenze sul coloreLivello di accettazione + alto per il rumore

alle alte frequenze

Strumenti di compressione

Mediante: DCT-Quantizzazione-VLCoding Huffman Coding Motion Estimation

} I-Pictures

B-Pictures / P-Pictures

FourierOgni forma d’onda periodica (qualsiasi se consideriamo periodo ),

può essere espressa come somma di componenti sinusoidali, ognuna espressa con la sua ampiezza, frequenza e fase.

Trasformata Coseno Discreta

Porta dal dominio del tempo al dominio delle frequenze. divide la forma d’onda nelle sue componenti frequenziali, considerando un rispecchiamento della forma d’onda per eliminare le componenti sin()La DCT in se non effettua alcuna compressione (anzi). Semplicemente trasforma i pixel sorgente in una forma nella quale è possibile identificare la ridondanzaNon tutte le frequenze spaziali sono simultaneamente presenti, quindi all’uscita della DCT avremo alcuni coefficienti con un valore rilevante, ma la maggior parte sarà molto prossima a zero.

Componenti frequenziali

0,2657 x =

0,2322 x =

0,0791 x =0,2861 x =0,2446 x =0,1286 x =0,1329 x =0,0993 x =0,1645 x =

Combinando linearmente le varie componenti posso ottenere qualunque patternIl primo coefficiente mi dà la luminosità generale del bloccoGli altri rappresentano le intensità delle diverse componenti frequenzialiLa maggior parte delle componenti è prossima a zero e quindi non le considero

Capiamo la DCT

Quantizzazione Questo è il processo che

introduce perdita di qualità del segnale video

Prendo i coefficienti usciti dalla DCT e li divido per una matrice di quantizzazione

Valori sempre più alti man mano che cresce la frequenza

Fattore di scala Ottengo molti coefficienti

a 0 Li leggo a zig-zag

8 16 19 22 26 27 29 34

16 16 22 24 27 29 34 37

19 22 26 27 29 34 34 38

22 22 26 27 29 34 37 40

22 26 27 29 32 35 40 48

26 27 29 32 35 40 48 58

26 27 29 34 38 46 56 69

27 29 35 38 46 56 69 83

RL Encoding

Run = numero di zeri prima di un coefficiente non-zeroLevel = in MPEG Video è il coefficiente della componente frequenzialeDefinisco sequenze corte per le +comuni combinazioni di Run e Level

Tra 2 e 13 bit Non tutte le combinazioni sono codificate Se trovo una combinazione non in tabella, mando cod. escape, R ed L.

Motion Estimation

In realtà la grossa riduzione del Bitrate si ha sfruttando la ridondanza temporale: Una volta codificata un’immagine di riferimento come spiegato

prima (I-Frame) cerco similarità con i frame adiacenti. Innanzitutto controllo che il macroblocco in esame non sia

rimasto identico (o quasi) nel frame successivo, nel qual caso non lo invio.

Altrimenti, cerco nelle vicinanze per identificare se si è mosso. Se lo trovo, invio un vettore di movimento.

Codifico secondo lo schema visto in precedenza solo se non ho trovato il macroblocco da nessuna parte nel frame.

Se sono tra una I e una P-Picture, interpolo i vettori di movimento

Non è la panacea, però. Se commetto un piccolo errore e calcolo i frame successivi solo partendo dal precedente, l’errore si propaga rapidamente.

Motion Estimation

Per risolvere il problema si creano GOP (Group Of Pictures) con diversi tipi di Picture all’interno.

Intra-coded PicturePredictive coded Picture

Bi-directionally coded Picture

Motion Estimation

Come avviene la ricerca del

Macroblocco ?Block Matching Enorme quantità di calcolo Fatta a diversi livelli di dettaglio

Phase correlation Trasformata di Fourier sui

blocchi da comparare Sottraggo le componenti

frequenziali Antitrasformata di Fourier Ottengo dei picchi che rivelano

la direzione e l’entità dei movimenti (ma non la loro posizione)

Block Matching ma solo in direzioni e distanze predeterminate.

Phase CorrelationIn realtà il processo avviene in 2 dimensioni, per cui ottengo una superficie di correlazione con tanti picchi quanti sono i movimenti nell’area che sto esaminando.È importante capire che con la correlazione di fase ottengo informazione sull’entità e la direzione del movimento, ma non so dove nell’immagine questo avvenga, dovrò quindi cercarlo, ma l’efficienza della ricerca è incredibilmente superiore a prima.

Slices

Non sono necessarie per la compressione, ma sono molto utili nel caso di errori nel canale.Risincronizzano il flusso videoPermettono di definire aree di interesse

Profili e LivelliGrande varietà di

applicazioniComplessitàCosto enorme per

supportare tutto lo standard

Implemento solo alcune funzioni (Profilo)

Profili LivelliSimple Profile Low Level (LL)

Main Profile (MP) Main Level (ML)

4:2:2 High 1440 Level (H14)

SNR Scalable Profile (SNR) High Level (HL)

Spatial Scaleable Profile(Spatial)High Profile (HP)

MPEG-2Feature

SP MP SNR Spatial HP

ChromaFormat

4:2:0 4:2:0 4:2:0 4:2:0 4:2:24:2:0

PicureType

I,P I,P,B I,P,B I,P,B I,P,B

Scaleable No Si Si Si Si

ScaleableMode

- - SNR SNRSpatial

SNRSpatial

Campionamenti tipici

Profili

Livelli

Riassumendo...

Sintassi di MPEG-2 Videovideo_sequence() {

next_start_code()

sequence_header()

if(nextbits)==extension_start_code) {

sequence_extension()

do {

extension_and_user_data

do {

if (nextbits())==group_start_code) {

group_of_pictures_header()

extension_and_user_data (*)

}

picture_header()

picture_coding_extension()

extension_and_user_data (**)

picture_data()

} while ((nextbits()==picture_start_code) || (nextbits()==group_start_code))

if (nextbits() !=sequence_end_code) {

sequence_header()

sequence_extension()

}

}while (nextbits() != sequence_end_code)

}

else {

MPEG-1

}

sequence_end_code

}

Strutture sintattiche

video_sequence Contiene Pictures ed estensionisequence_header Dimesioni Immagine e FrameRate, matrici di quantizzazione

specialisequence_extension profilo/livello, Formato Chroma, se non esiste il flusso è MPEG-1GOP_header Timecode, informazioni per l’editingpicture_header dice se è I,B o P Picture. Contiene riferimento temporale (all’interno del GOP)picture_coding_extension Interlacing, PAL/NTSCpicture_data n slicesslice Posizione verticale, partizionamento, Fattore di quantizzazione, n

macroblockmacroblock Fattore di quantizzazione (opz.), blocchi, macroblock_modes,

motion_vectorsmacroblock_modes I,B o P macroblock (in una I-Picture, posso avere I o P Mb, in una

B-Pic ho I,B o P Mb)motion_vectors vettori di movimento per il Mblockcoded_block_pattern Quali macroblocchi sono effettivamente codificati (e non tutto a 0)block Coefficienti DCTuser_data eventuali dati utentesequence_display_extension Formato video e attributi coloresequence_scalable_extension Che tipo di scalabilità viene usataquant_matrix_extension Matrici eventualmente definite dall’utente per la dequantizzazionepicture_display_extension da utilizzare al momento di mostrare il flussopicture_temporal_scalable_extension estensioni temporali (maggior frame-rate)picture_spatial_scalable_extension estensioni spaziali (maggior risoluzione)copyright_extension Originale o copia

Sintassi schematizzata

ScalabilitàBase Layer - Enhancement Layer

Spaziale:Diverse risoluzioni nello stesso flusso video(es. MPEG-1 + MPEG-2, ML@MP + HL@HP)

Temporale:Diversi Frame Rate

SNRNuovi coefficienti di quantizzazione (o backup)

PartitioningPriority Breakpoint

AudioLayers:

1 1:4 2 1:6 3 1:10

Sfrutto: Psico

acustica

Mediante: Sub-band

Masking

Audio Additions Half Sample Rate

enhancementNon uso tutto lo spettro

disponibile dimezzando la frequenza di campionamento

Multi Channel ExtensionFino a 5 canali surround

Adaptive Multichannel Prediction

Utilizzo le informazioni di alcuni canali (L+R) per predirre gli altri (Ls Rs C)

Costruiamo l’ Elementary

StreamApplichiamo le regole sintattiche per costruire uno stream

elementare che contiene tutti gli

elementi del Video compresso

SystemsParte dello standard che si occupa del

trasporto e multiplexing dei dati. Distinguo:

Program Stream (media)Transport Stream (network)

Evito così di dipendere dalle tecnologie di rete.

Packet Video “Colla” tra MPEG Video ed MPEG Audio

Systems

Program Stream Strutture dati lunghe low-error environments Sincronizzazione A/V Private Data

Transport Stream Strutture dati corte e a

lunghezza fissa (pacchetti da 188 byte)

Multiplexing / Demultiplexing Sincronizzazione A/V Private Data No error recovery Channel guide Informazioni di

temporizzazione nei pacchetti Sincronizzazione Jitter correction Supporto alla Crittografia

(PPV)

Costruiamo la sintassi

Il bitstream di uscita di un compressore Audio o Video è un Elementary Stream (diviso in access units, frames)

Questo stream viene poi suddiviso in Pacchetti e forma un Packetized Elementary Stream (fatto di PES Packets)

• PES Packet Payload (Dimensione Variabile=acces unit)• PES Packet Header

I PES vengono poi mappati in Transport Stream Packets (TSP)

• TSP Payload• TSP Header

Transport Streams

Esistono due tipi di Transport StreamsSPTS Single Program Transport Stream

• Contiene diversi PES che condividono tutti una base dei tempi comune.

• Può contenere più istanze di Audio, Video, Dati, ma tutti con la stessa Time-Base

MPTS Multiple Program Transport Stream• Multiplexing di diversi SPTS (bouqet)

Informazioni di sincronizzazione

Transport Stream I pacchetti TS contengono informaz. Di clock nei

seguenti field:Program Reference Clock (PCR) 42 bitsDecoding Time Stamp (DTS)Presentation Time Stamp (PTS).

È importante che durante la trasmissione venga mantenuta la sincronizzazione e il frame rate tra trasmittente e ricevente

Il PCR viene usato per sincronizzare i clock (27Mhz) di Tx ed Rx

DTS e PTS

Frame Reordering

Systems: Gerarchia della

Sintassi Mpeg_transport_streamTransport Packet

• Adaptation_Field• PES_packet• program_association

section• CA_section• TS_program_map_sectio

n• Private_section

PID Packet Identifier (cosa c’è nel pacchetto)

(opz.) Timestamp(PCR), Splicing, Priorità

StreamID(V/A/DSM), Crypt, PTS, DTS

PES (Packetized Elementary Stream)

TSP Format

Program Maps

Program Specific Information (PSI)

Corrispondenza tra Programma e pacchetto (PSI-PID)

DSM-CCUser-Network Session protocolUser-User Directory, Stream control, File accessInteractive and broadcast downloadBroadcast object carouselSwitched digital broadcast channel change protocol

Video on DemandData BroadcastBroadband Internet

Modello di riferimento per la

Trasmissione

MPEG-4 InterattivitàVLBR Video - Migliore compressione3D scenesNon-rectangular elementsRobustezzaScalabilitàEditingRandom-AccessHybrid, Natural and Synthetic Data coding

MPEG-7Descrizione standardizzata di diversi

tipi di contenuto multimediale.Associazione col contenuto stesso

per permettere una veloce ed efficiente ricerca su una grande quantità di dati

top related