<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ignorando svenevoli ricorrenze para-commerciali, il 14 Febbraio un
pugno di duri si &egrave; riunito nella stanza Trio dell'ITIS, per ascoltare
il verbo del Guargua che oggi incantava le folle discettando sui
massimi sistemi multimediali.<br>
<br>
Di seguito, gli appunti veloci, presi "on-line" (mi si perdonino errori
minori, avendo privilegiato la rapidit&agrave; di presentazione alla
correttezza semantica).<br>
<br>
CR<br>
---<br>
<br>
Questa prima sessione, che si propone un seguito il prossimo marted&igrave;, &egrave;
centrata sui<b> CODEC VIDEO</b>.<br>
<br>
L'immagine tipica per le TV &egrave; di 352x288 pixel (sistema PAL).<br>
Se per ognuno dei pixel si impiegano 24 bit di colore, si raggiunge una
dimensione di 304.128 byte per fotogramma.<br>
<br>
In un flusso video, senza compressione, sarebbero richiesti questi
throughput:<br>
1. in un video "di qualit&agrave; VHS", 352x288 pixel per frame, 25 frame al
secondo, 12 bit per pixel richiedono un totale di 30,4 Mbps;<br>
2. in un video "tipo DVD", 504x576 pixel per frame comportano un flusso
di 121,7 Mbps <br>
<br>
Come paragone, si noti come il pi&ugrave; moderno hd arrivi a 150 Mbps per il
trasferimento dati.<br>
<br>
Si impiega quindi la <b>compressione</b>, per ridurre il throughput
necessario per realizzare un filmato video.<br>
I codec di compressione sono definiti da un gruppo di
standardizzazione, il Motion Picture Expert Group (MPEG).<br>
<br>
I <b>principali codec</b> sono: <br>
- per l'audio: mp1, mp2 e mp3<br>
- per il video: mpeg1 (per Video CD), <u>mpeg2</u> (per i DVD ed il
dvb, tipo il digitale terrestre), <u>mpeg4</u> (su codec proprietari,
come divx, o liberi, come xvid)<br>
<br>
Per l'audio, il pi&ugrave; famoso &egrave; il <u>codec mp3</u>, sviluppato dal
Fraunhofer Institut; codec proprietario, permette nelle ultime versioni
di introdurre dei <i>watermark </i>che marchiano il file, per
limitare le "diffusioni illeggittime" (impropriamente chiamate "copie
pirata"). In ambiente libero, si preferisce il <u>codec ogg-vorbis</u>,
di resa migliore ma, soprattutto, svincolato da vincoli di impiego.<br>
<br>
Per il video, il <u>codec mpeg4</u>, ad esempio, le realizzazioni divx
e xvid posseggono estensioni proprie che, pur soddisfacendo lo standard
mpeg4 di riferimento, le rendono tra loro non pienamente compatibili.
Vedendo un film con il codec sbagliato, pu&ograve; accadere di riscontrare
errori cromatici (es: film "verde"), o difettose ricostruzioni dei
frame ("quadrati grossi", con bassa risoluzione).<br>
<br>
Per riuscire a comprimere un frame video, si passa dalla codifica RGB
(che riserva, tipicamente, 8 bit per ciascuno dei tre colori Red, Green
e Blue) ad una <u>codifica YUV</u> (12 bit per pixel, anzich&egrave; 24,
perch&egrave; 8 sono riservati alla luminanza Y, due al Chroma Rosso, due al
Chroma Blue). In pratica, si sfrutta il fatto che l'occhio umano &egrave;
molto pi&ugrave; sensibile alle variazioni di luminanza (sfumatura
bianco-nero), che non a quelle cromatiche; si approssima quindi con pi&ugrave;
attenzione la luminanza, mentre ci si permette di usare meno bit per il
colore.<br>
<br>
Per un immagine da comprimere, questa viene scomposta in <u>blocchi di
16x16 bit</u>; tale valore dev'essere tenuto a mente, quanto si intenda
definire la dimensione del video: inutile impiegare valori che non
siano multipli esatti di 16 (es: scegliere 352x288 bit per frame).<br>
<br>
Su ogni blocco 16x16, viene applicata la <u>DCT (Discrete Cosine
Transform)</u> che opera su gruppi di 4 bit, ottenendo una matrice 8x8.
Su questa matrice si opera un "rimescolamento" delle caselle,
provvedendo ad accentrare su uno spigolo quelle pi&ugrave; pesanti (come
valori YUV) ed eliminando le caselle pi&ugrave; "leggere" (con contenuto
informativo, quindi, trascurabile).<br>
<br>
La semplificazione cos&igrave; ottenuta mantiene ancora gran parte del
contenuto informativo originario, ma alleggerisce notevolmente il
carico di bit necessari per ogni frame. Tipicamente, si riduce il
carico al 15% dell'originale, senza decadimento granch&egrave; apprezzabile
dall'occhio umano.<br>
<br>
Come esempio pratico, si veda un'<b>immagine JPEG</b>, rispetto
all'originale BMP: per una foto, si ottiene una riduzione delle
dimensioni senza grosse perdite di qualit&agrave; (per una foto di un testo, i
"troncamenti" possono essere gi&agrave; pi&ugrave; avvertibili).<br>
<br>
In un <b>flusso video</b>, agli accorgimenti sopra descritti si
aggiunge un <u>modello "predittivo" del movimento</u>, preferendo la
descrizione della differenza tra fotogrammi piuttosto che quella del
fotogramma successivo. Con fotogrammi simili, la differenza &egrave; molto pi&ugrave;
economica da descrivere e, quindi, da comprimere. Per oggetti che si
spostano, rispetto ai frame precedenti, si descrive il "vettore
movimento". Si complica l'algoritmo di descrizione delle immagini, ma
si risparmia sul numero di bit da trasmettere (ecco perch&egrave;, sui PC, ci
possono essere decoder hardware dedicati, per alleggerire la CPU).<br>
<br>
Nella serie di <b>frame di un video</b>, distinguiamo:<br>
- <u>I-Frame</u> (Intra-Frame o Key-Frame): codificati come
un'immagine JPEG, senza riferimento ai frames vicini<br>
- <u>Delta-Frame</u> o Inter-Frame, a loro volta distinti in:<br>
&nbsp;&nbsp;&nbsp;&nbsp; -- P-Frame(Predicted Frame): codificati in funzione dei frame
precedenti; codifica con algoritmo pesante, ma con risparmio di bit <br>
&nbsp;&nbsp;&nbsp; -- B-Frame (Bidirectional Frame): codificato in funzione del frame
precedente e di quello successivo: necessari 1/4 di bit rispetto ad un
P-Frame<br>
<br>
---<br>
ulteriori approfondimenti sulle slide prodotte dal Guarguaglini.
Provare sotto:<br>
<a class="moz-txt-link-freetext" href="http://www.colognole.org/gulli/html/modules/PDdownloads/singlefile.php?cid=3&lid=12">http://www.colognole.org/gulli/html/modules/PDdownloads/singlefile.php?cid=3&amp;lid=12</a><br>
</body>
</html>