Formati video Video come sequenza di immagini Un segnale video può essere visto come la rapida successione di immagini statiche Se le immagini vengono visualizzate con una cadenza sufficientemente rapida, il moto degli oggetti appare fluido Standard televisivi Un qualsiasi filmato è costituito da molte fotografie (fotogrammi o frame) messe in rapida sequenza. I classici televisori (ed anche i monitor per PC) hanno un rapporto larghezza/altezza dell’immagine (aspect ratio) 4:3. Ogni immagine trasmessa in TV è costituita da 30 (o 29.97 per i dispositivi a colori) frame al secondo (fps) se lo standard usato è NTSC (America del Nord e Giappone) o 25 fps se lo standard è PAL (Europa, Africa Orientale, India, Australia, Cina). Standard televisivi Ogni singolo frame è interlacciato, ovvero costituito da due ‘mezze immagini’ (half frame o campi) che appaiono e si combinano molto velocemente formando l’intero fotogramma; ogni half frame è costituito da righe alternate, uno contenente le righe dispari, l’altro quelle pari. Standard televisivi I recenti schermi panoramici hanno un rapporto larghezza/altezza 16:9 ed una più ampia superfice visiva orizzontale (1920 punti-immagine o pixel). Nelle TV 4:3 l’altezza dell’immagine è costituita da 480 linee visibili (NTSC) o 576 (PAL). Pellicole cinematografiche Per i film di Hollywood sono usate pellicole da 35 mm con aspect ratio 4:3 ad altissima risoluzione, sulle quali sono impressi 24 fotogrammi al secondo. Per vedere su TV NTSC un film girato a 24 fps bisogna modificare il suo framerate in 30 fps. Questo processo si chiama 3:2 pulldown e viene effettuato tramite una macchina chiamata Telecine Il procedimento inverso (NTSC/PAL a FILM) per creare video a 24 fps è detto Inverse Telecine. Compressione dati video Per la visualizzazione di dati video compressi è sufficiente avere a disposizione un decoder Per la creazione di bitstream, è necessario avere a disposizione un encoder Per garantire l’interoperabilità, ovvero che lo stesso bitstream possa essere letto correttamente da più dispositivi, si definisce uno standard Compressione dati video In assenza di compressione, la dimensione dei file video è notevole. Ad esempio: video a scansione interallacciata (ad. es TV): 720 punti / linea 576 linee (288 linee pari, 288 linee dispari) 50 semiquadri al secondo 3 byte / pixel (RGB) 720 x 288 x 50 x 3 = 31.104.000 byte / sec c.a. 31 Mbyte/sec c.a. 250 Mbps Compressione dati video 2h di film occupano (se non compressi): 2x60x60x31 = 223.200 Mbyte c.a. 223 Gbyte Un DVD ha una capacità di c.a. 4.5 GB per memorizzare un film a risoluzione standard su DVD c’è la necessità di un fattore di compressione pari a 223 / 4.5 = 50 Compressione dati video Codifica intra-frame: codifico ogni frame come un immagine fissa E’ la tecnica usata da molte fotocamere compatte, che salvano i filmati ripresi in formato Motion-JPEG (ogni frame è compresso con JPEG) Si è in grado di ottenere rapporti di compressione dell’ordine 10-20 senza eccessiva perdita di qualità Per mettere un film su DVD abbiamo bisogno di un rapporto di c.a. 50... Compressione dati video Codifica inter-frame: codifico ogni frame utilizzando la conoscenza delle immagini precedenti Frame consecutivi in una sequenza di immagini sono simili l’uno all’altro Codifico solo ciò che c’è di nuovo in un frame rispetto al frame precedente E’ possibile ottenere rapporti di compressione di 50:1 fino a anche a 100:1 senza un degrado eccessivo della qualità Codifica inter-frame Video codec I codec che hanno trovato maggiore diffusione sono stati sviluppati da due organismi di standardizzazione: MPEG(Movie Picture Expert Group) ITU-T(International Telecomunication Union -Telecommunication StandardizationSector) Sia MPEG e ITU-T hanno sviluppato nel corso degli ultimi 20 anni diversi standard, con l’obiettivo di massimizzare la compressione per un certo livello di qualità dell’immagine. Ciascuno standard definisce una “lingua” con una sua sintassi ben precisa, che può essere compresa solo da un decoder che la supporti. MPEG: suddivisioni Ogni standard MPEG è suddiviso in parti, e ogni parte è suddivisa a sua volta in livelli (layer). Ogni parte corrisponde ad un documento, che tratta aspetti specifici dello standard. Le prime cinque parti degli standard MPEG-1 ed MPEG-2 sono identiche; MPEG-2 aggiunge ulteriori cinque parti, risultando suddiviso in totale in dieci parti. MPEG: standard Standard MPEG MPEG-1: (1992) MPEG-2: (1994) VideoCD (l’equivalente digitale del VHS), supportato dalla maggior parte dei lettori DVD DVD, SVideoCD, TV broadcasting (satellitare, terrestre, cavo) MPEG-4 Part 2(1998) Internet streaming, broadcast DivX, Xvid, FFMpeg sono diverse implementazioni software di MPEG-4 Part 2 MPEG: standard MPEG-4 Part 10 (2003) Noto comunemente come AVC (Advanced Video Coding) oppure H.264 Tenderà a sostituire tutti gli standard precedenti Adottato in innumerevoli prodotti commerciali: BlueRay Disc, iPhone, PSP, QuickTime, etc. ITU-T: standard Standard ITU-T H.261: (1990) H.263: (1996) Sistemi obsoleti di video-conferenza su reti telefoniche Video conferenza, Videotelefonia, video streaming su internet H.264:(2003) E’ uguale a MPEG-4 Part 10 Codec proprietari Esistono poi codec proprietari, sviluppati individualmente da aziende private per i propri prodotti Microsoft WMV (Windows Media Video) RealNetworks RealVideo Real Player Xiph.org foundation Theora WMV7,8,9 (Windows Media Player) VC-1 (BlueRay Disc) ... Part of the Ogg project Open source, royalty free codec inspired to (and competing with) MPEG-4 Multimedia container Il video è quasi sempre accompagnato dall’audio Il Container è un formato di file: Descrive cosa può essere immagazzinato nel file Definisce come viene codificato il suo contenuto (ma per lo stesso container, i dati possono essere codificati con codec diversi) Il Multimedia container (ad es. Il formato .AVI) descrive cosa può essere immagazzinato in un file: Dati video Dati audio Sottotitoli Ecc. Multimedia container E’ possibile che un programma che sia in grado di aprire un file scritto in un certo formato non sia capace di decodificare i dati contenuti Capita, ad esempio che il lettore multimediale sia in grado di aprire un file, ma di riprodurre solo l’audio o il video. Ciò significa che un il lettore riconosce correttamente il tipo di file, lo apre, ma non ha a disposizione il codec in grado di interpretare i dati audio o video in esso contenuti. Multimedia container I più comuni multimedia container sono: 3GP (.3gp, .3g2): usato nel campo della telefonia AVI (.avi): il formato standard nei sistemi operativi Windows MOV (.mov): usato da Apple Quick Time OGM: Ogg Media, standard video container usato dai codec Xiph.org RealMedia (.rm): usato da RealPlayer VOB (.vob): usato nei DVD DMF (.divx): DivX Media Format MPEG: overview MPEG exploits temporal (i.e frame-to-frame) redundancy present in all video sequences. Two Categories: intra-frame and inter-frame encoding Causal (predictive coding) Intra: DCT based compression for the reduction of spatial redundancy Inter: Block-based motion compensation for exploiting temporal redundancy current picture is modeled as transformation of picture at some previous time Non-causal (interpolative coding) uses past and future picture reference MPEG: motion representation Predictive and interpolative coding Each image is divided into areas called macroblocks (motion compensation units) Good compression but requires storage Often makes sense for parts of an image and not the whole image. Choice of macro-block size is a tradeoff between gain from motion compensation and cost of motion estimation. In MPEG, each macro-block is partitioned into 16x16 pixels for luminance and 8x8 for each of the chrominance components. MPEG: video processing MPEG stream includes 3 types of image coding: I-frames - Intra-coded frames - access points for random access, yields moderate compression P-frames - Predictive-coded frames - encoded with reference to a previous I or P frame. B-frames - Bi-directionally predictive coded frames encoded using previous/next I and P frame, maximum compression Motivation for types of frames Fast random access More efficient coding scheme Temporal redundancies of both previous and subsequent pictures must be exploited MPEG: video processing MPEG: video decoding Using B-frames, the order of images in a MPEG-coded stream differs from the actual decoding order. Display Order: Type of frame: BBIBBPBBP Frame Number: 0 1 2 3 4 5 6 7 8 Decoding Order: Type of frame: IBBPBBPBB Frame Number: 2 0 1 5 3 4 8 6 7 MPEG: I-frames I-frames (intra-coded images) are self-contained without any references to other images can be treated as still images. Need efficient compression scheme Compression must be executed in real-time compression of individual frames must occur within a requested time interval. As only spatial compression is used low compression ratio when compared to other MPEG frames I-frames are points for random-access in an MPEG stream. Compression for I-frames Use 8x8 blocks defined within a macro-block Perform DCT on these blocks Quantization is done by a constant value for all DCT coefficients. MPEG: P-frames P-frames (Predictive Coded Frames) Motion estimation method at encoder: require information of the previous I-frame and/or previous P-frames for encoding and decoding. Methods that are computation intensive often give better results. Tradeoff b/w cost and video quality. MPEG does not specify a motion estimation method, it specifies the coding of the result. MPEG: compression for P-frames MPEG: compression for P-frames Look for match window within search window Match window corresponds to macro-block Search window corresponds to arbitrary window size Larger search window, better motion estimation Matching methods Matching methods SSD (Sum of squared differences) subtract pixel by pixel square the residuals sum them find minimal SSD correlation among matching windows. SAD (Sum of absolute differences) correlation is absolute value of residuals can deal with outliers - In SSD, one bad point gives large difference which skews the decision of picking correct match windows. MPEG: B-frames B-frames (Bidirectionally predictive coded frames) requires information of previous and following I and/or P frame