PROGRAMMIAMO
File - Compressione
Compressione dati: lossless e lossy

In informatica e telecomunicazioni con il termine compressione dati (data compression) si indicano le tecniche di elaborazione dati che permettono la riduzione della quantità di bit necessari alla rappresentazione in forma digitale di un'informazione. In pratica per esempio la compressione dati consente di ridurre il numero di bit necessari per la trasmissione in streaming di un video, permettendone la visione su Internet anche in presenza di una connessione non sufficientemente veloce.

Nel caso dei file, la compressione dati consente di ridurre le dimensioni (numero di bit) del file: ciò è vantaggioso perché riduce lo spazio occupato dal file su disco e consente di trasferire più rapidamente il file (per esempio via mail).

Le tecniche di compressione si suddividono in due grandi categorie:

Le due tecniche vengono usate in ambiti diversi. Come già accennato, la compressione lossy viene spesso applicata alle immagini, ai suoni e ai video, in quanto consente di ottenere riduzioni notevoli dei dati originali, a prezzo di una perdita nella qualità spesso trascurabile. Inoltre le tecniche lossy possono essere applicate durante lo streaming dei dati (run time), cioè non è necessario conoscere la totalità dei dati da comprimere per poterle applicare: questo è ovviamente un vantaggio nelle trasmissioni streaming in internet. Fra gli algoritmi lossless più noti ricordiamo il jpeg per le immagini e l'mp3 per l'audio e mpeg per i video.

Al contrario la compressione lossless viene usata quando si vogliono comprimere documenti di testo, programmi, database, schemi circuitali etc. e in ogni caso in cui non è accettabile nessuna perdita dei dati originali. Alla categoria delle compressioni lossless appartengono i formati .zip e .rar, utilizzati spesso per comprimere file e cartelle di file.

Ci occuperemo più avanti delle tecniche di compressione con perdita, parlando dei formati multimediali. Qui invece vogliamo approfondire la conoscenza della compressione lossless.

Algoritmi di compressione lossless

Le tecniche (algoritmi) di compressione lossless si possono suddividere in due grandi categorie:

La compressione statistica si basa sullo studio dell'input da comprimere. Si fanno studi statistici sul formato dell'input per ottenere poi una buona compressione. Per esempio in un file di testo da comprimere si studia la frequenza relativa di ciascun carattere e si associa poi al carattere presente più volte nel testo, il codice più corto; viceversa a caratteri presenti con frequenza bassa viene associato un codice più lungo. Di questo tipo di classe fanno parte codifiche come quella di Huffman, di cui parleremo nella prossima lezione.

Per quanto riguarda, invece, la compressione per sostituzione, questa è basata sull'idea di rimpiazzare, in un file, tutte le occorrenze di stringhe ripetute con puntatori a copie precedenti della stessa stringa. La compressione è dovuta al fatto che la lunghezza di un puntatore è in genere più piccola della lunghezza della stringa che è rimpiazzata. Da ciò risulta, che maggiori sono le ripetizioni di occorrenze di stringhe nel file da comprimere, maggiore è il grado di compressione raggiunta.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it