Sei sulla pagina 1di 78

             

  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

ALLEGATO SI-IES

NOTA TECNICA

ALGORITMI DI COMPRESSIONE AUDIO VIDEO

1
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

2
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

3
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

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. 
 

4
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

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 

5
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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à 

6
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.

7
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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”. 

8
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

9
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  
9 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. 
9 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. 
9 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. 

10
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.” 
 

11
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 

12
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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[αi sen(ωi) + βi(ωi)]
 
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. 
 

13
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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. 

14
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
 

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: 
 
  Qf =W-1 Q W
                                      
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. 

 
 
 

15
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

16
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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. 

17
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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. 

18
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

19
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

20
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

21
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  

22
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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 

23
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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: 
 
  PSNR(framei) = 10 log (255)2⁄MSE
 
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 

24
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

25
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

26
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

27
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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\Ai1> r 
Hi= 0      otherwise 
 
E l’erosione come: 
Hi= 1      if r*MAi0 +MBi\Ai0 > r 
Hi= 0      otherwise 
 
dove MAi1, MAi0  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,  M0Bi/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: 

28
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
 
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. 

29
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

30
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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
 

31
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

32
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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 

33
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
ƒ 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”: 
 

34
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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. 
 
 
 
 
 
 
 
 

35
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  
9 il  primo  passo  implica  la  trasformazione  dell’immagine  dalla  modalità  RGB  alla 
modalità YUV;  

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

36
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
9 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 

37
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

38
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  

39
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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 

40
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

 
 

41
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

42
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 
 
 

43
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

44
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

45
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
 
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; 

 
 
 

46
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
• 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 

47
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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). 

48
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

49
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
Integration   
Framework(DMIF) 
7  Optimized  Reference  Fornisce  esempi  di  come  fare  al  meglio  le  implementazioni  (è  in 
Software  relazione con la part 5) 
8  Carriage  on  IP  Specifica un metodo per trasportare il contenuto MPEG‐4 su reti IP 
networks 
9  Reference Hardware  Fornisce  disegni  hardware  per  mostrare  come  implementare  le  altre 
part 
 
10  Advanced  Video  Codec per segnali video. E' tecnicamente identico allo standard ITU‐T 
Coding (AVC)  H.264 
11  Scene  description  Può essere usato per contenuto 3D o sottotitoli 
and  Application 
engine (BIFS) 
12  ISO  Base  Media  File  Formato file per memorizzare contenuto multimediale 
Format   
13  Intellectual Property  Gestisce i diritti d'autore 
Management  and   
Protection  (IPMP) 
Extension 
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  Gestisce le animazioni 
Framework   
eXtension (AFX) 
17  Timed  Text  subtitle  Gestisce i sottotitoli 
format   

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 

50
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

51
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 – 

52
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

53
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  

54
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
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. 

55
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

56
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

57
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 

58
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

59
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

 
 

60
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

61
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles

 
 
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. 

62
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
‐ 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: 

63
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
Sono definiti diversi livelli in AVC (che si trovano per esempio nei parametri di 
settaggio):

 
Schema dei livelli per H.264/AVC 
 
 
 
 
 
 

64
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
 
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. 

65
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

66
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 

67
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
‐ 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 

68
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 

69
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
 
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.  
 

70
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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 

71
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 

72
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
 
 
 
 
 
 
 
 
 

73
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
Prezzi e containers dei codec 

 
74
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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). 

75
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
• 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). 

76
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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.  

77
             
  
                                                                                                                                                           CADMO 
              Control Auto Configurable Data 
              Network for MObiles
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. 
  
 
 
 
 
 
 
 
 
 
 

78