MPEG

Compressione: Filtri e colori


L'MPEG è un formato di compressione a perdita di informazione (no loseless), per cui anche con compressioni ad altissima qualità, otterremo sempre un prodotto con un gran numero di informazioni mancanti rispetto all'originale. Come abbiamo già visto parlando delle compressioni, lo scopo principale di questi algoritmi è quello di togliere tutte quelle informazioni non percepibili (o percepibili solo in parte) dall'utente.

La compressione del video in un formato MPEG viene effettuata attuando una serie di step che adesso andremo ad analizzare.

Filtering
In un video, le immagini che hanno dei contorni precisi e marcati sono molto più difficili da comprimere rispetto ad altre che invece sono meno precise. Il primo passo quindi è quello di filtrare tutti i singoli fotogrammi del video e ridurre i contorni più evidenti (le alte frequenze). Questa operazione viene effettuata facendo una media tra queste alte frequenze e quelle più basse dei colori vicini. Il riusltato è una colorazione media ed una frequenza più bassa rispetto a quella iniziale.

Il campionamento dei colori
Generalmente, nel mondo informatico, il colore di un pixel è dato dalla combinazione di 3 colori, il Rosso, Il Verde ed il Blu. La notifica usata è quindi la classica RGB. Nel mondo video invece viene usato lo standard YUV dove i valori usati sono sempre 3 ma fanno riferimento alla crominanza e alla luminosità.

Y (luminanza) descrive la luminosità del pixel
U e V (crominanza) definiscono invece il colore

Per definire quindi un colore di un pixel abbiamo bisogno di 3 valori (quindi 3 bytes) sia che si tratti di RGB che di YUV. Tutto cambia però se vogliamo descrivere dei gruppi di pixel (ad esempio dei blocchi 2x2). Nell'MPEG 1 e 2 viene utilizzato il formato YUV 4:2:0 (detto anche YUV12) che per descrivere i 4 pixel di un blocco 2x2 usa solamente 6 bytes invece dei 12 normalmente occorrerebero (4 pixel x 3 byte = 12 byte).

I 4 pixel in questione vengono descritti ciascuno con il suo valore di luminosità (Y) ma tutti con gli stessi valore di crominanza (U e V). In pratica viene sfruttato il fatto che l'occhio umano è più ricettivo verso la luminosità che verso il colore per cui in un fotogramma di una scena anche modificando sensibilmente i colori non si ha nessuna perdita di qualità apparente.


Il formato YUV 4:2:0

Con questo tipo di gestione del colore, un singolo fotogramma 720x576 occuperà 622.080 byte, la metà rispetto ad una normale codifica RGB o YUV. La codifica YUV 4:2:0 viene normalmente definita YUV12 visto che un singolo pixel viene in pratica descritto da 12 bits (6 Bytes / 4 Pixels = 1.5 Bytes = 12 bits).