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)
– Tecniche senza perdita (lossless)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Osservazioni
• La percentuale di compressione ottenibile dipende:
1. dall’algoritmo utilizzato
2. 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)
Tecniche lossless vs lossy
• Lossless
• Lossy
• Senza perdita di informazione
• Con perdita di informazione
• Si riduce la ridondanza
• Si riduce l’irrilevanza (presunta)
• Si comprime mediamente fino
al 50% delle dimensioni
originali
• Si comprime mediamente fino al
10% delle dimensioni originali
• Ottimale quando non si può
tollerare modifiche nei
contenuti (ad es. testi,
multimedialità
professionale,etc.)
• Ottimale quando si possono
tollerare piccoli errori o
modifiche (immagini e audio non
professionali)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
• Il messaggio M deve essere trasmesso tra il mittente A
e il destinatario B
compressione
decompressione
M
M
M
M*
A
Canale trasmissivo
B
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
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 1
11111101111101100010101111
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
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 = 0110100
MRLE =
000000010 000000101 000000010 000000011
000000100
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
Esempio di codice di Huffman per i testi
• 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Codifica relativa o differenziale
• 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
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Codifica basata sul dizionario (lossless)
• 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Esempio
• 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Codifica basata sul dizionario
• 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Codifica LZW (Lempel-Ziv-Welsh)
• 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Esempio di codifica LZW
• Messaggio iniziale M: xyx xyx xyx xyx
• Dizionario iniziale:
• x
>>
1
• y
>>
2
•
>>
3
• Messaggio compresso (non adattivo): 121312131213121
• Messaggio compresso (adattivo): 121343434
in quanto al dizionario si aggiunge xyx >> 4
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 9.1
Scarica

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