Tecniche di compressione dei dati

16
Tecniche di compressione dei dati Presentazione 9.1 Informatica Generale (Prof. Luca A. Ludovico)

description

Presentazione 9.1. Tecniche di compressione dei dati. Informatica Generale (Prof. Luca A. Ludovico). Obiettivi. Riduzione delle informazioni mantenendo il contenuto informativo Obiettivi di memorizzazione e trasferimento Due categorie: Tecniche con perdita (lossy) - PowerPoint PPT Presentation

Transcript of Tecniche di compressione dei dati

Page 1: Tecniche di compressione dei dati

Tecniche di compressione dei dati

Presentazione 9.1

Informatica Generale (Prof. Luca A. Ludovico)

Page 2: Tecniche di compressione dei dati

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

Obiettivi

• Riduzione delle informazioni mantenendo il contenuto informativo

• Obiettivi di memorizzazione e trasferimento

• Due categorie:– Tecniche con perdita (lossy)– Tecniche senza perdita (lossless)

Page 3: Tecniche di compressione dei dati

Osservazioni

• La percentuale di compressione ottenibile dipende:1. dall’algoritmo utilizzato2. dalla propensione dei dati a essere compressi

• Esempio: adottiamo la compressione con algoritmo LZW (formato ZIP). A parità di algoritmo di compressione, ad esempio:– 4 immagini JPG: da 282 KB a 276 KB (98% dell’originale) – 4 documenti XML: da 1,96 MB a 126 KB (6,28%

dell’originale)

Page 4: Tecniche di compressione dei dati

Tecniche lossless vs lossy

Lossless

• Senza perdita di informazione

• Si riduce la ridondanza

• Si comprime mediamente fino al 50% delle dimensioni originali

• Ottimale quando non si può tollerare modifiche nei contenuti (ad es. testi, multimedialità professionale,etc.)

Lossy

• Con perdita di informazione

• Si riduce l’irrilevanza (presunta)

• Si comprime mediamente fino al 10% delle dimensioni originali

• Ottimale quando si possono tollerare piccoli errori o modifiche (immagini e audio non professionali)

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

Page 5: Tecniche di compressione dei dati

• Il messaggio M deve essere trasmesso tra il mittente A e il destinatario B

A BCanale trasmissivo

M M

compressione decompressione

M M*

Page 6: Tecniche di compressione dei dati

Codifica run-length (lossless)

• RLE = run length encoding

• Si sostituiscono le sequenze di bit con un codice che indica il valore ripetuto e quante volte si ripete nella sequenza.

• Funziona bene quando i dati da comprimere sono scomponibili in lunghe sequenze di valori identici ripetuti.

• E’ un codice a lunghezza fissa.

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

Page 7: Tecniche di compressione dei dati

Esempio di codifica RLE

• Sia M (messaggio da comprimere) una configurazione di bit costituita da:– 253 bit posti a 1,– seguiti da 118 bit posti a 0, – seguiti da 87 bit posti a 1

E’ più compatto rappresentare in binario

253 x 1, 118 x 0, 87 x 111111101111101100010101111

ad esempio dedicando 8 bit alla cardinalità e 1 bit al simbolo per ciascun blocco rispetto ad elencare i 458 bit.

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

Page 8: Tecniche di compressione dei dati

Controesempi RLE

• Cosa succede quando i bit dedicati alla cardinalità non sono sufficienti per coprire il numero di ripetizioni di un dato simbolo

• Cosa succede se i blocchi di valori ripetuti sono estremamente brevi. Esempio:M = 0110100MRLE = 000000010 000000101 000000010 000000011 000000100

Page 9: Tecniche di compressione dei dati

Codifica dipendente dalla frequenza (lossless)

• La lunghezza della configurazione di bit usata per rappresentare un elemento è inversamente proporzionale alla frequenza di utilizzo dell’elemento stesso.

• E’ un codice a lunghezza variabile (gli elementi sono rappresentati da configurazioni di lunghezze diverse)

• Un noto algoritmo per generare questi codici è stato scoperto da David Huffman. Molti codici dipendenti dalla frequenza oggi usati sono codici di Huffman.

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

Page 10: Tecniche di compressione dei dati

Esempio di codice di Huffman per i testi

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• In lingua inglese, le lettere e, t, i sono molto più frequenti delle lettere z, q e x.

• Per codificare testi in lingua inglese, si risparmia spazio usando configurazioni di bit brevi per le lettere più frequenti e lunghe per le meno frequenti.

• Ad esempio, in un testo codificato in ASCII esteso, ogni carattere occupa 8 bit. Quindi ogni volta che occorre un carattere “frequente” la cui codifica compressa occupa meno di 8 bit, ho un risparmio.

Page 11: Tecniche di compressione dei dati

Codifica relativa o differenziale

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• In alcuni casi, le informazioni sono costituite da blocchi, ognuno dei quali differisce leggermente dal precedente.

• Esempio: i fotogrammi consecutivi di un’immagine in movimento.

• Tecnica: codificare solo le differenze rispetto al blocco precedente.

• Può essere con o senza perdita

Page 12: Tecniche di compressione dei dati

Codifica basata sul dizionario (lossless)

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• Dizionario = insieme di blocchi sui quali è costruito il messaggio da comprimere, noto a priori.

• Il messaggio è codificato non più come una sequenza di blocchi bensì come una sequenza di riferimenti al dizionario.

• Variante: codifica adattiva (o dinamica) basata su dizionario, in cui il dizionario può cambiare durante il processo di codifica.

Page 13: Tecniche di compressione dei dati

Esempio

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• Dizionario = insieme di blocchi sui quali è costruito il messaggio da comprimere, noto a priori.

• Il messaggio è codificato non più come una sequenza di blocchi bensì come una sequenza di riferimenti al dizionario.

• Variante: codifica adattiva (o dinamica) basata su dizionario, in cui il dizionario può cambiare durante il processo di codifica.

Page 14: Tecniche di compressione dei dati

Codifica basata sul dizionario

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• Tecnica molto usata nei Word Processor, che già contengono al proprio interno dizionari di parole (tipicamente 25000 voci) a scopi di controllo ortografico.

• Un’intera parola viene codificata come un riferimento al dizionario anziché come una sequenza di caratteri ASCII o Unicode.

• Valutazione delle prestazioni: per una parola da 6 lettere, la codifica a caratteri singoli ASCII richiede 6 x 8 = 48 bit (ASCII) mentre solo 15 come riferimento. Con n = 15 possiamo rappresentare 2^15 differenti voci nel dizionario.

Page 15: Tecniche di compressione dei dati

Codifica LZW (Lempel-Ziv-Welsh)

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• E’ un esempio di codifica adattiva basata su dizionario.

• Si parte da un dizionario che contiene i soli elementi base del messaggio. Poi il dizionario viene via via costruito in modo incrementale durante la fase di compressione.

• Al termine del processo di compressione, il dizionario può essere grande; ma non è necessario avere quest’ultimo per decodificare il messaggio.

Page 16: Tecniche di compressione dei dati

Esempio di codifica LZW

Informatica Generale (Prof. Luca A. Ludovico)Presentazione 9.1

• Messaggio iniziale M: xyx xyx xyx xyx• Dizionario iniziale:

• x >> 1• y >> 2• >> 3

• Messaggio compresso (non adattivo): 121312131213121

• Messaggio compresso (adattivo): 121343434in quanto al dizionario si aggiunge xyx >> 4