La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Gianluca Costante & Alessio Scannapieco

Presentazioni simili


Presentazione sul tema: "Gianluca Costante & Alessio Scannapieco"— Transcript della presentazione:

1 Gianluca Costante & Alessio Scannapieco
LZSS + SHANNON FANO Gianluca Costante & Alessio Scannapieco

2 Introduzione Analisi iniziale Comprensione algoritmi Implementazione
Suddivisione compiti Comprensione algoritmi Implementazione LZSS Shannon Fano Analisi finale Esecuzione test Ottimizzazione

3 Analisi Iniziale Suddivisione dei compiti
LZSS: Gianluca Costante Shannon Fano: Alessio Scannapieco L’ouput di LZSS sarà utilizzato da Shannon Fano come input, in modo da sfruttare la ripetizione delle terne

4 LZSS – Intro Lempel-Ziv-Storer-Szymanski PCZip, ARJ, LHArc, ZOO
Miglioramento LZ77 no-match: 0 CHAR match: 1 (length, offset)

5 LZSS –Codifica Imposta la posizione di codifica all’inizio dello stream di input Leggi una quantità MAX_MATCH di caratteri Trova il match più lungo nella finestra con il lookahead buffer: P := puntatore al match L := lunghezza del match È L >= LUNGHEZZA_MINIMA SI: ritorna P e muovi la posizione di codifica L caratteri avanti NO: ritorna il primo carattere del lookahead buffer e muovi la posizione di codifica di un carattere avanti Se ci sono ancora caratteri nello stream di input, torna al passo 2

6 LZSS - Esempio POS 1 2 3 4 5 6 7 8 9 10 11 CAR A B C PASSO POS MATCH
OUTPUT 1 - - A 2 3 B 4 5 C 6 B B (3. 2) 7 8 A A B (7, 3) 11 LUNGHEZZA_MINIMA = 2

7 Implementazione - LZSS
Scelte compiute Lettura a byte Match massimo: 15 (4 bit => length) Sliding-window: 4096 simboli (12 bit => offset)

8 Implementazione - LZSS
Problemi riscontrati Compressione Ricerca del match massimo nella sliding-window Scrittura bits Posizione flags Decompressione Lettura bits Bits spuri alla fine del file compresso

9 Implementazione - LZSS
Problemi risolti Compressione Ricerca del match massimo => Bruteforce Scrittura bits => Maschere Decompressione Lettura bits => Maschere

10 Implementazione - LZSS
Problemi aperti Compressione Posizione flags => (8 flags e 8 terne/caratteri) Decompressione Bits spuri alla fine del file compresso => (Sequenza finale)

11 Implementazione - LZSS
Strutture dati Scelte: Buffer di caratteri per la lettura di file Struct per gestione terne Array per sliding-window e lookahead buffer

12 Implementazione - LZSS
Sviluppi futuri Compressione Ricerca del match massimo => Liste? Hash? Scrittura bits => Libreria bitfile Decompressione Lettura bits => Libreria bitfile

13 Implementazione – Shannon Fano
Problemi riscontrati Compressione Generazione albero ricorrenze Bits spuri a fine file

14 Implementazione – Shannon Fano
Problemi risolti Compressione Generazione albero ricorrenze => Liste Bits spuri a fine file => Informazioni nell’header

15 Implementazione – Shannon Fano
Strutture dati Scelte: Puntatori per Alberi e Liste Array per conteggio simboli Array per ordinamento in base alla frequenza Array algoritmo generazione Albero

16 Implementazione – Shannon Fano
Sviluppi futuri Decompressione

17 Gianluca Costante & Alessio Scannapieco
LZSS + SHANNON FANO Gianluca Costante & Alessio Scannapieco

18 Beta - LZSS Scelte finali Sliding-window => variabile
Match massimo => variabile Compressione Ricerca match => bruteforce Scrittura bits => Libreria bitfile Posizione flags => pacchetto da 1 byte Decompressione Lettura bits => Libreria bitfile Bits spuri => Sequenza finale

19 Analisi finale - LZSS OFFSET_BITS = 8 LENGTH_BITS = 4 File Dim. Tempo
% Compressione JPG 129 KB 0.163 s % TEXT 3.7 MB 0.480 s % BMP 778 KB 0.241 s % EXCEL 50 KB 0.297 s 5.409 % PDF 5.4 MB 6.592 s % MEMORIA = = 272 bytes

20 Analisi finale - LZSS OFFSET_BITS = 8 LENGTH_BITS = 8 File Dim. Tempo
% Compressione JPG 129 KB 0.182 s % TEXT 3.7 MB 0.550 s % BMP 778 KB 0.524 s % EXCEL 50 KB 0.352 s 6.017 % PDF 5.4 MB 6.549 s % MEMORIA = = 512 bytes

21 Analisi finale - LZSS OFFSET_BITS = 12 LENGTH_BITS = 4 File Dim. Tempo
% Compressione JPG 129 KB 2.376 s % TEXT 3.7 MB 1.254 s % BMP 778 KB 3.471 s % EXCEL 50 KB 1.742 s 5.571 % PDF 5.4 MB s % MEMORIA = = 4112 bytes

22 Analisi finale - LZSS OFFSET_BITS = 12 LENGTH_BITS = 8 File Dim. Tempo
% Compressione JPG 129 KB 2.323 s % TEXT 3.7 MB 1.249 s % BMP 778 KB 3.192 s % EXCEL 50 KB 1.508 s 7.612 % PDF 5.4 MB s % MEMORIA = = 4352 bytes

23 Analisi finale - LZSS OFFSET_BITS = 12 LENGTH_BITS = 12 File Dim.
Tempo % Compressione JPG 129 KB 2.552 s % TEXT 3.7 MB 1.169 s % BMP 778 KB 3.564 s % EXCEL 50 KB 2.497 s 3.012 % PDF 5.4 MB s % MEMORIA = = 8192 bytes

24 Analisi finale - LZSS Fattori importanti
Scelta della dimensione di offset e length Dipende molto dalla tipologia di file Algoritmo di ricerca in finestra Bruteforce non efficiente, caso peggiore: 2bit_offset

25 Ottimizzazione - LZSS Utilizzo dell’algoritmo Knuth-Morris-Pratt
OFFSET_BITS = 12 LENGTH_BITS = 4 File Dim. Tempo % Compressione JPG 129 KB 1.708 s % TEXT 3.7 MB 0.873 s % BMP 778 KB 2.547 s % EXCEL 50 KB 0.438 s 5.116 % PDF 5.4 MB s % MEMORIA = = 4112 bytes

26 Closed Beta - ShannonFanoC
Shannon Fano Canonico Facilita la decodifica Informazioni dell’header Lunghezza codici (0 a 255) Bit da leggere dall’ultimo byte (256esimo)

27 Closed Beta – ShannonFanoC
Header di esempio

28 Closed Beta - ShannonFanoC
Problematiche newline Differenze sostanziali in quantità di peso per certi tipi di file .bmp, certi si, certi no Altri tipi di file

29 Closed Beta - ShannonFanoC
Problematiche newline File .txt Differenze sostanziali in quantità di peso per certi tipi di file Fase di debug .bmp, certi si, certi no Dovuto ad un errore di codifica o decodifica Altri tipi di file Analizzare l’output

30 Closed Beta – ShannonFanoC
DEMO File di testo (text11.txt) BMP funzionante (ImmagineTest.bmp)

31 Closed Beta – ShannonFanoC
Prossima fase Risolvere le problematiche Ottimizzare il programma Documentare il codice

32 Grazie per l’attenzione


Scaricare ppt "Gianluca Costante & Alessio Scannapieco"

Presentazioni simili


Annunci Google