Tecniche di compressione per le immagini: Predective Coding, DFT, DCT e sottocampionamento

Ridurre la domensione della immagini con la compressione

Le tecniche per la compressione delle immagini si basano sui limiti dell’occhio umano. A differenze di un testo, per un’immagine non è rilevante la perdita di informazioni pertanto è possibile comprimere le immagini riducendone la dimensione eliminando piccole parti d’immagine. L’occhio umano non percepisce tutto ciò che è realmente rappresentato, in un’immagine in genere i pixel adiacenti hanno colori simili (Ridondanza Spaziale). Questa differenza di colore tra pixel adiacente non viene percepita dall’occhio umano, può quindi essere eliminata riducendo così la dimensione dell’immagine.

I principali schemi di compressione sono:

  1. Compressione mediante sottocampionamento;
  2. Predictive Coding;
  3. Codifica mediante trasformazione.

Compressione mediante sottocampionamento

La tecnica della compressione mediante sottocampionamento sfrutta la ridondanza spaziale della similitudine dei pixel vicini, ovvero vengono considerati solo alcuni pixel dell’immagine (ad esempio ogni due pixel). In fase di decodifica i pixel “mancanti” possono essere ricostruiti approssimando il loro valore mediante un’interpolazione.
Un altro limite dell’occhio umano è che è molto più sensibile alla luminanza che rispetto la crominanza (trovate maggiori informazioni qui), quindi è possibile effettuare un sottocampionamento maggiore per quanto riguarda la crominanza rendendo più efficiente l’intero processo di compressione.

Predictive Coding

L’idea alla base del Predictive Coding (predizione del codifica) è una tecnica di compressione che si basa sul principio che i valori spazialmente vicini sono fortemente correlati. Se due pixel sono vicini tra di loro ed abbiamo già codificato il primo pixel allora, anziché codificare per intero anche il secondo pixel, è possibile codificare solo la differenza tra i valori dei due pixel. La codifica della differenza tra due pixel adiacenti sarà codificata con un numero minore di bit (nel peggiore dei casi sarà uguale).

Predictive Coding

Nell’immagine d’esempio si può notare come codificare la differenza tra due oggetti richiede molto meno spazio rispetto a codificare gli oggetti per interi. Avendo due rettangoli a disposizione di dimensione 150 uno e 140 l’altro, codificarli singolarmente richiede 16 bit (2^8 è 256), mentre codificando solo il primo quadrato e la differenza tra i due quadrati richiede 12 bit, ovvero 4 bit in meno.

Codifica mediante Trasformazione

Se i pixel dell’immagine vengono considerati indipendenti, è possibile convertire gli elementi correlati dell’immagine in un insieme minimale di coefficienti indipendenti (eliminando così la ridondanza).
Utilizzando una codifica mediante Trasformazione, l’immagine viene suddivisa in sottoimmagini rettangolari su cui viene applicata una trasformazione unitaria dal dominio spaziale a quello delle frequenze. Se nel dominio spaziale i dati erano fortemente correlati, allora i dati ottenuti nel dominio delle frequenze sono adatti per essere compressi mediante Huffman, Run-length, ecc.

Le Trasformazioni maggiormente impiegate sono:

  1. DFT (Discrete Fourier Transform)
  2. DCT (Discrete Cosine Transform)

I passi per effettuare una trasformazione sono:

  • Scelta del tipo di trasformazione (ad esempio DFT o DCT);
  • Scelta della grandezza blocco (ad esempio 10×10);
  • Quantizzazione dei coefficienti trasformati;
  • Compressione mediante Huffman, Run-length, ecc.

Pubblicato in Immagini, Sistemi Informativi Taggato con: , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*