78
CADMO Control Auto Configurable Data Network for MObiles 1 ALLEGATO SI-IES NOTA TECNICA ALGORITMI DI COMPRESSIONE AUDIO VIDEO

SI-IES Algoritmi Di Compressione

Embed Size (px)

Citation preview

Page 1: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

1

 

ALLEGATO SI-IES

NOTA TECNICA

ALGORITMI DI COMPRESSIONE AUDIO VIDEO

Page 2: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

2

Sommario 

1.  INTRODUZIONE ........................................................................................................................... 4 

2.  DIFFERENZA TRA FLUSSI AUDIO E VIDEO .................................................................................... 5 

2.1  Formato container .............................................................................................................. 6 

3.  COMPRESSIONE .......................................................................................................................... 8 

4  TECNICHE DI COMPRESSIONE ................................................................................................... 13 

4.1  Tecniche di compressione intra‐frame ............................................................................. 13 

4.2  Tecniche di compressione intra‐frame: DPCM ................................................................. 13 

4.3  Tecniche di compressione intra‐frame: tecniche a trasformata ....................................... 15 

4.4  Tecniche di compressione inter‐frame ............................................................................. 19 

4.5  Tecniche di compressione inter‐frame: motion compensation ........................................ 20 

5  CODIFICA ................................................................................................................................... 22 

5.1  Codifica dei vettori di spostamento: vector quantization ........................................................ 22 

5.2  Qualità dei CODEC ............................................................................................................. 23 

5.3  Algoritmi di Change Detection .......................................................................................... 25 

5.3.1  Change detection: Full Frame Scene Change Detection (FDY e FDYUV) ................... 26 

5.3.2  Change detection: Morphological Scene Change Detection .................................... 27 

5.4  Il Codec adattivo e il decimatore di frame adattivo .......................................................... 30 

5.5  Tag e ricerca intelligente ................................................................................................... 35 

6  ALGORITMO JPEG ...................................................................................................................... 36 

6.1  M‐JPEG .............................................................................................................................. 40 

7  STANDARD DI CODIFICA: MPEG ................................................................................................ 42 

7.1  Componenti dell'MPEG‐4 .................................................................................................. 49 

8  STANDARD  ITU H.263 ............................................................................................................... 52 

8.1  Stima e compensazione del moto ..................................................................................... 55 

Page 3: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

3

8.2  L’Entropy coding................................................................................................................ 57 

8.3  Controllo della codifica ..................................................................................................... 58 

8.4  Il decoder .......................................................................................................................... 58 

9.  STANDARD H.264 ...................................................................................................................... 60 

10.  ANALISI DEI CODEC ................................................................................................................... 67 

10.1  Codec Lossless analizzati: .................................................................................................. 67 

10.2  Codec Lossy analizzati ....................................................................................................... 70 

10.2.1  MPEG‐4 AVC .............................................................................................................. 70 

10.2.2  MPEG‐4 ASP .............................................................................................................. 71 

10.2.3  non‐MPEG‐4 .............................................................................................................. 72 

11  VALUTAZIONE ........................................................................................................................... 75 

11.1  Codec Lossless ................................................................................................................... 75 

11.2  Codec Lossy ....................................................................................................................... 76 

Page 4: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

4

1. INTRODUZIONE 

Negli ultimi anni è decisamente cresciuto  l’interesse che  i nuovi settori della  tecnologia 

hanno rivolto alle tematiche di codifica video digitale. 

Questo  fatto è dovuto alla  recente nascita di applicazioni come  le videoconferenze e  la 

videotelefonia, oltre  che  alla necessità di  immagazzinare  e  trasportare  informazione di 

tipo video su supporti elettronici.  

Questi ultimi, pur crescendo in continuazione in dimensioni e prestazioni, sono comunque 

sovente insufficienti per la grande mole di dati che si vuole trattare. 

Volendo  avere  un’idea  dell’ordine  di  grandezza  delle  quantità  in  questione,  si  pensi  al 

problema  di  voler  trasmettere  un  filmato  in  forma  digitale  senza  compressione  di 

dimensioni 720 x 576 (quelle dello standard PAL). 

Lo  stream  sarà  quindi  così  composto:  8  bit  per  ogni  campione  delle  componenti  che 

rappresentano il colore, 3 componenti di colore (R,G,B) per ogni pixel, 414 720 pixel (720 

x 576) per ogni frame, 25 frame/s come frequenza di ripetizione delle immagini. Si ottiene 

una banda necessaria di 248832000 bit = 250Mbit/s circa, che certamente rappresenta un 

valore decisamente elevato. 

I  canali  di  telecomunicazione  hanno  un’intrinseca  limitatezza  in  termini  di  capacità  di 

trasportare dati: un risparmio di banda comporta quindi inevitabilmente una diminuzione 

dei  costi  nel  realizzare  i  sistemi  e  la  possibilità  di  sfruttare  al  meglio  le  risorse  a 

disposizione.  

Il bisogno di trattare informazioni sempre meno ridondanti e ridurre la quantità effettiva 

di bit usati è quindi particolarmente sentito in tutte le applicazioni multimediali. 

In questa direzione si muovono numerosi gruppi di ricerca sia nel mondo dell’industria sia 

in quello accademico, ed è  in questa ottica che è  stato  sviluppato  il  sistema di codifica 

H.263. 

 Si tratta di uno standard reso tale dalla  International Telecommunication Union (ITU), e 

che fa parte di un insieme numeroso di algoritmi per il trattamento di dati audio e video. 

 

Page 5: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

5

2. DIFFERENZA TRA FLUSSI AUDIO E VIDEO 

Quando si vuole comprimere un video ci si trova a dover fare i conti con diversi parametri 

di  configurazione,  qualsiasi  codec  si  utilizzi.  Facendo  alcuni  esperimenti  si  nota  subito 

come un piccolo cambiamento nel settaggio della codifica video  influisca molto sul  file‐

size  finale,  mentre  cambiando  i  parametri  per  l'audio  non  si  ottengono  variazioni 

significative.  E'  importante  a  questo  punto  capire  la  differenza,  in  termini  di  spazio 

occupato,  tra  differenti  tipi  di  dato multimediale. Un  flusso  audio  è  in  un  certo  senso 

bidimensionale: un suono ha bisogno di un solo numero per  la sua rappresentazione  (il 

valore di ampiezza del segnale), tipicamente 16 o 24 bit  (al massimo 32). Questo valore 

viene registrato un certo numero di volte in un determinato intervallo di tempo (di solito 

un  secondo),  in  relazione  alla  frequenza  desiderata.  Campionare  un  suono  a  32  Khz 

significa registrare  la variazione del segnale di ampiezza 32.000 volte al secondo. Quindi 

un flusso audio campionato tipicamente a 16 bit e 44.1 Khz (qualità cd) occuperà 

16 x 44.100 = 705.600 bit/s = 86,13 KB/s 

Per un'ora di audio stereo (a 2 canali, quindi si registrano 2 flussi audio) non compresso 

saranno quindi necessari 2 x 16 x 44.100 x 60 x 60 = 5.080.320.000 bit = 605,62 MB. 

Un  dato  video,  o  pixel,  ha  bisogno  tipicamente  anch'esso  di  24‐bit  per  essere 

rappresentato  correttamente ma  questo  valore  va moltiplicato  per  il  numero  di  linee 

orizzontali e verticali dell'immagine. E' quindi un valore a 4 dimensioni in cui i fattori sono: 

valore  del  pixel,  larghezza,  altezza  e  tempo.  Come  già  detto  nell’introduzione  per  un 

immagine PAL 720x576  occorreranno circa 30MB/s. 

Un minuto di audio  stereo non  compresso pesa 10 MB, un ora 605 MB. Un minuto di 

video non compresso pesa 1780 MB, un'ora 106.800 MB. Abbiamo quindi un rapporto di 

178:1, ovvero i dati video non compressi pesano 178 volte più di quelli audio (stereo). Si 

conclude  che  lo  spazio  richiesto  per  memorizzare  un  flusso  video  non  compresso  è 

enormemente maggiore  di  quello  richiesto  per memorizzare  un  flusso  audio.  Pertanto 

una corretta e bilanciata codifica di un documento audiovisivo avrà sempre un audio di 

ottima qualità, anche se la qualità video sarà scarsa. 

Nei  codec  lossy  però  il  rapporto  di  compressione  (ovvero  lo  spazio  di memorizzazione 

richiesto dal file compresso comparato a quello richiesto dal file non compresso) su dati 

Page 6: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

6

di tipo video è quasi sempre largamente superiore rispetto a quello su dati di tipo audio. 

L'audio può essere  compresso  a 10:1  senza perdita di qualità percettibile,  il  video può 

essere  compresso  anche  oltre  300:1  senza  che  l'occhio  umano  scorga  le  differenze. 

Questo di fatto attenua un po' la forbice tra audio e video. 

 

2.1 Formato container 

Un formato container è un formato di file che può contenere vari tipi di dati multimediali. 

Si potrebbe dire che il container sia un sottoinsieme del concetto di formato, specializzato 

per i dati multimediali. Conoscendo le specifiche del container il programma dedicato è in 

grado  di  identificare  e  interpretare  i  differenti  tipi  di  dato  e  di  farne  l'interleaving  (ad 

esempio individuare e settare un valore che stabilisce quanto spesso i flussi audio e video 

sono  sincronizzati).  I  formati  container più  semplici possono  contenere un  solo  tipo di 

audio o video codificato, mentre  i più avanzati (e flessibili) sono  in grado di raggruppare 

audio, video, sottotitoli, capitoli e meta‐dati (tags), insieme con le informazioni necessarie 

per riprodurre i vari flussi sincronizzati.  Ad esempio WAV è un container audio semplice 

mentre mp4 è un container flessibile che può gestire al suo  interno molti tipi di audio e 

video. L'estensione di un file caratterizza il tipo di container: per esempio “prova.mkv” è 

un  formato  container Matroska,  “prova.rm”  è  un  formato  container  Real  Media.  Da 

notare  che  il  termine  “formato  container”  viene  spesso  abbreviato  solo  in  “container” 

oppure direttamente  in  “formato” creando  così una  certa  confusione  terminologica.  Le 

differenze tra i vari container risiedono in cinque principali punti: 

1. Popolarità: quanto largamente è diffuso e supportato un container. AVI è ancora il 

container  più  popolare  sebbene  ormai  sia  obsoleto,  perché  è  stato  lo  standard 

adottato nei sistemi Microsoft 

2. Sovra‐spazio: è  la differenza  in MB  tra due  file  con  lo  stesso  contenuto ma due 

container diversi. Un film di due ore  in AVI può occupare fino a 3 MB  in più dello 

stesso film in Matroska. 

3. Supporto per funzionalità avanzate dei codec. I container più vecchi come AVI non 

supportano  nuove  funzionalità  come  B‐Frames, VBR  audio, VFR  nativo,  sebbene 

possano essere "truccati" per aggiungere il supporto, ma creando così problemi di 

incompatibilità 

Page 7: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

7

4. Supporto per contenuto avanzato, come capitoli, sottotitoli, meta‐tags, user‐data. 

5. Supporto per lo streaming. 

  

Confronto tra i container più diffusi: Matroska è il formato container di dominio pubblico: è sicuramente il migliore e il più flessibile.

Page 8: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

8

3. COMPRESSIONE 

Per il trasferimento d'immagini, vista la grossa mole di dati che compone i file audio/video 

è necessario ricorrere a strumenti di compressione. 

Il vantaggio che si ottiene con questi strumenti è una riduzione dei dati da trasferire, ma 

per contro un'altra compressione comporta anche un alto degrado dell'immagine. 

La  compressione  e  la  gestione  della  stessa  è  demandata  alle  telecamere  digitali  che, 

essendo  dotate  di  una  CPU,  hanno  la  capacità  di  calcolo  sufficiente  per  questa 

operazione. 

Il  termine  “compressione”  viene  solitamente  associato  all’operazione  che  implica  la 

modifica della  forma di un oggetto  reale affinché occupi un volume  inferiore  rispetto a 

quello  occupato  nella  forma  originale.  Si  osservi  tuttavia  che  la  compressione  di  un 

oggetto  reale  non  comporta  in  alcun modo  una  diminuzione  del  peso, ma  solo  una 

diminuzione del volume; inoltre la natura stessa dell’oggetto compresso non cambia. 

Il  concetto  di  compressione,  si  riflette  nel mondo  informatico  con  significati  simili  alla 

compressione fisica. Gli oggetti da comprimere sono in questo caso rappresentati dai file, 

di  qualsiasi  natura  essi  siano  e  il  volume  occupato  prima  e  dopo  la  compressione  è 

associabile allo spazio occupato dal file sul supporto di memorizzazione; in tal caso l’unita 

di misura dello spazio occupato non saranno i metri cubi ma i byte. 

La  differenza  fra  compressione  fisica  e  informatica  riguarda  la  natura  degli  oggetti  da 

comprimere: un file è una sequenza di numeri binari, che rappresentano l’ informazione; 

non è possibile comprimere  i bit avvicinandoli come si  farebbe con un qualsiasi oggetto 

fisico;  l’unico  modo  per  far  occupare  meno  spazio  ad  un  file  è  eliminare  alcuni  bit, 

modificando  l’informazione  in esso  contenuta. Modificare  l’informazione, è equivalente 

però a cambiare la natura dell’oggetto, è come se una bottiglia di plastica schiacciata non 

fosse più una bottiglia di plastica, ma una tazza. Il file sarebbe praticamente inutilizzabile. 

Per  capire meglio  cosa  comporta  la  compressione di un  file,  supponiamo di  avere una 

stringa di 30 locazioni nella quale abbiamo memorizzato la frase: “Domani potrebbe  

piovere”,  che  occupa  23  locazioni.  Supponiamo  di  rimuovere  le  vocali,  l’informazione 

risultante sarà: “Dmn ptrbb pvr”. 

Page 9: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

9

La  frase  compressa,  occupa  uno  spazio  di  13  locazioni,  sono  disponibili  in  totale  17 

locazioni  per  memorizzare  altre  informazioni  rispetto  alle  7  disponibili  prima  della 

compressione. Se ora volessimo sapere che tempo farà domani e andassimo a  leggere  il 

contenuto  della  stringa,  non  riusciremmo  però  a  capirne  il  senso  e  pertanto 

l’informazione compressa è inutilizzabile se usata in tale forma. 

Riassumendo,  l’unico modo per comprimere un  file è modificare  l’informazione  in esso 

contenuta  rimuovendo  parte  degli  elementi  costituenti,  ma  tale  processo  lo  rende 

inutilizzabile.  Il problema da porsi quando  si progetta un  algoritmo di  compressione, è 

quindi il modo in cui sarà compresso il file, per poterne in seguito recuperare il contenuto 

nella sua  interezza o  in casi specifici,  il modo  in cui deve essere costruita una sua buona 

approssimazione, più economica in termini di spazio occupato.  

 

I dati compressi presentano altri vantaggi oltre quello di recuperare spazio sui supporti di 

memorizzazione: dati di dimensioni ridotte possono essere recuperati più facilmente dai 

database,  mentre  i  file  video  e  audio,  generalmente  molto  capienti,  possono  essere 

scaricati da un terminale remoto più velocemente. Di seguito si descriveranno le tecniche 

di compressione sulle quali si basano i principali algoritmi. 

 

Le tecniche di compressione sono due ed entrambe si basano proprio sulla ripetizione di 

elementi  costituenti  l'informazione:  compressione  statistica  e  compressione mediante 

sostituzione di testo o con dizionario. 

La compressione  statistica, come  suggerito dal nome,  si basa  sullo  studio  statistico dei 

dati da comprimere. Un esempio è  rappresentato dall’algoritmo di Huffman.  In  linea di 

principio,  l’algoritmo  è  usato  per  la  compressione  dei  testi  e  richiede  lo  studio  della 

frequenza con la quale ciascun carattere compare nelle parole.  

Esso si basa sull’analisi statistica del dato da comprimere,  in particolare sulla  frequenza 

con  la  quale  si  ripetono  i  suoi  elementi.  Consideriamo  un  file  di  testo,  il  principio  di 

funzionamento è molto  semplice:  ad ogni  carattere  codificato  con un  codice  a 8 bit, è 

sostituito un codice di  lunghezza  inferiore, di almeno 1 bit. Si supponga per esempio di 

voler  comprimere  la  frase  “ciao mamma”:  tenendo  conto del  carattere  “spazio”  (‘  ‘)  la 

Page 10: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

10

frase  è  lunga  10  caratteri,  quindi  la  codifica  richiede  80  bit  (8  bit  x  10  char  =  80  bit). 

Applicando l’algoritmo di Huffman, il processo di compressione avviene in quattro fasi.  

Nella  prima  fase  viene  esaminato  il  testo  contando  le  ricorrenze  di  ciascun 

carattere e  fornendo  in output  le associazioni  “carattere:ricorrenza”. Nel nostro 

caso  i caratteri “C”, “I”, “O”, “ ‘ ‘ “ si ripetono una volta,  i caratteri “A” ed “M” si 

ripetono tre volte, quindi le associazioni sono: C:1, I:1, A:3, O:1, ’ ’:1, M:3. 

Nella seconda fase viene generato un albero detto albero di Huffman. Il processo 

avviene in 3 momenti: 

1. viene generata una lista di nodi raggruppati in ordine di ricorrenza, ciascun 

nodo rappresenta un carattere; 

2. si cercano  i due nodi con  ricorrenza  inferiore e viene generato un nuovo 

nodo etichettandolo con la somma delle ricorrenze di ciascun carattere nel 

testo. I nodi‐foglia diventano figli del nodo generato; 

3. il nuovo nodo viene aggiunto alla lista dei nodi. 

Il secondo e il terzo passo vengono iterati finché non rimane un solo nodo.  

Nella  seguente  figura  è  possibile  osservare  come  viene  modificata  la  lista  ad  ogni 

iterazione.  Il  risultato  dell’elaborazione  è mostrato  nel  riquadro  5.  L’ultimo  nodo  della 

lista, etichettato con il valore 10, rappresenta ovviamente la radice dell’albero di Huffman 

le cui foglie sono i caratteri che compaiono nel testo da comprimere. 

 

Il processo si conclude etichettando gli archi a sinistra con zero e quelli a destra con 1. 

La  codifica di  ciascun  carattere,  si ottiene percorrendo  l’albero di Huffman dalla  radice 

alla foglia corrispondente al carattere da codificare e concatenando le etichette associate  

agli archi percorsi. Nel nostro caso si ottiene  la seguente codifica: C = 000;  I = 001; O = 

010; ‘ ’ = 011; A = 10; M =11. 

Page 11: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

11

Sul  risultato  ottenuto  possono  essere  fatte  importanti  osservazioni,  che  sottolineano 

l’importanza dell’algoritmo di Huffman per la compressione dei file e quanto sia in realtà 

complessa la logica alla base. 

La  necessità  di  conoscere  le  proprietà  del  file  da  comprimere  fa  spesso  preferire  alla 

compressione statistica, la compressione mediante sostituzione. La tecnica si compone di 

due fasi: nella prima fase, vengono cercate le stringhe di caratteri che si ripetono nel testo 

e viene definito un dizionario nel quale memorizzarle; a tutte è associato un indice.  

Nella seconda fase, si cercano nel testo  le stringhe ripetute e viene sostituito ad ognuna 

un puntatore alla  locazione occupata nel dizionario.  Il principio di compressione si basa 

sul presupposto che un puntatore occupa meno spazio di una stringa di caratteri, inoltre 

quanto  maggiori  saranno  le  ricorrenze  di  stringhe  identiche,  tanto  maggiore  sarà  la 

compressione del  file. Per capire meglio  i vantaggi offerti dalla  tecnica di compressione 

mediante sostituzione, supponiamo di voler comprimere il seguente testo: “Sara indossa 

un maglione  giallo.  Luisa,  la  sorella  di  Sara,  indossa  un maglione  verde.  Luisa  e  Sara, 

usciranno questa sera.” 

Il dizionario risultante dalla scansione è il seguente: 

1. Sara 

2. Indossa 

3. Un 

4. Maglione 

5. Luisa 

Si è associato a ciascuna parola un indice in relazione all’ordine con il quale le parole sono 

state  memorizzate  nel  dizionario.  Il  testo  risultante  dalla  compressione,  ottenuta 

sostituendo alle parole del dizionario che compaiono nella frase, l'indice, è in definitiva: 

 

“1 2 3 4 giallo. 

5, la sorella di 1, 2 3 4 verde. 

5 e 1, usciranno questa sera.” 

 

Page 12: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

12

La  compressione  mediante  sostituzione  ha  un  ulteriore  vantaggio:  la  possibilità  di 

ricostruire facilmente il testo originale sostituendo ai puntatori le stringhe corrispondenti 

e preservando quindi la natura stessa dell’informazione contenuta nel file. In altri termini, 

vengono  conservate  le  caratteristiche  originali  dei  dati,  ed  è  possibile  usare  tali 

informazioni nel passaggio dalla forma compressa a quella non compressa per ricostruire 

il file originale.  

Gli algoritmi di compressione si basano tutti sul tali tecniche, ovviamente ciascuna tecnica 

di adatta particolarmente alla compressione di specifici tipi di file.  

La codifica di Huffmann permette di  fare una compressione  loss‐less e  si basa  sul  fatto 

che i simboli (in questo caso, i livelli di grigio o di colore) non sono equiprobabili, e quindi 

non occorre usare parole di uguale lunghezza per rappresentarli. La codifica di Huffmann 

usa un bit‐rate variabile (VBR), cioè assegna meno bit (quindi parole più corte) ai simboli 

più probabili, e più bit ai 

simboli meno probabili, riducendo così il bit‐rate medio. Il problema sta nel determinare 

quali  sono  i  livelli  di  grigio  più  probabili  nell’insieme  di  tutte  le  scene  possibili;  i 

codificatori di Huffmann utilizzati dai compressori video si basano su statistiche effettuate 

su  un  gruppo  di  immagini  campione,  dalle  quali  vengono  estrapolati  i  simboli  più 

probabili. 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 13: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

13

4 TECNICHE DI COMPRESSIONE 

4.1 Tecniche di compressione intra‐frame 

Osservando una qualunque  immagine  si osserva che questa è divisibile  in  tante  regioni 

che  hanno  valori  di  luminanza  e  crominanza molto  simili:  i  pixel  di  ciascuna  di  queste 

regioni  quindi  sono  molto  correlati  spazialmente.  Si  potrebbe  quindi  pensare  di 

trasmettere solo  il primo pixel per  intero, e  i successivi come differenza del precedente; 

ma  sottrarre,  in  matematica  discreta,  significa  derivare,  e  cioè  amplificare  il  rumore 

deteriorando così l’immagine. Per ovviare a questo basta predire il pixel attuale con quelli 

adiacenti  pesati,  in modo  tale  che  il  rumore, modellizzato  come  AWGN,  si  autoelmini 

come nel caso dell’utilizzo della tecnica DPCM. 

 

Altre  codifiche  intra‐frame  si  basano  su  test  psicovisivi  fatti  sull’occhio  umano  che 

descrivono  la  sua  sensibilità  a  certe  componenti  frequenziali:  l’occhio  umano  non 

percepisce  le componenti ad alte frequenze spaziali, mentre è molto sensibile a quelle a 

basse  frequenze.  Si  può  comprimere  quindi  tagliando  le  componenti  ridondanti  (a  cui 

l’occhio non è sensibile) con filtri numerici, ricordando che molti segnali possono essere 

rappresentati come somma pesata di sinusoidi: 

 

 

I  coefficienti  αi  e  βi  possono  essere  organizzati  in  una  matrice,  che  rappresenta 

l’immagine digitale trasformata nel dominio della frequenza. 

 

4.2 Tecniche di compressione intra‐frame: DPCM 

La codifica DPCM è  la via più semplice per eliminare  la ridondanza spaziale, e parte dal 

presupposto  che  un  pixel  è  correlato  sempre  con  quelli  adiacenti,  e  che  quindi  porta 

informazioni su se e sugli altri. 

 

Σi[αi sen(ωi) + βi(ωi)]

Page 14: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

14

 

Quindi  tramite  i  pixel  adiacenti  (logicamente  quelli  passati)  viene  predetta  parte 

dell’informazione  del  pixel  attuale  tramite  un  predittore.  Il  predittore  esegue  una 

combinazione  lineare dei pixel adiacenti pesati con dei coefficienti ci, scelti  in modo da 

minimizzare  l’errore  quadratico medio  tra  la  predizione  e  il  pixel  attuale  su  una  vasta 

gamma di  immagini  (addestramento del predittore).  In questo modo, togliendo al pixel 

attuale  l’informazione  predetta,  verrà  acquisita  solo  l’informazione,  cioè  la  reale 

informazione contenuta in quello. A prima vista questo processo sembra loss‐less, ma non 

lo è: il predittore potrebbe produrre un valore non intero, così che l’informazione debba 

essere quantizzata, cioè arrotondata, ottenendo così in ricezione un’immagine diversa da 

quella reale. Tuttavia, poiché ogni pixel dipende da quelli adiacenti, l’errore si propagherà 

e  aumenterà  (poiché  la  quantizzazione  introdurrà  altri  errori)  fino  a  distruggere 

l’immagine. Per evitare questo occorre ricostruire l’immagine a trasmettitore, e predirre i 

pixel  successivi  dai  pixel  adiacenti  già  compressi,  così  da  ridurre  notevolmente  la 

propagazione dell’errore. 

Page 15: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

15

 

 

4.3 Tecniche di compressione intra‐frame: tecniche a trasformata 

Un’immagine digitale equivale a una matrice Q (N×N), che posso trasformare nel dominio 

della frequenza tramite la matrice dei coefficienti W. La trasformata di Q è quindi: 

 

 

                                      

Un’immagine  trasformata  si  presenta  come  un  insieme  di  punti  concentrati  per  lo  più 

lungo  le assi  x e y delle  frequenze  spaziali  che  rappresentano  le  transizioni di  livello di 

grigio; i punti con alte frequenze orizzontali e verticali rappresentano i vertici. 

 

 

 

Qf =W-1 Q W

Page 16: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

16

Poiché  l’occhio umano  vede  solo  i  contorni e  le macchie di  colore, ma non distingue  i 

vertici,  possiamo  considerare  quest’ultimi  come  componenti  ridondanti  sotto  l’aspetto 

psicovisivo. Quindi è possibile comprimere un’immagine  in maniera  lossy filtrando via  le 

componenti psicovisive ridondanti. 

Una trasformata possibile è la DFT ( Discrete Fourier Transform): per fare questa occorre 

replicare infinite volte l’immagine lungo le 2 dimensioni  

 

 

L’unico  inconveniente della DFT è che produce valori complessi, e questo è dovuto alla 

discontinuità delle repliche dell’immagine; infatti se trasformo tramite la DFT una matrice 

pari, otterrò una matrice  trasformata a  valori  reali: questo equivale  a applicare  la DCT 

(Discrete  Cosine  Tranform).  Occorre  quindi  trovare  il  modo  di  replicare  la  nostra 

immagine in modo da trasformarla in un segnale periodico pari. 

Page 17: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

17

 

Quindi, tramite l’immagine di warping, posso effettuare la DCT ricavando così una matrice 

trasformata a valori reali. A questo punto devo filtrare la matrice trasformata in modo da 

tagliare via  le componenti ridondanti: questo sarà fatto tramite una matrice delle stesse 

dimensioni della matrice di warping detta Zonal Coding Mask, che vale 1 se l’elemento è 

da  tenere,  0  se  l’elemento  è  da  filtrare  via.  Il  numero  di  bit  usati  per  quantizzare  gli 

elementi della matrice filtrata sono scritti in un’altra matrice detta Bit‐Allocation Map. 

Page 18: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

18

 

Il  problema  fondamentale  dei  codificatori  ibridi  DPCM/DCT  sono  le  distorsioni,  che 

generano 2 tipi di artefatti:  

1. Gli artefatti di  tipo blocking  (chiamati anche macroblocchi...) che derivano dalla 

decomposizione  in  blocchi:  quando  il  bit‐rate  scende,  la maggior  parte  dei  bit 

viene  spesa per  la  codifica dei  vettori di moto piuttosto  che per  la  codifica del 

residuo, utilizzando una quantizzazione piuttosto grezza che porta alla perdita del 

dettaglio  più  fine  rendendo  estremamente  visibile  la  struttura  a  blocchi 

dell'immagine ricostruita. 

Page 19: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

19

2. Gli artefatti di  tipo Ringing  , cioè quella serie di aloni che si possono notare sui 

contorni principali delle immagini decodificate. 

 

4.4 Tecniche di compressione inter‐frame 

Consideriamo 2 frame consecutivi di un video: se gli oggetti o  la telecamera si muovono 

lentamente le 2 scene sono altamente correlate temporalmente; è possibile quindi fare la 

differenza  tra  il  secondo  frame  ed  il  primo  e  trasmettere  questa,  usando  la  prima 

immagine come predizione della seconda: in questo modo si invierebbe solo una piccola 

quantità d’informazione 

avendo eliminato la ridondanza temporale. 

Tuttavia  se  c’è  un movimento  più  veloce  (sia  della  telecamera,  sia  dell’oggetto),  i  due 

frame  non  risultano  più  correlati  e  quindi  il metodo  esposto  prima  non  sarebbe  così 

efficiente; riuscendo invece a predire il movimento di un oggetto nel frame successivo, il 

frame verrebbe compresso 

in maniera molto  efficiente;  questo  è  dovuto  al  fatto  che  l’intertempo  tra  due  frame 

consecutivi  è  piccolo,  per  cui  è  possibile  apprezzare  solo  il movimento  traslatorio,  e 

trascurare  quello  rotatorio:  questa  tecnica  è  detta  compensazione  del movimento  o 

motion  compensation  (MC)  ed  è  un  potente  strumento  per  ridurre  la  ridondanza 

temporale tra due frame. 

Page 20: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

20

4.5 Tecniche di compressione inter‐frame: motion compensation 

Considerando 2  frame consecutivi n‐1 e n e dividendoli  in blocchi quadrati di 8×8 pixel 

(blocchi da 64 pixel). 

 

Supponiamo che tutti i pixel dello stesso blocco facciano lo stesso movimento e che ogni 

blocco  presente  nell’immagine  n  provenga  dall’immagine  n‐1;  supponiamo  inoltre  che 

nessun blocco possa superare una certa velocità limite di traslazione: conoscendo quindi 

la  durata  di  ciascun  frame,  posso  definire  una  regione  limitata  nell’immagine  n‐1, 

chiamata target window, in cui il blocco può essersi spostato.  

 

All’interno della target window, nell’immagine n‐1, individuiamo tutti i blocchi da 64 pixel 

possibili:  2  blocchi  contigui  sono  quelli  che  differiscono  di  1  riga/colonna  di  pixel. 

Considerando  quindi  un  blocco  8×8  dell’immagine  n,  viene  ricercato  nel  frame  n‐1  il 

blocco  più  simile  nella  target  window:  il  criterio  di  similitudine  si  basa  sulla 

minimizzazione di una  funzione MAD. Trovato  il blocco più simile, si  ricava  il vettore di 

spostamento. Dopo aver applicato questa operazione al  frame n‐1, questo viene moto‐

compensato, cioè vengono spostati opportunamente i pixel dei blocchi secondo il vettore 

Page 21: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

21

di moto ricavato e quindi viene sottratto dal frame corrente creando quello che si chiama 

residuo  o  errore  di  predizione.  A  questo  punto  anziché  codificare  il  frame  corrente 

vengono codificati i vettori di moto e i coefficienti DTC del residuo che sarà più facilmente 

comprimibile. Questa  tecnica di MC si chiama block matching proprio perché confronta 

blocco a blocco. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 22: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

22

5 CODIFICA 

5.1 Codifica dei vettori di spostamento: vector quantization 

Supponiamo di voler codificare un vettore 2D: necessitano 2 componenti, e se quantizzo a 

8  bit  occorreranno  16  bit;  si  vuole  trovare  una  tecnica  che  mi  comprima  la 

rappresentazione dei vettori. 

La codifica più semplice si chiama SIMINI che permette di comprimere  i vettori del 50%: 

non si inviano più due componenti, ma una sola, introducendo dei piccoli errori. Vediamo 

come funziona: usando il block matching si osserva che gruppi di blocchi 8×8 si muovono 

più  o  meno  nella  stessa  direzione  e  con  la  stessa  velocità  (poiché  rappresentano  il 

medesimo  oggetto  in movimento).  Quindi,  se  rappresentiamo  in  un  grafico  i  possibili 

spostamenti dei blocchi, otteniamo sottoinsiemi di punti raggruppati.  

 

Un computer riesce ad  individuare gruppi di oggetti e a contarli; supponiamo che siano 

stati  contati N  gruppi,  allora dispongo  sulla diagonale principale N nodi  (tanti quanti  il 

numero dei gruppi), e viene associato ad ognuno di essi un gruppo in base alla vicinanza.  

Page 23: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

23

 

Quindi viene spostato ogni nodo nel baricentro del gruppo assegnatogli e divido lo spazio 

2D  in  N  regioni,  ognuna  delle  quali  sarà  identificata  dal  vettore  che  ne  individuerà  il 

baricentro.  

 

Si  definisce  code‐book  lo  strumento  che  associa  ad  ogni  classe  (zona)  un  vettore  che 

individua il suo baricentro. È chiaro il fatto che più alto è N e più è alta l’accuratezza.  

5.2 Qualità dei CODEC 

I metodi d’analisi scelti per confrontare  i codec sono 2: un approccio parametrico e un 

approccio psicovisuale. L’analisi parametrica consiste nella ricerca del codec ottimo per le 

necessità del sistema esaminando un insieme di parametri numerici, quali:  

• La distanza euclidea (RMSE) tra i frame originali e quelli elaborati, che esprime la 

somiglianza  tra  i 2 stream, enfatizzando gli errori più grossolani  rispetto a quelli 

Page 24: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

24

più piccoli;  visto  che  la distanza euclidea è una misura dell’errore, piccoli  valori 

rappresentano maggiore fedeltà. 

• Il rapporto segnale‐rumore di picco (PSNR), che è definito come: 

 

 

 

dove MSE è il quadrato della distanza euclidea. 

• Il rapporto segnale – rumore (SNR), che è definito come: 

 

 

ed  è misurato  in  decibel.  A  differenza  della  distanza  euclidea,  SNR  enfatizza  i 

piccoli errori rispetto a quelli grossolani. Più alto è SNR e maggiore è la fedeltà. 

• Il bit‐rate all’uscita dell’encoder; occorrerà stare all’interno di un certo range per 

soddisfare  le  specifiche  dei  sistemi  di  comunicazione  usati;  questo  perché  alla 

trasmissione video non  sarà dedicata una  rete, ma  lo  stream utilizzerà  la  stessa 

rete usata anche per altri servizi. Le valutazioni verranno fatte in media. 

• L’utilizzo  della  CPU  durante  la  processazione  dei  dati,  in modo  da  scegliere  un 

codec che non oberi troppo la CPU. 

• Il  numero  di  bit  in  uscita  dell’encoder  per  valutare  le  dimensioni  dei  frame  e 

quindi il rapporto di compressione.  

L’analisi  psicovisuale  consiste  nel  raffronto  visivo  tra  lo  stream  originale  e  quello 

compresso‐decompresso; questa analisi permette di valutare, tramite  il confronto visivo 

tra lo stream originale e quello elaborato, gli aspetti sensibili che la distanza e lo SNR tra 

frame non riescono a estrarre. Dalla distanza e dallo SNR, infatti, non si riescono a capire : 

a) gli effetti del rumore; 

b) le componenti frequenziali che  li determinano; un codec con una distanza 

alta,  dovuta  a  componenti  frequenziali  spaziali  alte  (poco  rilevanti  per 

PSNR(framei) = 10 log (255)2⁄MSE

Page 25: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

25

l’occhio  umano),  può  essere migliore  di  un  codec  con  una  distanza  più 

piccola, ma  influenzata da  frequenze più basse e quindi più  rilevanti per 

l’occhio. 

5.3 Algoritmi di Change Detection 

I  sistemi  di  video  sorveglianza  hanno  il  compito  di  controllare  ambienti  e  usualmente 

contengono moduli  che  permettono  il  rilevamento  le  variazioni  significative  del  luogo 

vigilato:  insomma questi moduli misurano  la dissimilarità tra  l’immagine attuale e quella 

di riferimento, e inoltre controllano se questa dissimilarità sia significativa oppure no. Tali 

variazioni significative si chiamano cambi di scena, e gli algoritmi che permettono questo 

sono  detti  di  Change  Detection.  Un  cambio  di  scena  per  esempio  potrebbe  essere 

l’ingresso  di  un  uomo  in  una  stanza  prima  vuota.  Le  tecniche  di  change  detection 

presentate in letteratura sono sostanzialmente due: 

1. Algoritmi pixel‐based: che elaborano  l’output analizzando e confrontando pixel a 

pixel  l’immagine  attuale  e  quella  di  riferimento.  Questo  sistema  presenta  il 

vantaggio di essere semplice e utilizzabile facilmente nelle applicazioni real‐time, 

ma è poco robusto nei confronti del rumore. 

2. Algoritmi  region‐based:  comparano  regioni  di  pixel  di  un’immagine  con 

corrispondenti  regioni  dell’immagine  di  riferimento.  Questo  sistema  è  molto 

robusto al rumore ma poco efficiente in real‐time.  

In realtà esisterebbe un altro algoritmo basato sull’ edge‐comparison, che però ha un alto 

costo  computazionale  e  quindi  non  è  indicato  per  sistemi  con  richieste  temporali 

stringenti come il real‐time. 

Gli algoritmi di change detection sono oltre caratterizzati da una metrica,  introdotta per 

quantificare  la  differenza  tra  pixel/regioni  e  per mettere  una  soglia  che  permette  di 

decidere se il pixel/la regione analizzata è cambiata rispetto a quella di riferimento.  

La scelta degli algoritmi di change‐detection per le specifiche del progetto in questione si 

basano  su  constatazioni  riguardo  al  maggiore  o  minore  contenuto  significativo  delle 

singole immagini. In un sistema di video sorveglianza per interni come quello in questione 

sarà data maggiore  importanza al rilevamento di “nuovi oggetti” o “blob” all’interno del 

frame attuale rispetto a quello precedente, come per esempio  l’ingresso di una persona 

Page 26: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

26

nella  scena  fino  ad  allora  immobile,  o  al  rilevamento  di  rapide  variazioni  dei  valori  di 

luminanza  e  crominanza,  come  nel  caso  di  un  incendio.  Per  questo  sono  stati  scelti  2 

algoritmi che rispettino queste necessità: 

1. Morphological Scene Change Detection, per il rilevamento dei blob. 

2. Full  Frame  Scene  Change  Detection  (FDY  e  FDYUV),  per  il  rilevamento  delle 

variazioni di luminanza e crominanza. 

5.3.1 Change detection: Full Frame Scene Change Detection (FDY e FDYUV) 

L’algoritmo  di  Full  Frame  Scene  Change Detection  (FDY  e  FDYUV)  è  un metodo  pixel‐

based e basa  la misura della dissimilarità sul confronto  tra gli  istogrammi di  luminanza; 

dati  gli  istogrammi  Hr  (dell’immagine  di  riferimento)  e  Hj  (dell’immagine  attuale),  e 

sapendo  che  ognuno  presenta  n  livelli  di  grigio,  definisco  indice  di  similitudine 

normalizzato il valore: 

 

 

È  facile vedere che  la  somma al denominatore è  il numero  totale di pixel per  frame. A 

questo punto è possibile definire l’indice di dissimilarità di 2 immagini come: 

 

 

Chiamiamo questo algoritmo FDY  (full decompression with  luminance histogram scene 

detection algorithm). Allo stesso modo è possibile  realizzare questo algoritmo  in modo 

tale che tenga conto anche delle  informazioni di crominanza: sarà chiamato FDYUV  (full 

decompression luminance and crominance histogram scene detection algorithm). L’unica 

differenza tra FDY e FDYUV è che viene considerata l’informazione colore quantizzando il 

vettore Y, U, V in un solo byte con una distribuzione di bit del genere: Y : U : V = 2 : 3 : 3, 

cioè  vengono  assegnati  a  Y,  U,  V  rispettivamente  4,  8,  8  livelli.  La  ragione  per  cui  si 

Page 27: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

27

assegnano meno bit alla componente Y è per ridurre la probabilità di falsi allarmi causati 

da cambi di illuminazione, che avvengono frequentemente. 

5.3.2 Change detection: Morphological Scene Change Detection 

L’algoritmo del Morphological Scene Change Detection è un  ibrido tra  il pixel‐based e  il 

region‐based, poiché presenta  i vantaggi di ambedue: si ottiene questo usando un filtro 

binario morfologico che ad ogni pixel di  input associa un pixel di output che dipende sia 

da se stesso che da quelli vicini. Per definire un operatore morfologico occorre scegliere 

uno Structuring Element (SE) B, e definire il comportamento delle 2 funzioni elementari: 

• Dilatazione, che genera un aumento di dimensioni dell’oggetto considerato. 

• Erosione, che genera una diminuzione di dimensioni dell’oggetto considerato. 

Un SE può essere visto come una filtering mask, che mi individua i pixel adiacenti a quello 

attuale e sui quali effettuare le 2 operazioni elementari. 

È  possibile  rappresentare  un  SE  centrato  sul  pixel  i‐esimo  come  un  gruppo  di  pixel 

adiacenti; le forme più comuni di SE sono: 

 

La composizione degli operatori di dilatazione ed erosione da vita a  filtri più complessi, 

come  quello  di  opening  (erosion  +  dilation)  e  quello  di  closing  (dilation  +  erosion).  In 

questo progetto verrà considerato un SE quadrato. 

In letteratura è possibile trovare 4 tipi di operatori morfologici, dei quali 2 deterministici 

(mathematical morphology  and  soft morphology)  e  2  stocastici  (statistical morphology 

and statistical soft morphology). Per la semplicità, per il basso costo computazionale e per 

la  maggiore  efficienza  rispetto  al  mathematical  morphology  viene  utilizzato  il 

mathematical soft morphology. 

Nel metodo mathematical soft morphology con dati binari,  lo SE Bi centrato nel pixel  i‐

esimo viene diviso  in 2 regioni disgiunte, A (hard structuring element o HSE) e Bi/A (soft 

Page 28: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

28

structuring  element  o  SSE),  e  viene  scelto  un  parametro  di  peso  r  che  da maggiore 

importanza ai pixel dello HSE. 

 

 

Quindi viene definita la dilatazione come: 

Hi= 1      if r*MAi1 +MBi\Ai

1> r 

Hi= 0      otherwise 

 

E l’erosione come: 

Hi= 1      if r*MAi0 +MBi\Ai

0 > r 

Hi= 0      otherwise 

 

dove MAi1, MAi

0  rappresentano rispettivamente il numero di bit pari a “1” all’interno dello 

HSE  Ai  e  il  numero  di  bit  pari  a  “0”  all’interno  dello  HSE  Ai,  mentre  M1Bi/Ai,  M

0Bi/Ai 

rappresentano  rispettivamente  il numero di bit pari a “1” all’interno dello SSE Bi/Ai e  il 

numero di bit pari a “0” all’interno dello SSE Bi/Ai. Al peso  r viene assegnato un valore 

leggermente minore del numero di pixel dello HSE, in particolare: 

r = HSE2‐ HSE/2 

 

Quindi un sistema di change detection basato su operatori morfologici binari presenta la 

seguente architettura: 

Page 29: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

29

 

 

Il primo passo è quello di confrontare l’immagine di riferimento o background B = {B(i)|i = 

1… N} (N è il numero totale di pixel di un frame), che rappresenta o l’ambiente controllato 

o maglio ancora un frame poco precedente, e l’immagine attuale It = {It(i)|i = 1… N}; per 

fare  questo  viene  eseguita  una  binarize  difference,  che  consiste  nell’effettuare  la 

sottrazione  pixel  a  pixel  tra  il  background  e  l’immagine  attuale  e  fissando  il  valore  di 

output per  il pixel  in questione  a  “1”,  se questa differenza  è maggiore di un  valore di 

soglia th. La soglia th  indica  la minima differenza di  illuminazione per considerare 2 pixel 

differenti; nel caso  ideale, questa distanza è uguale a un  livello di grigio, ma a causa del 

rumore  introdotto  dai  dispositivi  di  acquisizione,  l’operazione  sarà  più  robusta  se  sarà 

fissata una  soglia più  alta  (una  soglia  reale  è  compresa  tra  i  10  e  i  25  livelli di  grigio). 

Quando le immagini processate assumono una forma vettoriale, per esempio nel formato 

RGB,  allora  l’operazione  di  binarize  difference  viene  applicata  a  ogni  canale 

dell’immagine, e i risultati binari saranno ottenuti effettuando l’OR logico tra gli output di 

ogni canale. 

Page 30: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

30

Dopo  la  differenza  binaria,  viene  utilizzato  il morphological  processing  per  eliminare  i 

pixel isolati e dovuti al rumore e compattarli nelle regioni in cui è avvenuto veramente un 

cambio: per  fare questo si usa  l’algoritmo di opening, che, tramite  l’erosione, rimuove  i 

pixel isolati, e, tramite la dilatazione, ricompone le regioni divise dall’erosione. 

 

 

 

A questo punto calcolo  il valore percentuale dei pixel “bianchi”, che chiamerò  indice di 

dissimilarità. 

5.4 Il Codec adattivo e il decimatore di frame adattivo 

Codec  adattivo  significa  un  codec  che  si  adegua  a  delle  circostanze  in modo  tale  da 

soddisfare  certe  specifiche;  in questo  studio  il  codec  si  “adatterà”  allo  stream  video  in 

base ai cambi di scena, in modo tale da far variare il livello di qualità della compressione a 

ogni  variazione  dell’indice  di    dissimilitudine  dell’immagine  attuale  rispetto  a  quella  di 

riferimento.  I  coefficienti  di  dissimilarità,  generati  dagli  algoritmi  di  change  detection, 

confrontatati con soglie, produrranno un  fattore di qualità  (qf, che può assumere valori 

che vanno da 0 a 6), e che andrà a pilotare  il  livello di qualità del compressore: a ogni 

valore  di  qf  corrisponderà  un  livello  di  qualità.  I  parametri  presi  in  considerazione  per 

variare la qualità sono: 

1. I “VOP” flags, che fissano i parametri per la generazione dei vettori di spostamento 

dei VOP; 

2.  I “motion” flags, che fissano l’algoritmo di ME (Motion Estimation); 

3.  Il  quant member  che  fissa  il  valore  del  quantizzatore  della DCT;  può  assumere 

valori che vanno da 1  (massima qualità) a 31  (minima qualità). Verrà utilizzato  il 

Page 31: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

31

range di valori  [10, 25],  in modo che, da un  lato, non si ottengano  frame troppo 

grossi e si rallenti la velocità di processazione, e, dall’altro, non si abbia una qualità 

troppo bassa. 

 

Gli algoritmi di change detection utilizzati sono quelli menzionati precedentemente: Full 

Frame  Scene Change Detection  (FDY e  FDYUV), poiché più  sensibile  alle  variazioni dei 

livelli  di  luminanza  e    crominanza,  e  il  Morphological  Scene  Change  Detection,  in 

particolare il mathematical morphology, più sensibile al movimento. 

 

Il codec adattivo sarà composto essenzialmente da 2 oggetti: 

Un grabber che recupererà  l’immagine non compressa e farà partire gli algoritmi 

di change detection, avendo come  immagine di riferimento quella precedente. È 

da  notare  che  non  verranno  recuperati  tutti  i  frames, ma  solo  alcuni  distanti 

temporalmente un certo intervallo ΔT variabile da utente. 

L’ encoder,  il cui  livello di qualità sarà controllato dalle oscillazioni dei parametri 

logici introdotti dagli algoritmi di change detection. 

 CODEC ADATTIVO 

 

Un’altra strada parallela per diminuire  il bit‐rate medio è quella di agire sul  frame‐rate; 

utilizzando infatti la relazione che lega il frame‐rate istantaneo col bit‐rate istantaneo 

 

 

 

fr = br\n

Page 32: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

32

fr= Frame Rare           br= Bit Rate            n= Numero di Bit per Frame 

 

e  considerando  il  fatto  che  frame  adiacenti  hanno  più  o  meno  lo  stesso  contenuto 

informativo, posso scartare frame riducendo il bit‐rate medio senza perdere informazioni 

significative; per  realizzare questo è  viene progettato un  filtro decimatore,  che elimina 

frame  equidistanziati  in  modo  da  ridurre  il  frame  rate  a  un  valore  voluto.  Il  filtro 

decimatore è pilotato in maniera adattiva: 

1. dai valori di qf : a ogni valore di qf è associato un valore di frame‐rate; 

2. dal valore massimo di bit‐rate medio  richiesto da utente utilizzando al  relazione 

precedente. 

Per  valori  bassi  di  qf  (<  2,  quindi  per  valori  non  significativi  di  change  detection,  che 

equivale  a  un  frame  con  basso  contenuto  informativo)  il  framerate  è  il minore  tra  i  2 

proposti; altrimenti, per qf ≥ 2, viene utilizzato il valore di frame‐rate associato al valore di 

qf, cercando di perdere il meno possibile frame con alto contenuto informativo. 

 

 

Il decimatore adattivo sarà composto essenzialmente da 3 oggetti: 

Il decimatore di  frame, che  imposterà un  frame‐rate che dipenderà, come detto 

dal valore di qf e dalla soglia di bit‐rate medio 

Un grabber che recupererà  l’immagine non compressa e farà partire gli algoritmi 

di change detection, avendo come immagine di riferimento quella precedente. 

Un grabber  che permetterà  il  calcolo del bit‐rate medio  fino a quel momento e 

quindi del frame rate necessario a stare sotto‐soglia. 

Page 33: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

33

 

L’ultima  cosa  da  analizzare  è  la  generazione  del  fattore  di  qualità  qf  in  funzione  degli 

indici  di  dissimilarità  calcolati  dai  2  algoritmi  di  change  detection.  Innanzi  tutto  sono 

possibili 3 configurazioni per la scelta dell’indice di dissimilarità da utilizzare: 

1. L’utilizzo  l’indice  di  dissimilarità  prodotto  dall’algoritmo  di Morphological  Scene 

Change Detection 

2. L’utilizzo  l’indice  di  dissimilarità  prodotto  dall’algoritmo  di  Full  Frame  Scene 

Change Detection (FDY e FDYUV) 

3. L’utilizzo del valore massimo dei due indici 

Quindi occorre definire una politica di generatore di  soglie  con  cui  confrontare  l’indice 

scelto. 

Vengono proposte 2 strade per la generazione della soglia: 

Lineare: le soglie sono equispaziate di un valore percentuale di 14, visto che sono 

contemplati 7 livelli di qf 

Page 34: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

34

 

Esponenziale:  l’andamento delle soglie segue un andamento  logaritmico secondo 

la legge 

 

Tuttavia  così  facendo  il  livello di qualità  “0”, e  in  generale  i  livelli più bassi,  sarebbero 

superati  troppo  velocemente  con  frame  con  contenuti  informativi  troppo  bassi, 

rischiando di sprecare banda. Quindi la legge è stata modificata allargando il livello “0”: 

 

Page 35: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

35

 

A questo punto è possibile creare una  relazione univoca che  lega  il valore dell’indice di 

dissimilarità con il livello di qualità. 

5.5 Tag e ricerca intelligente 

Gli algoritmi di change detection, oltre che permettere la realizzazione del codec adattivo, 

sono uno strumento che mi permette di catalogare  lo stream video  in gruppi di frames, 

pari al numero di  immagini per ogni  intervallo di tempo di scansione ΔT, o suoi multipli. 

Quindi  ad  ogni  frame  analizzato  col  change  detection  verranno  associati  dei  tag  che 

esprimeranno  il  livello  di  dissimilarità  tra  l’immagine  in  considerazione  e  quella 

precedente.  Inserendo, quindi, dei  valori di  soglia da utente,  sarà possibile  individuare 

spezzoni di video che hanno tag maggiori uguali di queste soglie e vederli in playback. 

 

 

 

 

 

 

 

 

Page 36: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

36

6 ALGORITMO JPEG 

Si è già accennato alla descrizione del formato di compressione JPEG (Joint Photographic 

Expert Group),  che  fa  parte  degli  algoritmi  di  compressione  di  tipo  lossy.  La  proposta 

come standard venne presentata e approvata nel 1991 e nel 1992 e  il  JPEG è diventato 

ufficialmente  uno  standard  ISO.  Spesso  capita  di  sentir  parlare  del  JPEG  come  di  un 

formato di compressione non distruttivo, ma a tale proposito occorre fare una precisione.  

Le specifiche JPEG descrivono tra l’altro un formato di compressione non distruttivo, non 

più usato a causa della sua  ridotta efficienza  rispetto alla versione “distruttiva”.  JPEG è 

uno dei  formati più usati  in assoluto e non solo dalla comunità  informatica,  il motivo di 

tanto  successo  è  facilmente  comprensibile:  osservando  attentamente  un’immagine  nel 

suo formato standard e la stessa immagine compressa in formato JPEG, esse risulteranno 

apparentemente  identiche, eppure  lo spazio occupato risulta notevolmente  inferiore nel 

caso dell’immagine JPEG. 

Il merito  di  questo  risultato  sorprendente  è  da  ricercarsi  negli  studi  sulla  percezione 

dell’occhio umano,  condotti per progettare  l’algoritmo usato per  la  compressione.  Si è 

notato anzitutto che le immagini, nello specifico le fotografie, presentano delle variazioni 

di  colore  e  luminosità  graduali  con  differenze  infinitesimali  tra  pixel  adiacenti.  Tali 

differenze sono praticamente  invisibili all’occhio umano nel complesso dell’immagine. In 

secondo  luogo,  la  sperimentazione  ha  portato  alla  conclusione  che  l’occhio  umano  è 

molto più sensibile alla luminosità di quanto non lo sia al colore delle immagini.  

A riprova di quanto detto è sufficiente osservare che in condizioni di luce ridotta, l’occhio 

si  abitua  a  tale  condizione, ma perde  la percezione del  colore,  riuscendo  a distinguere 

solo  immagini  in bianco e nero.  In altre parole  i colori sono percepiti solo  in condizioni 

appropriate di luminosità. 

Questi  due  importati  risultati  della  ricerca  hanno  portato  alla  progettazione  di  un 

algoritmo  di  compressione  JPEG  che  si  sviluppa  in  sei  fasi.  Di  queste,  i  primi  3  passi 

sfruttano i risultati ottenuti dalla ricerca.  

il  primo  passo  implica  la  trasformazione  dell’immagine  dalla modalità  RGB  alla 

modalità YUV;  

il secondo passo implica l’applicazione della Trasformata Coseno Discreta (DCT);  

Page 37: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

37

il terzo passo implica la rimozione degli elementi non percepibili dell’immagine. 

E’ risaputo che numerosi formati di immagine rappresentano ciascun pixel con la triade di 

colori Red Green Blue  (RGB).  La  somma dei  contributi di  ciascun elemento della  triade 

consente di  creare qualsiasi  sfumatura di  colore;  tuttavia, per quanto detto non  tutti  i 

colori sono percepibili dall’occhio umano. La ricerca e gli studi condotti sulla percezione 

delle immagini hanno portato alla conclusione che la luminosità è molto più rilevante del 

colore. Queste differenze  sono  alla base dell’idea  che ha portato  alla definizione dello 

standard YUV.  

La Y rappresenta la componente di luminanza, la U e la V sono dette invece componenti 

differenza e rappresentano la crominanza; tali componenti possono anche essere indicate 

rispettivamente come Componente differenza del blue (Cb) e Componente differenza del 

rosso (Cr). 

Il  primo  passo  dell’algoritmo  di  compressione  JPEG  implica  la  trasformazione 

dell’immagine dalla modalità di  rappresentazione del  colore RGB,  alla modalità YUV  (o 

YCbCr).  

E’  evidente  che  la  trasformazione  non  implica  una  riduzione  di  spazio:  se  sono  infatti 

necessari 8 bit per  rappresentare ciascuna componente RGB, cioè 24 bit  (3 x 8 bit) per 

ciascun pixel dell’immagine, saranno necessari altrettanti bit per rappresentare un pixel 

con la triade YUV; inoltre tale processo non è irreversibile. Per ridurre lo spazio occupato 

si ricorre ad una tecnica, che sfrutta le caratteristiche percettive dell’occhio umano.  

L’immagine viene divisa in gruppi di pixel e per ogni gruppo si memorizza la luminanza di 

ciascun pixel per  intero, mentre si sceglie un campione di  informazioni sulla crominanza 

per ciascun gruppo.  

Un esempio è  la rappresentazione YUV 4:2:2 che consente di rappresentare per ciascun 

pixel,  la  luminanza con 1 byte e  la crominanza con 1/2 byte per un totale di 2 byte per 

pixel contro i 3 byte della rappresentazione RGB e YUV standard, con un risparmio di circa 

il  33%.  Gli  effetti  della  compressione  JPEG  sono  quindi  evidenti  dal  primo  passo 

dell’algoritmo ed è da subito chiara l’irreversibilità del processo. 

Il  primo  passo  della  compressione  JPEG  implica  la  conversione  dell’immagine  dalla 

rappresentazione RGB in quella YUV. Il processo di conversione richiede l’applicazione di 

Page 38: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

38

un semplice sistema lineare e di una tecnica per consentire una compressione iniziale, che 

sfrutti  la  caratteristica  dell’occhio  umano  di  percezione  della  crominanza  e  della 

luminanza.  

Altre rappresentazioni YUV sono: YUV 4:4:4 (come la YUV standard), YUV 4:4:0 (guadagno 

di circa il 50%). E’ evidente che la tecnica descritta comporta una perdita di informazione 

e quindi è  irreversibile; completata  la fase di conversione, si procede poi con  il secondo 

passo per la compressione JPEG. 

 

Per sfruttare meglio la ridondanza di pixel e semplificare i calcoli, le immagini sono divise 

in  piani  che  a  loro  volta  sono  suddivisi  in  blocchi  di  8  X  8  pixel  (secondo  passo  di 

compressione). Ogni piano  subisce un’elaborazione differente, che meglio  si adatta alle 

caratteristiche dei pixel che lo compongono.  

 

Come anticipato il terzo passo di compressione implica l’applicazione dell’algoritmo della 

Trasformata Coseno Discreta (DCT). Ogni blocco di 8 X 8 pixel, può essere visto come un 

vettore nello  spazio a 64 dimensioni, a  tal proposito  si  consideri  il  concetto di matrice 

multidimensionale  in  C;  i  blocchi  rappresentano  una  base  detta  base  canonica  per  le 

immagini. 

La DCT  trasforma  la base  canonica  in una nuova base più adatta alla  compressione,  in 

particolare trasforma il blocco di 8 X 8pixel nel dominio dello spazio, in un blocco di 8 X 8 

coefficienti nel dominio delle  frequenze.  In  termini più elementari, dopo  l’applicazione 

dell’algoritmo, ogni blocco  trasformato  sarà  rappresentato da uno  spettro di  frequenza 

dell’immagine costituita da un raggruppamento di pixel bianchi e neri. 

Le  aree  bianche  di  uno  spettro  di  frequenza,  sono  indicative  di  una  maggiore 

concentrazione  di  energia,  in  queste  zone  l’intensità  del  contrasto  è  maggiore.  Il 

vantaggio  della  conversione  in  frequenza  delle  immagini  risiede  nella  possibilità  di 

individuare con maggiore semplicità e precisione  le aree di poco  interesse. Queste aree 

sono  rappresentate  da  alti  valori  di  frequenze  non  percepibili  dall’occhio  umano  e 

rappresentano sezioni dell’immagine sacrificabili. 

In generale,  il blocco rappresentato nel dominio della  frequenza rappresenterà valori di 

frequenza crescente dal coefficiente  in alto a sinistra al coefficiente  in basso a destra.  Il 

Page 39: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

39

primo coefficiente del blocco  in alto a sinistra rappresenta  la media dei valori del blocco 

nel  dominio  dello  spazio  ed  è  detto  Componente  Continua  (DC).  Il  passo  successivo  è 

strettamente  legato  ai  risultati  ottenuti  dall’applicazione  dell’algoritmo  DCT  ed  è 

significativo nel processo di compressione, apportando un contributo rilevante allo scopo. 

L’algoritmo DCT, tramite  il processo di trasformazione descritto trasforma  i blocchi di 64 

pixel dell’immagine da comprimere, rappresentati nel dominio dello spazio,  in blocchi di 

64 coefficienti, rappresentati nel dominio della frequenza. Questo processo come detto, 

consente di  individuare  facilmente  le zone “sacrificabili” dell’immagine o meglio  le aree 

da tagliare per ridurne le dimensioni. Il quarto passo dell’algoritmo di compressione JPEG, 

è detto di quantizzazione ed esegue l’eliminazione fisica di tali aree. 

 Il  processo  implica  la  moltiplicazione  del  blocco/matrice  di  8  X  8  coefficienti  con  i 

corrispondenti valori contenuti in una tabella detta “tabella di quantizzazione”. 

Questi valori, detti “coefficienti di quantizzazione”, sono tutti compresi tra 0 e 1. I valori 

più  bassi  sono  forniti  in  corrispondenza  delle  alte  frequenze,  quelli  più  alti  in 

corrispondenza delle basse frequenze. Il processo implica l’arrotondamento all’intero più 

vicino.  La  quantizzazione  comporterà  l’azzeramento  di molti  coefficienti  del  blocco  in 

corrispondenza  di  valori  di  frequenza  elevati  (valori  poco  rilevanti).  In  generale,  data 

l’organizzazione di tali valori all’interno di un blocco, si avrà una piccola concentrazione di 

elementi diversi da zero in alto a sinistra del blocco, tutti gli altri in basso a destra saranno 

azzerati. 

La scelta di un fattore di compressione delle immagini JPEG implica in definitiva la scelta 

di  un  valore  di  scala  della  tabella  di  quantizzazione.  Ovviamente  valori  bassi 

implicheranno  un  maggior  numero  di  coefficienti  azzerati  con  una  più  evidente 

granulosità  a  favore  di  una  maggiore  compressione.  I  coefficienti  vengono  infine 

organizzati  in modo  sequenziale  favorendo  una  lettura  a  zig‐zag.  Questa  disposizione 

favorisce  la  lettura  sequenziale  di  elementi  simili  tra  loro,  consentendo  una maggiore 

efficienza degli algoritmi di compressione applicati. 

Il  fattore  di  compressione  all’immagine  così  approssimata  viene  infatti  ulteriormente 

migliorato  nel  quinto  passo,  procedendo  con  l’applicazione  di  un  algoritmo  di 

compressione non distruttivo. Quest’ultimo  è  generalmente  l’algoritmo di Huffman  già 

descritto in modo esaustivo nel paragrafo sulla compressione dei file.  

Page 40: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

40

 

La  compressione  vera  e  propria  è  ora  conclusa  ed  è  chiaro  che  la  serie  di  interventi 

eseguiti  sull’immagine  non  consentirà  più  di  risalire  al  suo  formato  originario.  Per 

consentire  una  certa  portabilità  dell’immagine  o meglio,  per  consentire  di  variarne  il 

formato di rappresentazione in base agli usi che se ne faranno successivamente, nel sesto 

e ultimo passo del processo di compressione vengono aggiunti al file JPEG così ottenuto la 

tabella di quantizzazione e il vocabolario risultante dalla compressione con Huffman.  

Le  informazioni  sono  tali  da  poter  risalire  ad  una  rappresentazione  dell’immagine  che 

consenta all’utente di sceglierne la qualità, potendo se necessario optare per un fattore di 

compressione superiore o  inferiore.  Il processo di decompressione è  l’esatto opposto di 

quello di compressione. 

6.1 M‐JPEG 

Il Motion  JPEG o M‐JPEG è  forse  il più usato  tra gli algoritmi di compressione video. Le 

telecamere  digitali  effettuano  acquisizioni  di  singoli  fotogrammi  e  ne  effettuano  la 

compressione  in  formato  JPEG.  A  compressione  avvenuta  la  telecamera  genera  una 

trasmissione  in  flusso continuo di max. 30  immagini al secondo  (30fps). Nel caso di una 

trasmissione superiore ai 16fps  le  immagini vengono percepite dall'occhio umano come 

Page 41: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

41

un movimento fluido. Questo algoritmo di compressione prende il nome di Motion JPEG 

perché  di  fatto  vengono  trasmesse  tante  immagini  complete  con  lo  stesso  livello  di 

compressione/qualità in formato JPEG. 

Uno dei vantaggi dello standard Motion JPEG risiede nel fatto che le varie immagini di una 

sequenza  video  possono  avere  la  stessa  qualità,  che  varia  a  seconda  del  livello  di 

compressione  scelto per  la  telecamera di  rete o per  il codificatore video. Maggiore è  il 

livello di compressione, minore è la qualità delle immagini e la dimensione file. In alcune 

condizioni, ad esempio di scarsa illuminazione o quando una ripresa diventa complessa, le 

dimensioni  del  file  immagine  possono  diventare  piuttosto  grandi  e  utilizzare  una 

larghezza  di  banda  e  uno  spazio  di memorizzazione maggiori.  Per  impedire  l'aumento 

della  larghezza  di  banda  e  dello  spazio  di  memorizzazione  utilizzati,  i  prodotti  con 

tecnologia  video  di  rete  consentono  all'utente  di  impostare  un  limite  massimo  di 

dimensione file per un fotogramma immagine. 

Poiché  non  esistono  legami  tra  i  fotogrammi  in  formato Motion  JPEG,  il  video Motion 

JPEG è "solido", nel senso che se durante la trasmissione si perde un fotogramma, il resto 

del video non verrà compromesso. 

Il  formato Motion  JPEG  è  uno  standard  caratterizzato  da  un'ampia  compatibilità  ed  è 

diffuso in applicazioni in cui sono necessari singoli fotogrammi di una sequenza video (ad 

esempio, per l'analisi) e in cui vengono utilizzate velocità di trasmissione ridotte, di solito 

5  fotogrammi al secondo o meno. Lo standard Motion  JPEG può essere utile anche per 

applicazioni che richiedono l'integrazione con sistemi che supportano solo Motion JPEG. 

Lo  svantaggio principale dello  standard Motion  JPEG è  rappresentato dal  fatto che non 

utilizza tecniche di compressione video per ridurre  i dati, poiché consiste  in una serie di 

immagini fisse e complete. Il risultato è una velocità di trasmissione  in bit relativamente 

alta o un rapporto di compressione basso per  la qualità offerta rispetto agli standard di 

compressione video MPEG‐4 e H.264. 

 

 

Page 42: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

42

7 STANDARD DI CODIFICA: MPEG 

MPEG è l'acronimo di "Moving Pictures Experts Group", ed è il soprannome attribuito all' 

ISO/IEC JTC1 SC29 WG11: 

• ISO: International Organization for Standardization 

• IEC: International Electrotechnical Committee 

• JTC1: Joint Technical Commitee 1 

• SC29: Sub‐committee 29 

• WG11: Working Group 11 

MPEG è quindi un gruppo di lavoro internazionale che stabilisce degli standard dei sistemi 

di  compressione  per  immagini  in  movimento  con  audio  associato.  La  metodologia 

adottata suddivide  il  lavoro  in tre fasi, che riguardano  i Requisiti (requisiti degli obiettivi 

che si desidera raggiungere), la Competitività (realizzare standard il più duraturi possibili) 

e la Convergenza (integrare in un'unica soluzione le proposte promettenti e valide). 

MPEG è nato nel 1988 e da allora ha prodotto diverse versioni dello standard. 

MPEG‐1: Utilizzato nei Video CD è un formato a bassa qualità (analoga al sistema 

VHS). Definito a  livello di  standard nel 1992, questo  formato è  stato progettato 

per  la  codifica  di  immagini  in movimento  e  per  l'audio  ad  esse  associato  con 

bitrate fino a circa 1,15 Mbit/s per il video e dai 384 ai 192 Kbit/s per l'audio. 

MPEG‐2 E' stato sviluppato a partire dall'MPEG‐1 ma progettato per una varietà 

più ampia di applicazioni. Esiste dal 1994. L'applicazione primaria è la trasmissione 

a qualità televisiva CCIR 601 con un bitrate tra 3 e 10 Mbit/s, ma è efficiente anche 

per applicazioni  con bitrate  superiori  come HDTV. E' utilizzato nelle  trasmissioni 

satellitari digitali, nei DVD e nel digitale terrestre. La sua caratteristica principale è 

la  scalabilità,  cioè  la possibilità di  creare  soluzioni di  codifica e decodifica più o 

meno complesse in base al tipo di prodotto da realizzare. 

MPEG‐3  Inizialmente  sviluppato per HDTV  in  seguito  si è  scoperto che  l'MPEG‐2 

era sufficiente per HDTV e quindi questo nuovo standard venne abbandonato 

MPEG‐4 Sviluppato dal 1993 al 1998, è stato progettato per la codifica audiovisiva 

a  bassissimo  bitrate.  Tale  formato  può  essere  considerato  un'evoluzione 

dell'MPEG‐2 nella gestione di immagini provenienti dalla televisione digitale, dalle 

applicazioni  grafiche  interattive,  nella  distribuzione  e  nell'accesso  di 

Page 43: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

43

multimedialità in rete. La principale caratteristica è la capacità di gestire la codifica 

di  singoli  oggetti:  audio,  video,  sottotitoli  sono  considerati  indipendenti.  lo 

standard  supporta  anche  caratteristiche  specificate  da  terze  parti  come  una 

particolare gestione dei Digital Rights Management o una gestioneinterattiva dei 

contenuti. A  livello qualitativo  lo standard non offre miglioramenti evidenti come 

nel  passaggio  da  MPEG‐1  a  MPEG‐2,  ma  a  livello  di  bitrate  il  risparmio  è 

significativo. Per la codifica video è stabilito lo standard H .264. 

MPEG‐7 Un sistema formale per descrivere i contenuti multimediali 

MPEG‐21  Gruppo  nato  per  sviluppare  una  piattaforma  comune  per  le  future 

applicazioni multimediali 

Quello  che  ci  interessa  maggiormente  è  l'MPEG‐4  in  quanto  è  lo  standard  che 

attualmente si è affermato in quasi tutti i campi della codifica video digitale. Nonostante 

le sue specifiche siano ormai "vecchie", si sono diffusi sul mercato prodotti hardware e 

software che implementano questo standard. Nel corso degli anni sono state aggiunte ed 

elaborate delle altre parti ed alcune di queste sono tutt'ora in evoluzione. 

lo standard di codifica MPEG utilizza le seguenti tecniche di compressione: 

• Motion  compensation  con  block matching  su  blocchi  8×8  o  16×16  in modo  da 

eliminare la ridondanza temporale 

• DCT e  zonal masking per eliminare  la  ridondanza  spaziale  Il  compressore MPEG 

prende delle decisioni, cioè non tratta tutti i blocchi allo stesso modo: 

o Se  un  blocco  non  si  è mosso,  non  viene  inviato  niente,  e  ci  si  riferisce 

all’immagine precedente; 

o Se un blocco  si  è mosso  con un  vettore ben definito,  allora  si  applica  la 

motion compensation; 

o Se un blocco si è mosso, ma  il vettore non è ben definito allora  il blocco 

viene codificato solo intraframe. 

 

 

 

Page 44: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

44

Lo  standard  MPEG‐1  non  prevede  la  struttura  interallacciata  e  invia  3  matrici:  1  di 

luminanza  e  2  di  crominanza  sottocampionate  di  un  fattore  2  sia  verticalmente  che 

orizzontalmente (4:2:2). 

 

Un filmato MPEG‐1 è un  insieme  i tanti GOP (group of pictures) e  il codec  lavora GOP a 

GOP:  in  questo modo  viene  introdotto  un  ritardo  iniziale  dovuto  all’elaborazione  del 

primo GOP; tuttavia nei successivi, mentre uno viene trasmesso,  l’altro viene codificato. 

L’elaborazione a GOP  facilita  l’accesso  random ai  frame: mentre un video che ha come 

unità costitutiva il frame, per passare dalla posizione 0 alla N‐esima deve elaborare tutte 

le immagini ivi comprese, con la tecnica GOP occorre decodificare solo la prima immagine 

del gruppo  fino ad arrivare a quella più  vicina ad N; a questo punto basterà elaborare 

pochi frame (al massimo la lunghezza del GOP) per raggiungere l’immagine voluta. Questa 

caratteristica permette anche il fast forward/fast reverse e l’editing all’interno di ciascun 

GOP. Il GOP è costituito da frame di 3 tipi: 

1. Intra‐picture  (I‐picture),  immagini  codificate  solo  intra‐frame,  con  l’utilizzo della 

DCT, della zonal masking e della codifica di Huffmann;  il  fattore di compressione 

non è quindi elevatissimo 

2. Predicted‐picture  (P‐picture),  immagini  codificate  anche  interframe  (motion 

compensation con block matching su blocchi di 8×8 o 16×16 pixel) con predizione 

forward  o  backward  da  una  I‐picture  o  da  un’altra  P‐picture;  il  fattore  di 

compressione è elevato 

3. Bidirectional‐Interpolated‐picture  (B‐picture),  immagini  codificate  anche  inter‐

frame (motion compensation con block matching su blocchi di 8×8 o 16×16 pixel) 

con  predizione  forward,  backward  o  in  modo  bi‐interpolato  (predetta 

Page 45: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

45

dall’interpolazione  di  un  immagine  precedente  e  successiva)  da  parte  delle  I‐

picture e P‐picture; il fattore di compressione è elevatissimo 

 

N.B. Nelle P‐picture e B‐picture, nel caso in cui nel frame di riferimento non si trova una 

buona predizione inter‐frame del blocco, questo viene codificato intra‐frame come una I‐

picture. 

Un GOP  inizia  sempre  con  una  I‐picture  e  finisce  con  la  I‐picture  del GOP  successivo. 

L’utilizzo delle  I‐picture  come primo  frame del GOP è necessario, oltre  che per dare  la 

possibilità  di  un  accesso  random,  per  evitare  la  propagazione  eccessiva  degli  errori  di 

quantizzazione: in questo modo l’errore di quantizzazione si propaga al massimo fino alla 

successiva I‐picture. Per comodità si tende a dare una struttura regolare al GOP che viene 

mantenuta costante durante tutta la codifica del filmato.  

 

Il GOP viene specificato mediante 2 parametri che sono: 

1. La lunghezza del GOP (N) 

2. La distanza  tra una  I‐picture e una P‐picture, o  tra una P‐picture e un’altra  (M); 

identifica quindi  il numero di B‐picture  tra una  I‐picture una P‐picture o una P‐

picture e un’altra (M‐1) 

All’interno del GOP non è detto che venga mantenuto  l’ordine dei  frame, poiché non è 

detto che il frame precedente dia la miglior predizione del successivo: l’ordine di codifica 

(coding order) può essere diverso dall’ordine di visualizzazione (display order). Esempio 

Page 46: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

46

 

 

Quindi  notiamo  che,  per  rendere  possibile  la  codifica  con  predizione,  occorre  che  sia 

l’encoder che il decoder abbiano un buffer dove tenere le immagini già decompresse, ma 

che  servono  come  riferimento.  Occorre  inoltre  che,  nel  display  order,  le  B‐picture 

compaiano  sempre  dopo  i  propri  frame  di  riferimento,  in modo  tale  che,  al momento 

della decodifica, questi siano già stati elaborati e si trovino nel buffer. 

 

Lo standard MPEG‐2 si differenzia dal precedente per 2 fattori principali: 

1. prevede 3 diverse configurazioni delle matrici di  luminanza e crominanza  (4:2:2, 

4:4:2, 4:4:4) 

2. accetta  sia  video  interallacciati  che  progressivi  MPEG‐2  prevede  quindi  2 

configurazioni di frame: 

 

• Interlaced  Frame  Picture,  in  cui  i  semiquadri  pari  e  dispari  vengono 

trasmessi  fusi  insieme,  formando  un  frame; 

 

 

 

Page 47: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

47

• Interlaced Bottom and Top Field Picture,  in  cui  i  semiquadri  sono  inviati 

separatamente.  

 

 

Quindi nei GOP possono essere presenti: 

• I‐frame picture, P‐frame picture, B‐frame picture, per video progressivi 

• I‐frame picture, P‐frame picture, B‐frame picture e/o I‐field picture, P‐field picture, 

B‐field picture, per video interallacciati. 

 

Esistono quindi 2 tipi di predizione per la compensazione del moto: 

• Simple  Field  Prediction,  cioè  è  possibile  predire  il  field  attuale  usando  come 

riferimento uno o più  field precedenti. Un  top  field può essere predetto  sia dal 

Page 48: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

48

precedente top field che dal precedente bottom field; un bottom field può essere 

predetto solamente dal top field appartenente alla stessa immagine. 

• Simple Frame Prediction, cioè è possibile predire un frame riferendosi a uno o più 

frame precedenti 

 

NB. Le field picture possono avere delle predizioni di tipo simple field prediction, mente le 

frame  picture  possono  avere  predizioni  sia  di  tipo  simple  field  prediction  che  di  tipo 

simple frame prediction. 

 

MPEG‐2  è  un  compressore  che  permette  la  scalabilità,  cioè  la  possibilità  di  variare  la 

risoluzione  del  video  in  base  alle  richieste  dell’utente;  prevede  tre  profili:  il  più  basso 

(base  layer)  contiene  le  informazioni  relative  alla  risoluzione  e  alla qualità più bassa;  i 

livelli  successivi  (enhancement  layer)  contengono  le  informazioni  aggiuntive  che 

permettono di avere una risoluzione e una qualità maggiore. Esistono quindi  tre diversi 

schemi di codifica scalabile: SNR scalability, spatial scalability, temporal scalabilità adatti 

alle diverse che si possono avere in differenti applicazioni. 

 

Lo  standard MPEG‐4  risulta molto  più  flessibile  rispetto  ai  precedenti  compressori,  in 

modo da soddisfare meglio le necessità richieste dai moderni sistemi multimediali. Come 

impostazione  è molto  simile  allo  standard MPEG‐2, ma  differisce  da  questo  in modo 

decisivo poiché  la  sua unità di misura non è più  il  frame, ma  il  concetto di oggetto:  il 

punto  centrale  dello  standard MPEG‐4  è  il Video Object  picture  (VOP),  cioè  un’entità 

omogenea sulla quale viene eseguita  la compressione e  la codifica (per esempio un VOP 

potrebbe  essere  un  uomo,  oppure  il  background  immobile  di  un  frame);  posso  quindi 

considerare un frame come un insieme di tanti VOP.  

Ciascun VOP è caratterizzato da proprietà caratteristiche, come  la  forma,  la  tessitura,  il 

movimento:  quindi  possiamo  vedere  i  VOP  come  elementi  autonomi,  e  quindi 

estrapolabili dalla scena in cui compaiono; non considereremo più, quindi, i GOP e i suoi 3 

differenti tipi di picture, ma useremo i GOV (Group Of VOP) e i suoi 3 differenti tipi di VOP 

(I‐VOP, P‐VOP, B‐VOP). 

Page 49: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

49

I VOP possono essere creati in vari modi (tramite segmentazione o l’utilizzo di descrizioni 

parametriche  usate  in  computer  graphics), ma,  in  sistemi  dove  l’unica  necessità  è  la 

compressione, posso considerare un gruppo di immagini rettangolari come VOP. 

Anche MPEG‐4 prevede  formati scalabili come MPEG‐2, ma con  la differenza che questi 

sono  applicabili  ai  singoli VOP:  in  uno  stesso  frame  posso  avere  oggetti  con  differenti 

gradi di scalabilità. 

 

7.1 Componenti dell'MPEG‐4 

Ecco  la  lista  dei  diversi  sotto‐standard  divisi  in  Part  (parti),  quelli  evidenziati  sono  di 

maggiore interesse per i nostri scopi: 

Part  Tipo  Descrizione 

1  Systems  Descrive la sincronizzazione e il multiplexing di video e audio 

2  Visual  Codec per dati visivi (video, still textures, synthetic images ecc). Uno 

dei molti "profili" in Part 2 è l'Advanced Simple Profile (ASP) 

3  Audio   Codec per la compressione di segnali audio 

4  Conformance  Descrive le procedure per testare la conformità delle altre part 

5  Reference Software  Fornisce software per mostrare e chiarire le altre part 

6  Delivery Multimedia  Interfaccia tra l'applicazione e il trasporto 

Page 50: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

50

Integration 

Framework(DMIF) 

 

7  Optimized  Reference 

Software 

Fornisce  esempi  di  come  fare  al  meglio  le  implementazioni  (è  in 

relazione con la part 5) 

8  Carriage  on  IP 

networks 

Specifica un metodo per trasportare il contenuto MPEG‐4 su reti IP 

9  Reference Hardware  Fornisce disegni hardware per mostrare  come  implementare  le  altre 

part 

 

10  Advanced  Video 

Coding (AVC) 

Codec per segnali video. E' tecnicamente identico allo standard ITU‐T 

H.264 

11  Scene  description 

and  Application 

engine (BIFS) 

Può essere usato per contenuto 3D o sottotitoli 

12  ISO  Base  Media  File 

Format 

Formato file per memorizzare contenuto multimediale 

 

13  Intellectual Property 

Management  and 

Protection  (IPMP) 

Extension 

Gestisce i diritti d'autore 

 

14  MPEG‐4 File Format  Il formato file designato come container, che è basato sulla part 12 

15  AVC File Format  Per la memorizzazione di video AVC (basato sulla part 12) 

 

16  Animation 

Framework 

eXtension (AFX) 

Gestisce le animazioni 

 

17  Timed  Text  subtitle 

format 

Gestisce i sottotitoli 

 

L'MPEG è molto usato nello streaming audio/video, di solito si fa riferimento allo standard 

MPEG‐4 Parte  2, noto  anche  come MPEG‐4 Visual  (evidenziato  in  tabella).  L'MPEG nel 

Page 51: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

51

corso degli anni è stato migliorato ed attualmente l’MPEG‐4 riesce a superare i limiti dei 

25/30fps  delle  prime  versioni mantenendo  un  bit  rate  relativamente  basso.  Anche  lo 

standard MPEG‐4  Part  10‐AVC  ha  caratteristiche  che  ben  si  adattano  ad  applicazioni 

richiedono immagini di alta qualità e con larghezza di banda virtualmente limitata. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 52: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

52

8 STANDARD  ITU H.263 

Lo  standard  di  codifica  H.263  rappresenta  ad  oggi  un  diretto  discendente  della 

metodologia di compressione DCT di tipo “motion compensated”, oltretutto prevalente in 

diversi standard esistenti quali ad esempio l’H.261, MPEG‐1 e MPEG‐2. 

La loro primaria applicazione riguarda la compressione di dati audio e video sia a basso bit 

rate per la telefonia mobile sia ad alta qualità per le applicazioni HDTV. 

Resta comunque  il  fatto che  l’algoritmo di compressione H.263 è stato  introdotto come 

elevato  standard di  compressione non  specificatamente  incentrato  su bit  –  rate molto 

bassi. 

I miglioramenti  apportati  con  tale  algoritmo,  rispetto  al  precedente H.261,  riguardano 

essenzialmente lo schema  “motion compensated”. 

A  64  kbps,  il  guadagno  di  performance  dell’H.263,  rispetto  al  precedente,  è  valutato 

intorno  ai  2  dB  in  termini  di  PSNR  (Peak  Signal  to Noise  Ratio),  ovvero  il  fattore  che 

rappresenta la misura della distorsione introdotta comprimendo l'immagine.    

Le caratteristiche avanzate dell’algoritmo, la cui implementazione nell’algoritmo di base è 

certamente opzionale e basate, oltretutto, su sistemi avanzati di tipo “prediction mode”, 

riuscirebbero ad indurre un’ulteriore guadagno sulla qualità della compressione valutabile 

pari a circa 1 dB. 

Un’ulteriore funzionalità  introdotta con  l’algoritmo H.263 è  il sistema “advanced picture 

mode” che utilizza quattro vettori per  la stima del moto su un blocco 8 x 8  invece di un 

singolo vettore 16 x 16, migliorando sensibilmente la qualità dell’immagine processata. 

La  risoluzione  del  dato  elaborato  è  stata  oltretutto  incrementata  rispetto  all’algoritmo 

H.261 riuscendo a raggiungere una stima del moto con un’accuratezza pari a ½ pixel. 

Infine, è  stato  implementato nell’algoritmo un nuovo  tipo di  frame  chiamato PB‐frame 

(bidirectional  prediction  frame)  che  consiste  in  un  normale  P‐frame  e  un  nuovo  frame 

predittivo bi‐direzionale. 

Tale  soluzione dovrebbe essere  in  grado di  accrescere  la  risoluzione  temporale  con un 

impegno minimo in fase di riproduzione video. 

Dalle  considerazioni  fatte  finora,  emerge  che  l’introduzione  del  codec  ITU  H.263 

renderebbe possibile buoni guadagni in fase di codifica, potendo da un lato ridurre il bit – 

Page 53: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

53

rate  di  uscita  della  codifica  e  dall’altro  aumentare  il  fattore  di  qualità  delle  immagini 

compresse a spese di un lieve accrescimento della complessità computazionale. 

H.263 può ricevere 5 formati di immagini standardizzati come ingresso: 

- sub‐QCIF (88x72) 

- QCIF (176x144) 

- CIF (352x288) 

- 4CIF (704x576) 

- 16 CIF (1408x1152) 

Per  tutti  i  formati  vale  il  fatto  che  la  componente  di  luminanza  ha  risoluzione  doppia 

rispetto a quelle di crominanza, quindi anche dimensioni doppie.  

Vedendo  un’immagine  come  una  matrice  di  pixel  di  dimensioni  dx  *  dy  ,  la  tabella 

seguente riassume le caratteristiche dei formati supportati.  

Le  immagini  campionate,  quindi,  posseggono  una maggiore  informazione  per  quanto 

riguarda  la  componente  di  luminanza,  cioè  l’informazione  in  bianco  e  nero;  questo  è 

dovuto  al  fatto  che  tale  componente  è  quella  che  contiene  la  maggior  parte 

dell’informazione,  e  per  questo  motivo  l’occhio  umano  non  risente  di  un  eventuale 

sottocampionamento. 

L’immagine  intera è strutturata a diversi  livelli  in unità sempre più elementari per poter 

essere trattata dal codificatore in modo ordinato ed efficiente.  

 Tabella. Elenco dei formati supportati da H.263 

 

Il  componente di  luminanza dell’immagine è  campionato  a quelle  risoluzione di  frame, 

mentre  le  componenti  di  crominanza, Cb  e Cr,  sono  campionate  secondo  entrambe  le 

direzioni orizzontale e verticale. 

Page 54: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

54

Ogni  immagine nella sequenza video di  input è divisa  in macroblocchi, che consistono a 

loro volta di quattro blocchi di luminanza di 8 pixel x 8 linee seguite da un blocco Cb ed un 

blocco Cr, ognuno costituito da 8 pixel x 8 linee. 

Un gruppo di blocchi  (GOB) è definito come un numero  intero di macroblocchi  riga, un 

numero che è dipendente dalla risoluzione dell’immagine. 

Per esempio, un GOB consiste di un singolo macroblocco riga alla risoluzione QCIF.  

La  codifica  video mira  a  fornire  una  rappresentazione  compatta  dell’informazione  nei 

frame  video  rimuovendo  le  ridondanze  spaziali  che  esistono  dentro  i  frame  stessi  ed 

anche le ridondanze temporale tra frame successivi. 

Come nel caso dell’H.261 standard, l’H.263 standard è basato sull’uso della DCT, ovvero la 

trasformata  “Discrete  Cosine  Transform”,  per  la  rimozione  delle  ridondanze  spaziali  e 

l’uso della stima e compensazione del moto per la rimozione delle ridondanze temporali. 

Quando un frame risorsa è codificato con l’utilizzo della DCT, l’encoder si dice che opera 

in modalità intracoding e il frame codificato corrispondente viene chiamato I‐picture. 

Nel  caso  in  cui  viene  utilizzata  la  predizione  temporale,  l’encoder  si  dice  che  opera  in 

modalità intercoding e il frame corrispondente viene denominato P‐picture. 

Un diagramma a blocchi di un tipico encoder è riportato nella figura seguente.  

Page 55: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

55

 

8.1 Stima e compensazione del moto 

Spesso accade che i frame video contigui nel tempo siano anche simili fra di loro. 

In  tal senso sarebbe certamente più  funzionale  rielaborare  il  frame  in esame sulla base 

delle  informazioni ricevute dal frame  immediatamente precedente  in modo da snellire  il 

flusso dati. 

Un primo approccio per la realizzazione di tale logica operativa consiste semplicemente in 

un’analisi differenziale tra il frame corrente ed il precedente di riferimento. 

È ovvio che quando  i due  frame risultano molto similari  tra di  loro sarà certamente più 

conveniente  processare  le  differenze  che  il  frame  originale  rendendo  così  il  frame 

precedente come uno strumento di stima del frame successivo. 

Un  approccio  certamente  più  sofisticato  per  incrementare  l’efficienza  della  codifica 

consisterebbe nel lavorare il frame corrente a livello di macro‐blocchi, invece di lavorarlo 

nella sua completezza come descritto precedentemente. 

Page 56: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

56

Il  processo  descritto  prende  il  nome  di  “motion  compensation”  o,  più  precisamente, 

predizione a compensazione di moto ed è basata sul principio che nella maggior parte del 

moto complessivo si registrano nei macro‐blocchi moti tendenzialmente di tipo traslatori.  

Questo approccio si propone di trovare, per ogni blocco 16 x 16 di luminanza di un macro‐

blocco nel frame corrente, il miglior blocco di matching nel frame precedente. 

Per la realizzazione di tale logica, solitamente si provvede a definire una finestra di ricerca 

all’interno  dell’algoritmo  dell’encoder  all’interno  della  quale  viene  implementata  la 

funzione di ricerca del miglior blocco di accoppiamento. 

Il moto di un blocco 16 x 16 di un macroblocco viene rappresentato attraverso un vettore 

di  moto  che  ha  due  componenti  in  cui  la  prima  componente  indica  la  disposizione 

orizzontale mentre la seconda indica la disposizione verticale.  

Per  la  valutazione  delle  similitudini  possono  essere  definiti  più  criteri  tra  i  quali  il  più 

diffuso è il SAD, ovvero Sum of Absolute Differences. 

In  virtù  di  tale  criterio,  la  fase  di  ricerca  del  migliore  accostamento  consiste  nella 

valutazione del SAD per ogni locazione di pixel con dentro la finestra di ricerca specifica. 

Questo approccio è denominato full search o anche exhaustive search ed è, solitamente, 

dispendiosa dal punto di vista computazionale ma, tuttavia, garantisce una buona resa di 

matching. 

Un approccio più efficiente da questo punto di vista consiste nel restringere  la ricerca a 

pochi  punti  solamente  in  un’intera  area  di  ricerca,  ovvero  dove  c’è  più  probabilità  di 

trovare un buon matching. 

Questi punti di ricerca sono definiti attraverso  la definizione di vettori di predizione del 

moto (prediction motion vectors) il cui calcolo è basato su vettori di moto di macroblocchi 

precedentemente codificati. 

L’identificazione dei macroblocchi di confronto viene quindi utilizzata per  la costruzione 

del frame di predizione che viene quindi utilizzato per il confronto con il frame in esame 

per la produzione di un frame residuo da codificare. 

Nell’algoritmo  H.263  di  base,  la  quantizzazione  è  implementata  utilizzando  lo  stessa 

ampiezza  di  step  all’interno  di  un macroblocco,  lavorando  sempre  con  una matrice  di 

quantizzazione uniforme. 

Page 57: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

57

Eccetto per  il primo coefficiente di un  intra blocco che viene codificato utilizzando uno 

step di 8, sono ammessi livelli di quantizzazione in un range compreso tra 2 e 62. 

L’uso di  Annex T in alcuni dei profili H.263 rende possibile utilizzare un range esteso della 

DCT ed un’ampiezza di step modificata per la crominanza. 

Dalle considerazioni e dalle funzionalità esposte della DCT emerge che, parallelamente ad 

una maggiore flessibilità per quanto riguarda l’encoder, si riesce ad incrementare anche la 

fedeltà sulla crominanza. 

 

8.2 L’Entropy coding 

L’entropy coding è  implementata attraverso codici di  lunghezza variabile  (VLC “Variable 

Length Codes) ed è usato per rappresentare efficientemente i vettori stimati di moto ed i 

coefficienti quantizzati della DCT. 

I  vettori  di moto  sono  prima  predetti  settando  i  valori  dei  loro  componenti  sul  valor 

medio di quelli vicini già trasmessi. 

I vettori di moto di differenza sono i VLC codificati. 

Come per i coefficienti quantizzati della DCT, essi vengono prima convertiti in una stringa 

monodimensionale  per  l’entropy  encoding  attraverso  un’operazione  di  scansione  a 

zigzag. 

La  stringa  risultante  contiene  un  numero  di  entrate  non  nulle  e  probabilmente molte 

entrate nulle. 

Questa  riorganizzazione  colloca  per  primo  il  coefficiente DC  nella  stringa  ed  i  restanti 

coefficienti AC sono ordinati dalla bassa verso l’alta frequenza. 

Quindi,  la stringa può essere rappresentata come un numero di segmenti cuciti  insieme, 

dove ogni segmento contiene uno o più (o nessuno) zeri seguiti da coefficienti non nulli. 

Per codificare efficientemente  l’intera stringa, ad ogni segmento è assegnata una parola 

chiave,  che  per  i  segmenti  più  frequenti  ha  un  numero minimo  di  bit, mentre  per  i 

segmenti meno frequenti ha un numero più alto di bit.  

La parola chiave è generata in base a tre parametri (LAST, RUN, LEVEL). 

Il simbolo RUN è definita come la distanza tra due coefficienti non nulli nella stringa (per 

esempio, i numeri di zeri in un segmento). 

Il simbolo LEVEL è il valore non nullo immediatamente seguente una sequenza di zeri. 

Page 58: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

58

Il  simbolo  LAST,  quando  impostato  a  1,  è  usato  per  indicare  l’ultimo  segmento  nella 

stringa.  

 

8.3 Controllo della codifica 

La funzionalità di controllo della codifica consente lo switching, a livello del macroblocco, 

tra le modalità inter e intracoding. 

L’H.263 standard non specifica come eseguire il controllo della codifica. 

Il  criterio usato per decidere  la modalità di codifica è  spesso  il valore SAD per un dato 

macroblocco, precedentemente descritto. 

Se  il macroblocco  non  cambia  significativamente  rispetto  all’immagine  di  riferimento, 

allora  l’encoder  può  saltare  la  codifica  per  quel  macroblocco  e  il  decoder  ripeterà 

semplicemente    il  macroblocco  collocato  nell’allocazione  spaziale  del  macroblocco 

soggetto nell’immagine di riferimento. 

 

8.4 Il decoder 

Un diagramma a blocchi di un decoder tipico è mostrato nella figura seguente. 

Nel  caso  di  un macroblocco  intracoded,  l’encoder  esegue  solamente  la  quantizzazione 

inversa  e  le  operazioni  inverse  di  trasformazione  DCT  per  ricostruire  il  macroblocco 

originale. 

Il macroblocco originale è, allora, usato nel frame ricostruito. 

Nel caso di un macroblocco intercoded, il decoder opera esegue la quantizzazione inversa 

e  le  operazioni  inverse  di  trasformazione  DCT  sulla  base  dei  coefficienti  DCT 

corrispondenti alla predizione residua. 

Il  decoder  utilizza  anche  l’informazione  nei  vettori  di  moto  per  trovare  il  miglior 

macroblocco di matching nel frame precedentemente ricostruito. 

Quest’ultimo  è  successivamente  aggiunto  al  residuo  per  ricostruire  il  macroblocco 

originale. 

Una volta  ricostruito,  il  frame completo viene quindi  immagazzinato per un suo utilizzo 

nella decodifica del frame immediatamente seguente. 

 

Page 59: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

59

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 60: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

60

9. STANDARD H.264 

La  codifica  delle  informazioni  video  è  oggetto  di  studio  dei  gruppi  di  normalizzazione 

ISO/IEC (MPEG, Motion Picture Expert Group) e ITU (VCEG, Video Coding Experts Group), 

il cui lavoro portò alla definizione della parte 2 di MPEG‐2 e allo standard ITU‐T H.262 nel 

1995. L'ITU sviluppò indipendentemente l'H.263 e due estensioni (pubblicate sotto forma 

di  annessi)  denominate  H.263+  e  H.263++.  Nel  frattempo  in MPEG  si  procedeva  allo 

sviluppo della parte 2 relativa alla codifica video dello standard MPEG‐4, partendo come 

base da H.263.  

Nel 2001 fu deciso, per evitare divergenze nello sviluppo ed i problemi di sincronizzazione 

fra  i  due  organismi  di  standardizzazione,  di  stabilire  un  gruppo  congiunto,  il  JVT  (Joint 

Video Team) per portare a termine il lavoro di definizione di un unico sistema di codifica 

video. Nella riunione MPEG‐4 del marzo 2003 a Pattaya venne approvato il nuovo sistema 

di codifica, AVC (Advanced Video Coding), come parte 10 dello standard MPEG‐4 ISO/IEC 

14496‐10. In ambito ITU lo standard, inizialmente indicato provvisoriamente come H.26L, 

sarà pubblicato  come  ITU‐T H.264. H.264 e MPEG‐4 part 10  sono quindi  tecnicamente 

identici. 

 

 

Page 61: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

61

L'H.264 fa parte di un nuova generazione di algoritmi di compressione in via di sviluppo il 

cui scopo è quello di ottenere elevata compressione dei dati mantenendo un'alta qualità 

delle  immagini  ed  avendo  inoltre  un  bit  rate  inferiore  agli  standard  precedenti.  Lo 

standard  H.264,  noto  anche  come  MPEG‐4  Parte  10/AVC,  dove  AVC  è  l'acronimo  di 

Advanced  Video  Coding,  è  lo  standard  MPEG  più  recente  per  la  codifica  video.  È 

sicuramente destinato a diventare lo standard video più diffuso in futuro. Un codificatore 

che  supporta  lo  standard H.264 è  infatti  in grado di  ridurre  le dimensioni dei  file video 

digitali di oltre l'80% rispetto al formato Motion JPEG e fino al 50% rispetto allo standard 

MPEG‐4, senza compromessi  in termini di qualità delle  immagini. Ciò significa che per  la 

gestione  dei  file  video  sono  necessari meno  spazio  di memorizzazione  e  larghezza  di 

banda, ovvero che è possibile ottenere immagini di qualità più elevata a parità di velocità 

di trasmissione in bit. 

Nel  settore  della  videosorveglianza,  è  altamente  probabile  che  lo  standard  di 

compressione  H.264  venga  rapidamente  adottato  per  applicazioni  che  richiedono 

risoluzioni  e  velocità  di  trasmissione  elevate,  ad  esempio  per  la  sorveglianza  di 

autostrade,  aeroporti e  casinò, dove  l'uso di 30/25  fotogrammi  (NTSC/PAL)  al  secondo 

rappresenta  la  norma.  Questi  ultimi  sono  infatti  gli  ambiti  in  cui  la  riduzione  della 

larghezza di banda e dello spazio di memorizzazione necessario può offrire i vantaggi più 

significativi. 

Lo  standard  H.264  è  destinato  probabilmente  anche  ad  accelerare  la  diffusione  delle 

telecamere di  rete con risoluzione megapixel poiché questa  tecnologia di compressione 

ultra‐efficiente  è  in  grado  di  ridurre  le  dimensioni  dei  file  grandi  e  la  velocità  di 

trasmissione  in  bit  senza  compromettere  la  qualità  delle  immagini.  Il  nuovo  standard 

presenta  tuttavia anche degli  svantaggi. Benché offra vantaggi  significativi  in  termini di 

larghezza  di  banda  e  spazio  di  memorizzazione,  questo  standard  richiede 

l'implementazione di telecamere di rete e stazioni di monitoraggio ad alte prestazioni. 

Lo  standard AVC,  così,  come  avviene  nel  caso  di MPEG‐1  e MPEG‐2,  non  definisce  un 

CODEC, bensì la sintassi del flusso dati (stream syntax) e il metodo di decodificarlo. 

Page 62: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

62

 

 

I tool, cioè gli algoritmi, adottati sono sostanzialmente quelli conosciuti in letteratura : la 

maggiore  efficienza  di  codifica  è  dovuta  alla  cura  dei  dettagli  di  ciascun  elemento 

funzionale. La tabella  illustra  le differenze, a  livello di algoritmi usati, tra  i vari standard, 

tra cui MPEG‐4 ASP e MPEG‐4 AVC (sono due standard diversi, uno rispetta le specifiche 

della  part‐2,  più  datate,  l'altro  le  specifiche  della  part‐10,  più  recenti).  Lo  standard 

supporta la codifica del video nel formato 4:2:0, interlacciato o progressivo. 

In MPEG‐4 H.264/AVC sono previsti differenti profili, indirizzati ad applicazioni differenti: 

‐ Baseline Profile (BP): destinato ad applicazioni  in cui si richieda un ridotto ritardo 

dovuto alla codifica/decodifica, ad esempio videotelefonia. 

‐ Main  Profile  (MP):  per  applicazioni  diffusive  o  generiche,  anche  con  video 

interlacciato. 

‐ Extended Profile (XP): per applicazioni mobili e streaming. 

Page 63: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

63

‐ High Profile (HiP): per applicazioni broadcasting e di disc storage, in particolare per 

le applicazioni televisive HD (è il profilo adottato in HD‐DVD e Blu‐ray). 

‐ High 10 Profile  (Hi10P): andando oltre  le capacità dei prodotti consumer di oggi, 

questo profilo è  superiore all'High Profile, aggiungendo  il  supporto  fino a 10 bit 

per campione di precisione dell'immagine decodificata. 

‐ High 4:2:2 Profile (Hi422P): principalmente orientato alle applicazioni professionali 

che  usano  video  interlacciato,  si  pone  al  di  sopra  dello  standard  Hi10P, 

aggiungendo  il supporto per  il formato di campionamento colori 4:2:2 oltre ai 10 

bit già citati per Hi10P. 

Per  ciascun elemento  funzionale  i miglioramenti apportati  in AVC,  rispetto ad MPEG‐2, 

possono essere sintetizzati in: 

• applicazione della trasformata su blocchi più piccoli 

• miglioramenti relativi alla valutazione e alla compensazione del movimento 

• filtro  di  ricostruzione  nel  loop  di  decodifica  per  ridurre  l'effetto  di 

blocchettizzazione 

• miglioramento della codifica entropica. 

 

I miglioramenti di H‐264 rispetto all’MPEG2 sono riportati nella seguente tabella: 

 

Page 64: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

64

Sono definiti diversi livelli in AVC (che si trovano per esempio nei parametri di 

settaggio):

 

Schema dei livelli per H.264/AVC 

 

 

 

 

 

 

Page 65: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

65

 

Compariamo  infine le  prestazioni  dell’ H.264  con  le  prestazioni  dell’ H.263+, MPEG4  e 

MPEG2.

Come si può vedere le performance del formato H‐264 sono eccellenti. A parità di qualità, 

si ottiene un  risparmio di bistream di quasi  il 40%  rispetto all' MPEG4 e di oltre  il 60% 

rispetto all'MPEG2. 

Page 66: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

66

H.264  si  pone  quindi  come  il  futuro  della  compressione  video  sia  per  applicazioni  di 

broadcasting  e  storage  (DVD  del  futuro  e  TV  digitali  del  futuro  su  linee  xDSL),  sia  per 

applicazioni di comunicazione real time a banda media  (video conferenza), stretta  (web 

conferencing) e ultra‐stretta (cellulari 2.5G e 3G). 

 Attualmente  i  vari  vendor  stanno  mettendo  a  punto  i  propri  codec  per  le  varie 

applicazioni.  Il  compito  non  è  semplice  perchè  la  fase  di  compressione  di  uno  stream 

H.264 può richiedere risorse superiori del 300% rispetto ad un codec MPEG4 SP. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 67: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

67

10. ANALISI DEI CODEC 

Cercheremo  ora  di  valutare  nella  pratica  il  comportamento  dei  più  recenti  codec  di 

compressione  video  sia  lossless  che  lossy.  La  scelta  dei  codec  è  stata  determinata  da 

diversi  fattori,  tra  i quali: popolarità, efficienza già comprovata  (escludendo quindi quei 

codec  le  cui performance  sono molto al di  sotto della media) e disponibilità  (free,  trial 

versions, ecc.). Si valuteranno i risultati di test effettuati a differenti bitrate e su differenti 

video, cercando di ottenere risultati scientificamente validi, basati su criteri affidabili. Nel 

confronto dei codec lossless, non essendoci variazioni di qualità visiva, verranno premiati: 

• Velocità 

• rapporto di compressione 

• versatilità 

Nei codec lossy invece verranno premiati: 

• velocità 

• compressione 

• qualità visiva 

• versatilità 

10.1 Codec Lossless analizzati: 

Alpary v2.0 build 957.040607 (12/04/2005) 

Creato dalla società Alparysoft, supporta compressione lossless in RGB, YUY2 e YV12. Non 

supporta il codec instance. 

AVIzlib v2.2.3 

E'  un  codec  lossless  per Video  For Windows.  E'  indicato  dagli  autori  come  l'ideale  per 

animazione  digitale  o  l'animazione  in  3DCGs.  Contiene  due  tipi  di  codec  a  seconda 

dell'uso. Può essere usato come input solo un segnale RGB. Comunque il codec permette 

di convertirlo in YUV (i.e. YUV2 o YV12) senza perdita visibile all'occhio umano. 

CamStudio Lossless codec 1.0 (13/03/2003) 

Codec molto veloce ottimizzato per le applicazioni di screen capture. 

Page 68: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

68

‐ Opera in RGB ed è in grado di comprimere a 16,24 o 32‐bit RGB bitmaps. 

‐ Supporta la compressione temporale 

‐ Può comprimere utilizzando 2 algoritmi diversi di compressione: LZO o GZIP. LZO è 

molto  veloce  ed  è  usato  per  lo  screen  capturing. GZIP  è molto  utile  quando  si 

converte/ricomprime un file AVI già compresso con CamStudio. Il piccolo file size 

prodotto con l'algoritmo GZIP lo rende ideale per scopi di archivio. 

CorePNG v0.8.2 

Essenzialmente, ogni frame è compresso come un'immagine PNG quindi ciò che fa il PNG 

lo  fa  anche  questo  codec.  Ha  inoltre  l'abilità  di  scrivere  P‐frames  e  di  auto‐decidere 

quando farlo. Il Pframe prende la differenza tra il frame precedente e il frame corrente e 

la  codifica  come  un  PNG.  CorePNG  è  stato  inizialmente  sviluppato  per  l'uso  con  i 

sottotitoli, comprime  i cartoni animati e  le animazioni  in CG molto bene e  in molti casi 

meglio di HuffYUV e Loco. 

FFV1, fddshow (29/11/2005) 

fddshow è un codec DirectShow e VFW per codificare/decodificare molti formati audio e 

video, inclusi filmati DivX e XviD, usando libavcodec, xvid e altre librerie opensource, con 

un ricco set di filtri postprocessing. FFV1 è un codec lossless semplice ma efficacie incluso 

nel software. 

HuffYUV 2.1.1 (18/05/2004) 

Scritto  da  Ben  Rudiak‐Gould  (università  di  Berkeley,  California),  HuffYUV  è  un  codec 

lossless  per WIN32 molto  veloce.  L'output  del  decompressor  è  identico  bit  a  bit  con 

l'input  originale.  E'  ritenuto  da  tutti  come  uno  dei migliori  e  per  questo  si  propone  di 

rimpiazzare  il  formato  video  di  cattura  uncompressed  YUV.  E'  abbastanza  veloce  da 

comprimere in real‐time a piena risoluzione un video CCIR 601 (720 x 480 x 30fps) su un 

misero Celeron a 416Mhz. Supporta anche la compressione lossless di dati RGB, quindi è 

molto versatile ed in più è free software. 

Lagarith v1.3.8 (12/03/2006) 

Si tratta di un codec opensource scritto da Ben Greenwood. E' stato disegnato con pochi 

ma chiari obiettivi in testa: 

‐ Velocità: lo stesso creatore riconosce che non è veloce come il codec Huffyuv, ma 

la velocità di encoding è comparabile a quella di molti altri codec lossless, anche se 

Page 69: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

69

la  velocità  di  decoding  potrebbe  essere  inferiore.  Supporta  il  parallelizing  nei 

sistemi multi‐processore. 

‐ Supporto  color‐space:  le  conversioni  color‐space  possono  causare  errori  di 

arrotondamento,  introducendo  perdita  di  dati,  contrariamente  all'ideale  di  una 

compressione  lossless.  Lagarith  cerca  di  evitare  questo  problema  supportando 

direttamente i colorspace YV12, YUY2, RGB e RGBA 

‐ keyframes: non permettere  l'inter‐prediction significa che ogni frame è codificato 

separatamente. Ciò rende il cutting, il joining e il seeking più veloci.  

Queste  tre  cose,  unite  al  fatto  che  è  più  potente  di Huffyuv,  rendono  Lagarith  un 

codec utile per lo stadio di editing video. 

LZOcodec v0.3 (01/05/2006) 

Può  essere  usato  come  capture  codec ma  l'uso  principale  potrebbe  essere  quello  di 

comprimere  video  generati  dal  computer  o  film  di  animazione.  Può  convertire  per 

esempio un file SWF (Flash) o un Power Point in un file AVI. 

MindVid 1.0 Beta 1 (06/06/2006) 

Semplicità  e  facile  utilizzazione  è  ciò  che  è  alla  base  di  questo  codec.  Le  recensioni 

indicano  che  raggiunge  alti  livelli di  compressione usando  lo  stesso  tempo di  coding  e 

decoding. 

MSU lossless video codec v0.6 (25/09/2005) 

Sicuramente uno dei migliori, sviluppato direttamente dal team di Compression Project, 

gruppo  di  ricerca  autorevole  nel  campo  della  compressione  video.  Vanta  di  essere 

assolutamente  lossless, evvero uguale bit a bit al  file  sorgente. E accetta  in  input RGB, 

YUY2  e  YV12  e  restituisce  l'output  nello  stesso  formato,  seppur  permettendo  la 

conversione tra un formato e l'altro. Ha inoltre una funzionalità chiamata "denoising" che 

dovrebbe  aumentare  addirittura  la  qualità  dell'immagine  sorgente  e 

contemporaneamente il livello di compressione. 

PICVideo Lossless JPEG codec v3 (25/02/2003) 

Ottimizzato da Pegasus  Imaging Corporation, è sia un codec Video  for Windows che un 

filtro  di  trasformazione  DirectShow.  Disegnato  per  l'editing  professionale  e  per 

applicazioni di video mediche, comprime RGB a 24‐bit usando Predictor 1 lossless JPEG. 

 

Page 70: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

70

 

10.2 Codec Lossy analizzati 

Suddividiamo tali codec in 

a) MPEG‐4 AVC: codec conforme alle specifiche MPEG‐4 part 10 

b) MPEG‐4 ASP: codec conforme alle specifiche MPEG‐4 part 2 

c) non‐MPEG‐4: codec non conforme alle specifiche MPEG‐4 

 

10.2.1 MPEG‐4 AVC 

Mainconcept H.264/AVC v2 / Elecard 

E' un programma stand alone molto completo. Il codec è sviluppato da una collaborazione 

tra  Elecard  e Mainconcept  e  deve  essere  usato  all'interno  dell'applicazione  apposita. 

Mainconcept è  stata  leader nei  codec MPEG‐2 e  rappresenta  sicuramente un punto di 

riferimento nel mercato professionale. Supporta 1pass (CBR/VBR/fixed Quants), P‐Frame 

Reorder, CABAC, Loop, Multiple B‐Vops, Multiple Ref, 4x4 P‐Frame Sizes, PAR, RDO 

Mpegable 

Sviluppato  dalla DIGAS,  è  stato  utilizzato  attraverso  il  software  X4Live.  supporta  1pass 

(fixed  quants)  uses  P‐Frames  only,  8x8  P‐Frame  Blocksizes,  CAVLC  only,  Loop.  Non 

consente la modalità 2‐pass 

Nero AVC 

Co‐sviluppato da Nero AG e Ateme, include un encoder e un decoder. L'encoding va fatto 

tramite il software apposito. Supporta 2pass, CABAC, (adaptive) Loop, multiple B‐Frames, 

mulitple Reference Frames, weighted prediction, 8x8 P‐Frame Blocksizes, 16x16 B‐Frame 

Blocksizes, Adaptive Quant. 

Quicktime 7.1 

Il  celebre  pacchetto  Apple  per  l'audio/video.  Leader  nella  creazione  di multimedia  nel 

mondo Macintosh, è disponibile anche per piattaforma Windows. Supporta 2pass, max 1 

B‐frame,  Loop  (0,0),  P8x8,B8x8,I4x4,  Adapt.  Quant,  5  Slices,  no  CABAC,  no Weighted 

Pred., no multi Ref. 

Sorenson AVC Pro 

Utilizzato attraverso il software Sqeeze 4.3.  

 

Page 71: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

71

Vss H.264 v2.3 

Sviluppato dalla Vsofts, è utilizzabile in VirtualDub. 

x264 v352 (12/06/2006) 

Si  tratta  del  video  codec  opensource,  che  dopo  mesi  di  gavetta  arriva  finalmente  a 

produrre  delle  versioni  sempre  più  stabili,  sebbene  ancora  nuove  versioni  vengano 

rilasciate  con  cadenza  quasi  settimanale.  Il  nuovo  codec  rappresenta  una  validissima 

alternativa ad  i  codec attuali  sia per prestazioni  che per qualità, ed è  sicuramente una 

delle  più  importanti  promesse  che  appare  oggi  sullo  scenario  del  digitale.  E'  l'unica 

implementazione  opensource  e  free‐software  dello  standard  H.264/AVC.  Supporta  2‐

pass, CABAC, Loop, multiple B‐Frames, B‐References, multiple Reference Frames, 4x4 P‐

Frame,  8x8  B‐Frame  Blocksizes,  segnale  anamorfico  e  High  Profile:  8x8  dct  e  intra 

prediction, matrici di quantizzazione lossless e custom. 

 

10.2.2 MPEG‐4 ASP 

3ivx 4.5.1 

Nella  sua  semplicità  (manca  compressione  con  B‐frames,  rate  distortion,  ecc..) 

rappresenta un po' i codec del passato, per intendersi Divx 3, 4, le prime versioni di XviD o 

al massimo  le prime versioni del codec DivX 5.  Impostazioni: default + MPEG Quantizer 

(ASP) + Adaptive Quantization. 

DivX v6.2.5 (15/06/2006) 

E'  sicuramente  il  codec  più  popolare  ma  forse  non  è  il  più  performante.  E'  stato 

sottoposto a molti test dalle comunità di sviluppo del video digitale e  le sue prestazioni 

sono  risultate abbastanza deludenti  rispetto agli avversari. Però è  facile da usare e per 

ragioni  storiche  e  commerciali  è  sicuramente  il  più  compatibile,  e  questo  è  un  punto 

molto grosso a suo favore. Non è un codec H.264.  Impostazioni: default + Quantization: 

H.263 optimized. 

Fdd_H.264 (ovvero l'H.264 di libavcodec) 

Compare  nella  lista  dei  codec  disponibili  quando  si  installano  le  librerie  libavcodec. 

Libavcodec  fa  parte  del  pacchetto  ffdshow,  che  contiene  tutti  i  codificatori  e 

decodificatori  audio/video  di  Ffmpeg  (DirectShow  e VFW).  FFmpeg  è  una  collezione  di 

free‐software  che  raccoglie  al  suo  interno  molti  dei  progetti  opensource  legati  alla 

Page 72: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

72

codifica  audio/video.  Il  progetto  è  partito  da  Gerard  Lantau,  un  alter‐ego  di  Fabrice 

Bellard ma è attualmente gestito da Michael Niedermayer. Molti sviluppatori di Ffmpeg 

fanno  parte  di  altri  progetti  quali  Mplayer,  xine  e  VideoLan.  Output:  RGB24.  Non 

permette la modalità 2‐pass. 

HDX4 1.5.4.419 (19/04/2006) 

E' stato ufficialmente  rilasciato nel 2005 da  Jomigo Visual Technology GmbH, Germany. 

Sul  sito ufficiale  si presenta  come  il  codec H.264 più  veloce  sul mercato  e  i primi  test 

effettuati effettivamente confermano questa ipotesi. 

XviD v1.1.0 (30/12/2005) 

Il codec più popolare nel mondo opensource. L'installazione fornisce numerosi tools per 

l'analisi, la gestione e il debugging del codec. Ho usato la build compilata per windows 32‐

bit da Koepi, che è una delle migliori. Si attende con ansia  il rilascio della versione AVC, 

che è ancora in versione beta ma non è disponibile al pubblico. 

 

10.2.3 non‐MPEG‐4 

FLV1 (libavcodec) 

Un  altro  dei  codec  video  di  libavcodec.  Non  si  sa molto  sulla  sua  provenienza ma  è 

abbastanza performante. 

Indeo 5.11 

Originariamente sviluppato da  Intel e poi passato nelle mani della società Ligos, è stato 

usato  per molti  anni  per  la  codifica  lossy  .  E'  stato  scelto  perchè  rappresenta  uno  dei 

codec più usati della vecchia generazione. Non permette la modalità 2‐pass. 

Mianconcept MPEG‐2 v1.5 (2005) 

L'implementazione  MPEG‐2  di  Mainconcept  è  universalmente  riconosciuta  come  la 

migliore  sul mercato, pertanto è  stata utilizzata  come  referenza per  il  confronto  con  il 

"vecchio" codec MPEG‐2. 

RealVideo 10 

E'  il celebre codec maggiormente usato negli ultimi anni per  lo streaming su  Internet e 

infatti  viene  utilizzato  con  un  software  prettamente  orientato  al  broadcasting  e  allo 

streaming. 

 

Page 73: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

73

Theora 1.0 alpha6 (30/05/2006) 

Si  tratta di un altro  interessante codec non‐MPEG‐4  freeware  facente parte di  ffdshow. 

Sviluppato dalla fondazione Xiph.org come parte del  loro progetto Ogg (un progetto che 

mira  ad  integrare  il  codec  video  VP3,  il  codec  audio  Vorbis  e  il  container  Ogg  per 

competere con MPEG‐4). Theora è derivato direttamente dal codec VP3 di On2 (società 

che poi ha continuato il suo sviluppo fino ad ottenere l'attuale VP7) 

VP7 

True Motion VP7  (VP70) è  sviluppato da On2 Technologies  come  successore dei  codec 

VP3, VP5 e TrueMotion VP6. Ha  il supporto sia VFW che DirectShow e sembra abbia  la 

migliore compressione nella famiglia di codec MPEG‐4 e H.264. 

Windows Media Video 9 (Wmv9) 

Windows  Media  Video  è  il  nome  generico  per  una  serie  di  tecnologie  proprietarie 

sviluppate da Microsoft per lo streaming di file video. Fa parte della piattaforma Windows 

Media.  A  partire  dalla  versione  7  (WMV1),  Microsoft  ha  usato  una  sua  versione 

modificata dello standard MPEG‐4. Lo stream video è spesso abbinato a quello audio di 

Windows  Media  Audio.  Microsoft  ha  sottoposto  alla  Society  of  Motion  Picture  and 

Television  Engineers  (SMPTE)  lo  standard  VC‐1  per  l'approvazione  come  standard 

internazionale  e  poco  tempo  fa  è  stato  approvato,  diventando  quindi  ufficialmente  il 

maggior  rivale  di MPEG‐4. Windows Media  Video  9  è  una  implementazione  di  questo 

standard.  Questo  codec  è  usato  anche  per  la  diffusione  della  televisione  ad  alta 

definizione  su DVD  in un  formato  che Microsoft  commercializza  col marchio WMV HD. 

Questo formato può essere riprodotto anche su computer o lettori DVD compatibili. 

 

 

 

 

 

 

 

 

 

Page 74: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

74

Prezzi e containers dei codec 

 

 

Page 75: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

75

11 VALUTAZIONE 

11.1 Codec Lossless 

I  risultati  ottenuti  (per  frame/s,  risoluzione,  tipo  di  filmato,  ...)  sono  risultati  quasi  del 

tutto identici. Utilizzando il principio di induzione si potrebbe quindi pensare che i risultati 

siano simili per qualsiasi video venga compresso. Diamo una valutazione per ogni codec: 

• Alpary: E' risultato il codec più veloce e comprime piuttosto efficacemente in tutti 

gli spazi colore. Una buona scelta per la compressione real‐time. 

• Avizlib: E'  il fanalino di coda per quanto riguarda  la compressione. Restituisce un 

file dalle dimensioni quasi identiche a quello del video non compresso e funziona 

solo con RGB. Praticamente inutile.  

• Camvideo: Come Avizlib, funziona solo in RGB e produce un file poco compresso. 

Però ha  il vantaggio di poter scegliere tra due tipi di compressione diversi e se si 

utilizza l'algoritmo lzo si può fare sufficientemente bene acquisizioni in real‐time. 

• CorePNG: E' un codec dalle prestazioni mediocri, ma si ha la sicurezza che funzioni 

dappertutto. 

• Ffv1: La scelta migliore per  la compressione nello spazio YV12  in quanto è veloce 

ed efficace senza necessità di nessun settaggio. Si  installa col pacchetto fddshow 

quindi  è  facile  da  utilizzare.  Il  fatto  che  funzioni  solo  in  YV12  riflette  una  certa 

tendenza dell'opensource di creare solo cose “intelligenti” e utili (come abbiamo 

visto  i  vantaggi  di  comprimere  in  YV12  sono molti).  Peccato  però  che  in molti 

ambiti professionali si utilizzi solo RGB o YUY2,quindi escludendoli si “autolimita” 

l'utilizzo e la diffusione. 

• Huffyuv:  Lo  standard  de  facto  nel mondo  dei  codec  lossless ma  dai  test  non  è 

risultato  il migliore  in assoluto e  inoltre ha  il grosso difetto di non comprimere  in 

YV12, che lo penalizza parecchio. Comunque è un buon codec. 

• Lagarith: Se si pensa che questo codec è stato creato da un matematico per usi 

personali, la cosa sembra incredibile. Nei test è risultato senz'altro il miglior codec 

lossless disponibile:  veloce, efficace e molto  versatile  (funziona  in  tutti  gli  spazi 

colore con ottime prestazioni). 

Page 76: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

76

• Lzo: Funziona solo  in YV12. Anche questo codec, come Camvideo, ha  la facoltà di 

utilizzare  2  algoritmi diversi per  la  compressione:  gzip o  lzo. Gzip  è meglio non 

considerarlo nemmeno. Lzo invece è molto veloce ma non è efficace come Ffv1. 

• Mindvid: E' ancora in versione beta ma già, se non si registra il prodotto, inserisce 

una frase di disturbo nel video. E' un codec dalle prestazioni mediocri che funziona 

solo in RGB. 

• MSU lossless: Veniva annunciato come il miglior codec lossless nei risultati dei test 

di confronto fatti dallo stesso team scientifico russo che  l'ha sviluppato. In effetti 

MSU è il codec che riesce a comprimere con un'efficienza migliore di tutti gli altri 

in tutti gli spazi colore e questo conferma quanto pubblicato sul sito. Però le loro 

analisi non prendevano  in considerazione  il  fattore velocità, che  infatti risulta un 

grosso  tallone  d'Achille  di  questo  codec  (è  lentissimo).  Se  il  tempo  non  è  un 

problema e si ha una macchina potente, è la scelta obbligata. 

• Picvideo:  E'  molto  veloce  ma  comprime  poco  e  funziona  solo  in  RGB.  Nel 

complesso: scarso 

E'  difficile  determinare  quale  sia  in  assoluto  il  codec  più  veloce  o  quello  con migliore 

compressione,  perché  come  abbiamo  visto  non  tutti  i  codec  supportano  tutti  gli  spazi 

colore.  Dividendo  in  categorie  e  facendo  una  media  tra  miglior  velocità,  miglior 

compressione e miglior bilanciamento il codec lossless migliore risulta essere il Lagarith. 

 

11.2 Codec Lossy 

E' difficile trarre delle conclusioni assolute in quanto i codec hanno caratteristiche diverse 

tra di  loro e  le  loro prestazioni variano a seconda del video e della risoluzione. Una cosa 

abbastanza certa è che se un codec ha delle buone prestazioni per un certo bitrate, ce le 

avrà anche per  tutti  i bitrate;  se  invece  va male andrà male  in  tutti  i bitrate. Da  ciò  si 

deduce  che  per  testare  i  codec  sarebbe  più  opportuno  fare molti  test  su molti  video 

diversi tra loro ma a pochi bitrate precisi. Nel trarre le valutazioni ci baseremo sui risultati, 

sicuramente  autorevoli, di  alcune  comunità  scientifiche  riconosciute  a  livello mondiale. 

Una di queste è il CS MSU Graphics&Media Lab Video Group, che ha effettuato dei test su 

alcuni dei codec che si sono presi in analisi (con più di 3000 grafici e numerosissimi test su 

tutti i bitrate). 

Page 77: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

77

Sebbene  i  codec  VFW  (Video  For Windows)  siano  ancorati  ad  AVI  e  non  sfruttino  le 

potenzialità  dei  nuovi  container,  sono  ancora  quelli  che  garantiscono  maggior 

compatibilità.  A  parte  i  software  di  misurazione  oggettiva,  che  in  teoria,  senza 

frameserving,  accetterebbero  solo  AVI  in  input,  c'è  tutta  una  serie  di  applicazioni  per 

l'editing e  la visione degli AVI che è sicuramente più vasta e intercompatibile rispetto ad 

mp4.  

In  definitiva,  tra  i  codec AVC  più  versatili  c'è  sicuramente  x.264:  permette  il  settaggio 

manuale di molti parametri, può scegliere vari formati di output ed essendo ancora in via 

di sviluppo potrà solo migliorare le sue funzionalità. Il più maneggevole e facile da usare è 

sicuramente Nero Digital,  che  fornisce  un'ottima  piattaforma  click'n  go,  stand‐alone  e 

senza bisogno di nessuna configurazione o conoscenza particolare. I codec più veloci sono 

DivX  e HDX4 ma  tra  i  due  è  preferibile  il  primo  perché  alla  stessa  velocità  si  ottiene 

maggior qualità dell'immagine. 

I  codec  con migliore qualità  visiva mi  sono  sembrati  x.264 e VP7 ma qui  l'incertezza è 

molta considerato che  la qualità varia a seconda del filmato. Molti addetti ai  lavori sono 

comunque d'accordo e ritengono questi due codec tra i migliori. 

x.264 è un codec H.264/AVC di ultimissima generazione, è gratuito e opensource e questo 

è  un  grosso  punto  a  suo  favore. VP7  non  è AVC ma  si  è  rivelato  un'alternativa molto 

valida all'MPEG‐4 ed è gratuito.  

Quicktime 7 è  il codec di Mac OSX, dell'I‐pod, di tutto ciò che circonda  il mondo Apple. 

Molti utenti Macintosh conoscono solo questo codec e si trovano comunque bene. 

Sicuramente non è male, ma la pecca di Quicktime è la lentezza.  

Il codec Microsoft Wmv9 ha prestazioni velocistiche scandalose. Visivamente  il codec di 

casa Redmond è molto valido alle basse risoluzioni, ma ciò non ne giustifica  l'utilizzo se 

paragonato ad alternative gratuite e più performanti. Real Video 10 è una di queste, con 

un  ottimo  livello  qualitativo  dell'immagine  ma  poiché  utilizza  container  e  standard 

proprietari ne limita la diffusione tra la massa. 

Sorenson AVC Pro è un codec AVC senza grandi pretese ma con un software di utilizzo 

intuitivo e funzionale. Il costo della licenza  non corrisponde alle prestazioni reali:  è lento 

e tende a “spalmare” l'immagine eliminando molti dettagli.  

Page 78: SI-IES Algoritmi Di Compressione

                                                                                                                                                                           CADMO 

              Control Auto Configurable Data               Network for MObiles

78

VSS sta un po' nel mezzo, è sicuramente un buon codec AVC ma considerando che non è 

gratuito forse è meglio preferire altri. 

3ivx è un po' vecchio ma dice ancora la sua se comparato con i nuovi codec. 

I codec di ffdshow Flv1 e ffd_H.264 sono indubbiamente validi ma hanno poca, come dire, 

“personalità”. 

Theora  è  interessante  ma  non  da  molta  sicurezza  per  il  futuro,  come  compare  nel 

messaggio  bene  in  vista  sull'interfaccia  “Usare  solo  per  scopi  sperimentali,  il  codec 

potrebbe diventare incompatibile in futuro”.  

La  battaglia  tra  DivX  e  Xvid  si  chiude  in  un  sostanziale  pareggio.  I  due  codec  si 

comportano  in modo simile ed è  inutile  insistere sul confronto  tra questi due. DivX 6.5 

sembra  apportare  dei  miglioramenti  significativi  rispetto  alle  versioni  passate,  ed  è 

comunque ancora un buon punto di riferimento per i codec non‐AVC.  

XviD,  prima  dell'avvento  del  recentissimo  x264,  era  il miglior  codec  video  opensource 

disponibile.  E'  molto  simile  a  DivX  nelle  prestazioni,  quindi  in  generale  buono,  ma 

visivamente non all'altezza dei codec H.264. Possiamo concludere che  tra DivX e XviD è 

sicuramente preferibile  il  secondo,  considerato  che è gratuito e opensource, mentre  la 

licenza di DivX è a pagamento. 

Tenendo conto di tutto, il miglior codec lossy è, secondo noi, l’ x.264.