Software di compressione di Giulia Giacon 1
Di cosa stiamo parlando? Si tratta di software applicativi in grado di comprimere e di decomprimere un file. 1. La quantità di bit necessari alla rappresentazione in forma digitale dell informazione viene ridotta allo scopo di occupare meno spazio nei supporti di memorizzazione quali l Hard-disk del computer, le unità floppy, i CD-Rom e le chiavette USB; 2. Tramite la decompressione il file ridotto viene riportato alle condizioni iniziali, nuovamente pronto per essere aperto. 2
Qual è il motore? le operazioni di compressione/decompressione vengono attivate da specifici strumenti detti algoritmi. un algoritmo consiste nella soluzione di un problema più o meno complesso, analizzato in precedenza, seguendo successioni finite di istruzioni sequenziali preordinate, rappresentate sotto forma di diagramma o di pseudocodifica e applicabili ad ogni linguaggio di programmazione. Gli algoritmi di compressione si basano sul presupposto che in qualsiasi tipo di file ci siano dei dati ridondanti, superflui o mal disposti. 3
Si possono individuare due grandi categorie di algoritmi: 1. Compressione di tipo Lossy I dati vengono compressi attraverso un processo con perdita d informazione che sfrutta gli elementi superflui nell utilizzo dei dati. 2. Compressione di tipo Lossless I dati vengono compressi attraverso un processo senza perdita d'informazione che sfrutta le ridondanze nella codifica del dato. 4
Tecniche Lossy Ottengono delle compressioni molto forzate dei files a scapito dell'integrità del file stesso. L idea di fondo è che l'occhio e l'orecchio umano hanno delle limitazioni, operano quindi cercando di togliere dei dettagli del video/audio senza che questo venga percepito dall utente. Non possono essere usati per testi o database in cui l'integrità dell'informazione è fondamentale, l'uso caratteristico è nel campo multimediale. 5
Tecniche Lossless Durante la compressione si preoccupano di preservare il messaggio originale. Non possono garantire sempre la diminuzione delle dimensioni dell insieme di dati in input. Alcuni vengono ridotti, ma altri restano necessariamente invariati. Utilizzano questo tipo di metodi tutti quei files per i quali non è accettabile una perdita di informazione, come i testi o i programmi. 6
Tecniche Lossy: file immagini: JPEG file video: MPEG, DivX, WMV file audio: Vorbis, MP3, AAC, WMA Tecniche Lossless: file testuali: Huffman, LZMA(7Zip), DEFLATE(WinZip) file audio: FLAC, ALAC file immagine: GIF, TIFF file video: Sheervideo, Animation codec 7
In che lingua parli? Nei computer i caratteri vengono codificati usando il codice ASCII, un codice che associa 8 bits ad ogni simbolo. Mediamente in tutti i files testo vi sono dei caratteri che appaiono con una frequenza maggiore di altri. Per risparmiare spazio nella codifica non avrebbe senso assegnare a questi caratteri un codice composto da un numero inferiore di bits? 8
Nel codice Morse le lettere con frequenza maggiore vengono rappresentate da sequenze più piccole, mentre quelle meno usate sono associate a codici più lunghi (ad esempio: e= ; a= - ; q= -- - ; j= --- ). L'idea di usare codici più corti fu introdotta nell'ambito informatico da Claude Shannon e R. Fano negli anni 50. Qualche anno dopo D.A. Huffman ne migliora l algoritmo dando origine all algoritmo di Huffman. Si consideri un file di 40 caratteri in cui le lettere abbiano la seguente frequenza: A : 20 volte, B : 5 volte, E : 3 volte, C : 7 volte, O : 5 volte. 9
Algoritmo di Huffman Si consideri un file di 40 caratteri in cui le lettere abbiano la seguente frequenza: A : 20 volte, B : 5 volte, E : 3 volte, C : 7 volte, O : 5 volte. Usando la codifica standard ASCII, il file occupebbe 40*8 bits ovvero 320 bits. Usando una codifica a lunghezza variabile, a le lettere con frequenza maggiore viene associato un numero inferiore di bits rispetto a quelle con bassa frequenza, ottenendo un file con lunghezza inferiore ai 320 bits. 10
Algoritmo di Huffman Questo è il principio base dell algoritmo di Huffman usato per la gestione dei testi. Partendo da uno studio statistico basato sulla frequenza dei caratteri nelle parole cerca di codificare le lettere a maggior frequenza con dei codici binari più brevi rispetto a quelli utilizzati per quelle meno frequenti. Esempio: Si intende comprimere un file testo contenente la stringa: CIAO_MAMMA 11
Algoritmo di Huffman Codice ASCII: A = 01000001 C = 01000011 I = 01001001 O = 01001111 M =01001101 _ = 01000000 Il file salvato sarà pertanto composto da 80 bits (= 10 lettere * 8 bits): 01000011 01001001 01000001 01001111 01000000 01001101 01000001 0100110101001101 01000001 Applicando l'algoritmo di Huffman per prima cosa è necessario contare la frequenza di ogni lettera presente nella stringa: C (1), I (1), A (3), O (1), M (3), _ (1) 12
Algoritmo di Huffman Vanno individuate le due lettere con minor frequenza (la C e la I ). Nello schema delle frequenze saranno rappresentate come un unica lettera e con una frequenza che sarà la somma delle loro frequenze C+I (2), A (3), O (1), M (3), _ (1) Si cercano ancora le due lettere con minor frequenza e osserva che si tratta dell'accoppiata C+I e O+_. C+I+O+_ (4), A (3), M (3) 13
Algoritmo di Huffman Una volta creato l'albero, bisogna associare ad ogni nodo un bit. E' possibile associare lo 0 a tutti i nodi di sinistra e l 1 a tutti quelli di destra. Con i nuovi codici otterremo la seguente sequenza dibits: 000001100100111110111110 14
Algoritmo di Huffman Solamente 24 bits invece degli 80 che verrebbero impiegati con il codice ASCII. Per capirne la vera potenza, si deve immaginare lo stesso algoritmo applicato ad un file testo di migliaia di parole. È importante sottolineare che il codice così ottenuto non è univoco; nel senso che può essere creato un codice altrettanto valido, ma differente da quello qui presentato. 15
Applicazioni L estesa diffusione dei programmi di compressione inizia negli anni 90 quando il principale supporto di scambio dati è l unità floppy da 1.44 Mbyte, se non più piccolo da 360 Kbyte. In seguito si afferma anche su Internet, per diminuire le dimensioni dei files da trasferire riducendo notevolmente il tempo di connessione necessario per l upload e per il download dei files secondo gli standard V24bis o MNP5 relativi aimodem. 16
PKZip: primo software introdotto nel mercato degli home computer. Attualmente esistono molteplici software di compressione, scaricabili on-line, che si suddividono principalmente in: Software shareware: tutti quei software concessi sotto licenza d uso quindi a pagamento, alcuni dei quali prevedono un periodo di prova gratuito mediamente da 30 a 40 giorni (WinZip 11.0; WinRar 3.71). Software freeware: insieme di software disponibili all uso gratuitamente (ZipGenius 6; 7-Zip). 17
Quale scegliere? Da un punto di vista tecnico la scelta va fatta prendendo in considerazione una serie di parametri. I programmi vengono valutati in base a due preferenze immediate nelle esigenze quotidiane del target di utenza: ottenere una maggiore compressione e occupare così meno spazio nella memoria; impiegare il minor tempo possibile nel comprimere i files a scapito della potenza di compressione. 18
Una volta stabilito l interesse principale dell utente, affinché un test sia attendibile e aggiornato il più possibile, si dovrebbero considerare: l ultima versione disponibile sul mercato, il relativo costo e l opzione di lingua dell interfaccia; le caratteristiche del file da comprimere per il confronto delle performances; il livello di memoria Ram e di potenza della CPU del computer di cui il software necessita per essere operativo. 19
Dato che ogni algoritmo a seconda della propria struttura di funzionamento occupa una certa quantità di memoria Ram. È importante conoscere anche le caratteristiche effettive del PC su cui si intende caricare i programmi da testare. In questo modo, il test può essere considerato valido ed attendibile, rendendo la scelta autonoma e consapevole. 20
Le Fonti Articoli di giornale: Salari P., Un mondo compresso in PC Pratico n.10 anno VII ottobre 2001, pg. 126-129 Siti internet: http://www.pc-facile.com/download/?cat=15 http://www.pc-facile.com/glossario/v24bis/ http://www.pc-facile.com/glossario/mnp5/ http://www.pc-facile.com/glossario/algoritmo/ http://www.pcperfetto.com/compressionefiles.html http://www.ictv.it/file/vedi/340/software-di-compressione/ http://www.ecowebnews.it/software%20di%20compressione http://it.wikipedia.org/wiki/algoritmo_lempel-ziv-markov http://it.wikipedia.org/wiki/lz77_e_lz78 http://it.wikipedia.org/wiki/compressione_dei_dati http://it.wikipedia.org/wiki/compressione_dati_lossy http://it.wikipedia.org/wiki/compressione_dati_lossless http://www.dspvlsi.uniroma2.it/corsi/bio/la%20compressione.doc http://it.wikipedia.org/wiki/codifica_di_huffman 21