Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek-Kon

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek-Kon"— Μεταγράφημα παρουσίασης:

1 Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek-Kon
Κωνσταντινίδης Νεκτάριος Επιβλέποντες καθηγητές: Σαμαράς Νικόλαος Ευαγγελίδης Γεώργιος Παπαρρίζος Κωνσταντίνος 2008

2 Συνοπτική περιγραφή του αλγόριθμου
Η παρούσα εργασία παρουσιάζει και περιγράφει αναλυτικά έναν νέο συνδυασμό αλγόριθμων συμπίεσης με την ονομασία Nek-Kon. Ο συνδυασμός Nek-Kon αποτελείται από δύο αλγόριθμους, τον Nek και τον Kon, οι οποίοι είναι μη απωλεστικοί και μπορούν να εφαρμοστούν σε όλα τα είδη δεδομένων που αποθηκεύονται σε δυαδική μορφή (κείμενο, ήχο, εικόνα, video κτλ.). Ο αλγόριθμος Nek εφαρμόζεται πρώτος στα δεδομένα. Μετατρέπει την μορφή των δεδομένων σε μια συμπυκνωμένη μορφή με περισσότερα μοτίβα (patterns), συμπιέζοντας ταυτόχρονα. Ο αλγόριθμος Kon εφαρμόζεται αμέσως μετά. Ο αλγόριθμος Kon εντοπίζει τα μοτίβα και τα αντικαθιστά με μικρότερες δομές που παρέχουν μεγαλύτερη συμπίεση. Ο συνδυασμός των αλγόριθμων Nek-Kon έχει ως στόχο την γρήγορη και καλή συμπίεση δεδομένων όλων των μεγεθών.

3 Κωδικοποίηση «Elias gamma coding»
1. Εύρεση της μεγαλύτερης δύναμης που έχει τιμή μικρότερη ή ίση με Χ. 2. Τα πρώτα Ν bit που αποθηκεύουν τον αριθμό Χ είναι άσσοι. Προστίθεται ένα μηδενικό στο τέλος των άσσων. 3. Τέλος, στα επόμενα Ν bit αποθηκεύεται το υπόλοιπο της αφαίρεσης X Για παράδειγμα ο αριθμός Χ=12 αποθηκεύεται ως αριθμός «gamma» ως εξής: 12= = [Ν=3] [Χ- =4]

4 Αλγόριθμος Nek Ο αλγόριθμος Nek ξεκινά σαρώνοντας τα δεδομένα. Κατά την σάρωση αποθηκεύονται σε έναν πίνακα, μικρών διαστάσεων, πληροφορίες που θα χρειαστούν για την μετατροπή των δεδομένων σε μια νέα συμπιεσμένη μορφή με περισσότερα μοτίβα (patterns). Ο πίνακας που δημιουργήθηκε κατά την σάρωση επεξεργάζεται ώστε να αποφασιστεί πώς θα μεταβληθεί η αρχική μορφή των δεδομένων. Ο σκοπός των μεταβολών είναι η δημιουργία μοτίβων και η συμπίεση των αρχικών δεδομένων. Ύστερα από την επιλογή και την εφαρμογή των μεταβολών θα χρειαστεί να αποθηκευτούν ορισμένα δεδομένα τα οποία είναι απαραίτητα για την αποσυμπίεση. Αυτά αποθηκεύονται ξεχωριστά σε ένα ιστορικό. Τα στάδια που ακολουθεί ο αλγόριθμος Nek είναι τα εξής: 1. Σάρωση των δεδομένων και δημιουργία του πίνακα. 2. Επεξεργασία του πίνακα 3. Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα. 4. Αποθήκευση των απαραίτητων πληροφοριών που απαιτούνται για την αποσυμπίεση. 5. Μετατροπή των δεδομένων στην νέα τους μορφή.

5 Αλγόριθμος Nek Σάρωση των δεδομένων και δημιουργία του πίνακα.
Κατά την σάρωση των δεδομένων δημιουργείται ένας πίνακας ο οποίος περιέχει τις τιμές των μεταβλητών L1, L2 και N. Ο πίνακας είναι ταξινομημένος πρώτα ως προς L1 και ύστερα ως προς L2 σε αύξουσα σειρά. Η μεταβλητή L1 αντιπροσωπεύει το μήκος των συνεχόμενων bit με την ίδια τιμή. Η μεταβλητή L2 αντιπροσωπεύει το μήκος των συνεχόμενων ίδιων L1. Η μεταβλητή Ν είναι το πλήθος των συνδυασμών L1-L2 που υπάρχουν στα δεδομένα. Τα μήκη L1 των συνεχόμενων bit με την ίδια τιμή υπολογίζονται ως εξής: Στα παραπάνω δεδομένα το πρώτο L1 έχει τιμή δύο, αφού τα bit ξεκινάνε με δύο συνεχόμενους άσσους. Το δεύτερο L1 έχει τιμή πάλι δύο αφού ακολουθούν, μετά το προηγούμενο L1, δύο συνεχόμενα μηδενικά. Η διαδικασία αυτή συνεχίζεται ως το τέλος των δεδομένων βρίσκοντας έτσι τα L1.

6 Αλγόριθμος Nek Σάρωση των δεδομένων και δημιουργία του πίνακα.
Τα μήκη L2 των συνεχόμενων ίδιων L1 υπολογίζονται ως εξής: Στα δεδομένα το πρώτο L2 έχει τιμή τρία, αφού τα bit ξεκινάνε με τρία συνεχόμενα L1 με τιμή δύο. Το δεύτερο L2 έχει τιμή τέσσερα αφού ακολουθούν, μετά το προηγούμενο L2, τέσσερα συνεχόμενα L1 με τιμή ένα. Η διαδικασία αυτή συνεχίζεται ως το τέλος των δεδομένων βρίσκοντας έτσι τους συνδυασμούς L1-L2. Ο πίνακας των προηγούμενων δεδομένων είναι ο εξής: i L1 L2 N 1 4 2 6 3

7 Αλγόριθμος Nek Σάρωση των δεδομένων και δημιουργία του πίνακα.
Η σάρωση ενός αρχείου γίνεται σύμφωνα με το προηγούμενο παράδειγμα, δηλαδή: i L1 L2 N 1 21 2 9 3 4 18 5 11 6 7 10 8 12 13 14 15 16 17 33

8 Αλγόριθμος Nek Επεξεργασία του πίνακα
Η επεξεργασία του πίνακα γίνεται με την προσθήκη στηλών. Οι στήλες που προστίθενται είναι οι στήλες FL1, FL2, sortN και Temp. Οι στήλες αυτές είναι απαραίτητες για την πραγματοποίηση των επόμενων βημάτων του αλγόριθμου. Η στήλη FL1 περιέχει τα μήκη L1 έτσι ώστε να ξεκινούν από το 1 και να έχουν συνεχόμενες τιμές. Η στήλη FL2 περιέχει τα μήκη L2 έτσι ώστε να ξεκινούν από το 1 και να έχουν συνεχόμενες τιμές. Η στήλη sortN περιέχει τους δείκτες i, για κάθε συνδυασμό L1-L2, ταξινομημένα ως προς το Ν σε φθίνουσα σειρά. Σε περίπτωση που τα Ν είναι ίσα, τότε ταξινομείται ως προς L1 κατά αύξουσα σειρά. Σε περίπτωση που τα Ν και τα L1 είναι ίσα, τότε ταξινομείται ως προς L2 κατά αύξουσα σειρά. Η στήλη Temp περιέχει τιμές που αποθηκεύονται προσωρινά κατά την εφαρμογή μεταβολών στα δεδομένα.

9 Αλγόριθμος Nek Επεξεργασία του πίνακα
Ύστερα από την σάρωση του παραδείγματος και την επεξεργασία του πίνακα, προκύπτει ο παρακάτω πίνακας. i L1 L2 N FL1 FL2 sortN Temp 1 21 2 9 4 3 5 18 7 11 6 8 10 12 13 14 15 16 17 33

10 Αλγόριθμος Nek Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.
Ύστερα από την σάρωση των δεδομένων, την δημιουργία και την επεξεργασία του πίνακα, επιλέγονται οι μεταβολές που θα υποστούν τα δεδομένα. Οι μεταβολές έχουν ως σκοπό να συμπιέσουν τα δεδομένα και να δημιουργήσουν περισσότερα μοτίβα μέσα σε αυτά. Η πρώτη μεταβολή είναι η αντικατάσταση των συνδυασμών L1-L2 με τους συνδυασμούς FL1-FL2. Αυτό επιτυγχάνει πολύ καλή συμπίεση σε δεδομένα όπου τα L1 ή τα L2 δεν είναι συνεχόμενα και εφαρμόζεται πάντα. Με την μεταβολή αυτή οι συνδυασμοί συμπυκνώνονται συμπιέζοντας τα δεδομένα. Στο παράδειγμα τα αρχικά δεδομένα είχαν μέγεθος 360 bit. Ύστερα από την εφαρμογή αυτής της μεταβολής τα δεδομένα θα έχουν μήκος 289 bit, όπως φαίνεται παρακάτω. Πριν την 1η μεταβολή Μετά την 1η μεταβολή

11 Αλγόριθμος Nek Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.
Η δεύτερη μεταβολή είναι η επιλογή του «σημείου τομής» του πίνακα. Το σημείο τομής είναι ένα σημείο στην ταξινόμηση ως προς Ν όπου από εκεί και ύστερα κάθε συνδυασμός FL1-FL2 θεωρείται ίδιος. Η τομή του πίνακα έχει ως σκοπό την δημιουργία μοτίβων καθώς διαφορετικοί σπάνιοι συνδυασμοί FL1-FL2 αντικαθίστανται με τον κοινό συνδυασμό *FL1-*FL2 που είναι πιο συχνός. Έτσι με την μεταβολή αυτή δημιουργούνται περισσότερα μοτίβα και συμπιέζονται τα δεδομένα παράλληλα. Η τομή του πίνακα προκύπτει ύστερα από υπολογισμούς. Στην στήλη Temp αποθηκεύονται προσωρινά τιμές που προκύπτουν από την εφαρμογή της μεθόδου αυτής. Στο τέλος επιλέγεται ως σημείο τομής το i που έχει την μεγαλύτερη τιμή στην στήλη Temp. Η εφαρμογή της δεύτερης μεταβολής μπορεί να γίνει με τρεις τρόπους, όπου ο κάθε τρόπος έχει τα ανάλογα αποτελέσματα. Ο «συντηρητικός» τρόπος Ο «ριψοκίνδυνος» τρόπος Ο «μικτός» τρόπος

12 Αλγόριθμος Nek Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα. Ο «συντηρητικός» τρόπος Το σημείο τομής που προκύπτει αν εφαρμοστεί ο «συντηρητικός» τρόπος ονομάζεται Κ1. Το σημείο τομής Κ1 είναι το i με το μεγαλύτερο λ1 στην στήλη Temp. Σε περίπτωση που υπάρχουν πολλά i με το μεγαλύτερο λ1 τότε επιλέγεται το i με το μεγαλύτερο N(sortN(i)). Σε περίπτωση που το K1 είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του «συντηρητικού» τρόπου. Το μήκος των bit της αρχικής κατάστασης είναι το συνολικό μήκος των δεδομένων σε bit πριν εφαρμοστεί η 2η μεταβολή. Το μήκος των bit της δοκιμαστικής κατάστασης είναι το μήκος των δεδομένων αφού έχει εφαρμοστεί η 2η μεταβολή. Είναι το άθροισμα του μήκους των bit που απαιτούνται για την αποθήκευση των συνδυασμών ως το σημείο τομής K, το άθροισμα των bit που απαιτούνται για την αποθήκευση του σημείου τομής, το άθροισμα των bit που απαιτούνται για την αποθήκευση της ταξινόμησης ως προς Ν, το άθροισμα των bit που απαιτούνται για την αποθήκευση των κοινών συνδυασμών *FL1-*FL2 και των αριθμών «gamma» που δείχνουν τι συμβολίζει ο καθένας.

13 Αλγόριθμος Nek Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα. Ο «ριψοκίνδυνος» τρόπος Ο «ριψοκίνδυνος» τρόπος μπορεί να εφαρμοστεί σε δεδομένα όπου είχε εφαρμοστεί ο «συντηρητικός» τρόπος αλλά δεν ήταν ικανοποιητικό το αποτέλεσμα. Ο «ριψοκίνδυνος» τρόπος θα μεγαλώσει το ιστορικό δημιουργώντας όμως πολύ περισσότερες επαναληπτικές δομές στα δεδομένα. Ανάλογα με την δομή των δεδομένων αυτός ο τρόπος ή θα συμπιέσει πολύ καλύτερα τα δεδομένα σε σύγκριση με τον πρώτο τρόπο ή τα τελικά δεδομένα θα είναι μεγαλύτερου μεγέθους από τα αρχικά. Το σημείο τομής που προκύπτει αν εφαρμοστεί ο «ριψοκίνδυνος» τρόπος ονομάζεται Κ2. Το σημείο τομής Κ2 είναι το i με το μεγαλύτερο λ2 στην στήλη Temp. Σε περίπτωση που υπάρχουν πολλά i με το μέγιστο λ2 τότε επιλέγεται το i με το μεγαλύτερο Ν(sortN(i)). Σε περίπτωση που το K2 είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του «ριψοκίνδυνου» τρόπου.

14 Αλγόριθμος Nek Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα. Ο «μικτός» τρόπος Το σημείο τομής K του μικτού τρόπου προκύπτει ύστερα από στρογγυλοποίηση από τον παρακάτω τύπο: K=K1-(K1-K2)*Χ% Το Χ αντιπροσωπεύει το ποσοστό ρίσκου. Όσο μεγαλύτερο είναι το ποσοστό Χ τόσο μεγαλύτερη θα είναι η διαφορά των αρχικών και των τελικών δεδομένων. Όταν αυτή η διαφορά (Χ%) είναι μεγάλη, υπάρχει περίπτωση τα αρχικά δεδομένα είτε να είναι μεγαλύτερα από τα τελικά είτε να είναι πολύ μικρότερα. Όταν η διαφορά αυτή είναι μικρή, τότε κατά πάσα πιθανότητα τα αρχικά δεδομένα θα είναι λίγο μικρότερα από τα αρχικά. Σε περίπτωση που το K είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του μικτού τρόπου. Ο αλγόριθμος Nek-Kon κατά την εκτέλεσή του εφαρμόζει τον «μικτό τρόπο». Για αυτό το λόγο πριν εκτελεστεί δηλώνεται το ποσοστό ρίσκου Χ. Αν Χ=0% τότε στην πραγματικότητα εφαρμόζεται ο «συντηρητικός» τρόπος ενώ αν Χ=100% τότε εφαρμόζεται ο «ριψοκίνδυνος».

15 Αλγόριθμος Nek Αποθήκευση των απαραίτητων πληροφοριών που απαιτούνται για την αποσυμπίεση. Οι απαραίτητες πληροφορίες που απαιτούνται για την αποσυμπίεση των δεδομένων στην αρχική τους μορφή είναι τα μήκη L1 και L2. Αν έχει εφαρμοστεί η 2η μεταβολή τότε απαιτείται και η αποθήκευση της ταξινόμησης ως προς Ν, το σημείο τομής και οι αριθμοί «gamma». Οι πληροφορίες αυτές αποθηκεύονται ξεχωριστά σε ένα ιστορικό.

16 Αλγόριθμος Nek Μετατροπή των δεδομένων στην νέα τους μορφή.
Η μετατροπή των δεδομένων γίνεται σύμφωνα με τον βασικό πίνακα. Κατά την σάρωση των δεδομένων οι συνδυασμοί L1-L2 αντικαθίστανται από τους συνδυασμούς FL1-FL2. Η μετατροπή των δεδομένων του παραδείγματος γίνεται τελικά ως εξής: Αρχικά δεδομένα: Τελικά δεδομένα:

17 Αλγόριθμος Kon Ύστερα από την εκτέλεση του αλγόριθμου Nek παραμένουν το ιστορικό, τα δεδομένα που συμπιέστηκαν και οι αριθμοί gamma. O αλγόριθμος Kon εκτελείται ακολουθώντας τα παρακάτω βήματα. Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων. Ταξινόμηση των μοτίβων με βάση την συμπίεση που παρέχουν. Έλεγχος για σύγκρουση των μοτίβων και δημιουργία του πίνακα ταξινόμησης. Αποθήκευση του τελικού ιστορικού. Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα

18 Αλγόριθμος Kon Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων Η σάρωση των δεδομένων και η δημιουργία του πίνακα μοτίβων γίνεται ακολουθώντας τα παρακάτω βήματα. Α) Καθορισμός των πινάκων που θα χρησιμοποιηθούν Β) Καθορισμός βασικών μεταβλητών Γ) Σάρωση των δεδομένων και δημιουργία του πίνακα των μοτίβων.

19 Αλγόριθμος Kon Καθορισμός των πινάκων που θα χρησιμοποιηθούν
Ο πίνακας των μοτίβων Τα μοτίβα αποθηκεύονται ως μια ακολουθία από μήκη L1. Ένα παράδειγμα ενός μοτίβου είναι το 2-3-1, δηλαδή σε bit ή Χρησιμοποιείται ένας πίνακας όπου αποθηκεύονται τα μοτίβα, ο πίνακας των μοτίβων. Κάθε στοιχείο του πίνακα μοτίβων έχει την παρακάτω δομή: Public Structure STRUCTURE_PATTERN Public BEFORE As Integer Public NEXT_PATTERN() As Integer Public TIMES As Integer Public LENGTH As Integer Public IsNOTEdited As Boolean End Structure Η δομή αυτή αντιστοιχεί σε ένα L1 ενός μοτίβου

20 Αλγόριθμος Kon Καθορισμός των πινάκων που θα χρησιμοποιηθούν
Ο πίνακας FIRST_ARRAY Χρησιμοποιείται και ένας 2ος πίνακας, ο πίνακας FIRST_ARRAY(). Ο πίνακας αυτός είναι ένας πίνακας διευθύνσεων με μέγεθος MAX στον οποίον αποθηκεύονται οι θέσεις των πρώτων L1 κάθε μοτίβου στον πίνακα των μοτίβων. Για παράδειγμα, για το μοτίβο στο FIRST_ARRAY(2) αποθηκεύεται η θέση της δομής L1=2 στον πίνακα μοτίβων. Ο πίνακας ΝΕΧΤ Ο πίνακας NEXT αποθηκεύει τις θέσεις που έχει στον πίνακα των μοτίβων ένα L1 που διαβάστηκε από τα δεδομένα. Η χρήση του πίνακα NEXT θα εξηγηθεί στην σάρωση των δεδομένων αναλυτικά.

21 Αλγόριθμος Kon Καθορισμός βασικών μεταβλητών
Με βάση την μνήμη M που έχει ο αλγόριθμος ορίζονται οι παρακάτω μεταβλητές: Orio = M * , Unit = 4 * 32 + ΜΑΧ * 32, LENGTH= , LIMIT= Η μεταβλητή Orio είναι το σύνολο των bit που έχει στην διάθεσή του ο αλγόριθμος Kon για την εφαρμογή του. Η μεταβλητή Unit είναι το σύνολο των bit που απαιτούνται για την αποθήκευση μιας δομής L1 ενός μοτίβου. Η μεταβλητή MAX είναι το μεγαλύτερο FL1 στον κύριο πίνακα του αλγόριθμου Nek. Η μεταβλητή LENGTH είναι το μέγιστο μήκος των δομών L1 που μπορεί να έχει ένα μοτίβο. Τα μοτίβα που ελέγχονται έχουν μήκος μικρότερο ή ίσο με LENGTH. Η μεταβλητή LIMIT είναι το μέγεθος του πίνακα μοτίβων που περιέχει τις δομές L1 των μοτίβων.

22 Αλγόριθμος Kon Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων Η δημιουργία του πίνακα των μοτίβων ακολουθεί τα παρακάτω βήματα: 1. Ανάγνωση της δομής L1 από τα δεδομένα. 2. Αύξηση του TIMES των μοτίβων που εντοπίστηκαν 3. Ανανέωση των διευθύνσεων του πίνακα NEXT 1. Τα δεδομένα σαρώνονται εντοπίζοντας στην σειρά τα διάφορα L1. Για παράδειγμα αν τα δεδομένα ήταν τότε θα σαρώνονταν στην σειρά 2. Αν στις διευθύνσεις του πίνακα NEXT το NEXT_PATTERN(L1) είναι διάφορο του μηδενός τότε αυξάνεται το TIMES της δομής NEXT_PATTERN(L1) στον πίνακα των μοτίβων κατά 1. 3. Η πρώτη διεύθυνση του πίνακα Next παίρνει την τιμή του FIRST_ARRAY(L1). Αν FIRST_ARRAY(L1)=0 τότε δημιουργείται μια νέα δομή στον πίνακα των μοτίβων στην οποία δείχνει το FIRST_ARRAY(L1). Οι υπόλοιπες διευθύνσεις NEXT(i) του πίνακα NEXT παίρνουν την τιμή του NEXT_PATTERN(NEXT(i-1)) ξεκινώντας από το τέλος του πίνακα. Κάθε νέα δομή έχει TIMES=1. Τα NEXT_PATTERN() είναι όλα ίσα με μηδέν. Το BEFORE παίρνει την τιμή της διεύθυνσης του πίνακα NEXT. Το LENGTH παίρνει τιμή το μήκος του μοτίβου.

23 Χ=P(FIRST_ARRAY(2)).NEXT_PATTERN(3)
Αλγόριθμος Kon Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων Η διαδικασία που περιγράφτηκε επαναλαμβάνεται έως ότου διαβαστούν όλα τα δεδομένα. Με αυτόν τον τρόπο δημιουργούνται σχέσεις μεταξύ των δομών L1 που δείχνουν ποιο είναι πριν (BEFORE) και ποιο είναι μετά (NEXT_PATTERN). Οι σχέσεις αυτές είναι που δείχνουν ποια είναι τα μοτίβα στον πίνακα των μοτίβων. Ξεκινώντας από τα πρώτα L1 που δείχνουν οι διευθύνσεις του πίνακα FIRST_ARRAY βρίσκουμε τα μοτίβα και πόσες φορές βρέθηκαν. Για παράδειγμα για το μοτίβο κοιτάμε την διεύθυνση FIRST_ARRAY(2). Αν ο πίνακας μοτίβων είναι ο P τότε το L1=2 αντιστοιχεί σε P(FIRST_ARRAY(2)). Για να βρούμε το 2-3 βρίσκουμε την διεύθυνση Χ=P(FIRST_ARRAY(2)).NEXT_PATTERN(3) To TIMES της διεύθυνσης αυτής μας δείχνει πόσες φορές εμφανίστηκε το μοτίβο 2-3 στα δεδομένα. Για να βρούμε το μοτίβο βρίσκουμε την διεύθυνση P(X).NEXT_PATTERN(1). Το TIMES της διεύθυνσης αυτής μας δείχνει πόσες φορές εμφανίστηκε το μοτίβο στα δεδομένα. Ακολουθώντας τα ίδια βήματα μπορούμε να βρούμε οποιοδήποτε μοτίβο πόσες φορές εμφανίστηκε στα δεδομένα.

24 Αλγόριθμος Kon Ταξινόμηση των μοτίβων με βάση την συμπίεση που παρέχουν. Έλεγχος για σύγκρουση των μοτίβων και δημιουργία του πίνακα ταξινόμησης. Ύστερα από την σάρωση των δεδομένων και την δημιουργία του πίνακα μοτίβων, πρέπει τα μοτίβα να ταξινομηθούν ως προς την συμπίεση που παρέχουν. Δημιουργείται ένας νέος πίνακας, ο πίνακας ταξινόμησης, που περιέχει τα καλύτερα μοτίβα. Ο πίνακας ταξινόμησης δημιουργείται ακολουθώντας τα παρακάτω τέσσερα βήματα: Για κάθε μοτίβο εξετάζεται αν αυξάνει ή αν μειώνει το τελικό μέγεθος των δεδομένων η επιλογή του. Από τα μοτίβα που μειώνουν το μέγεθος των δεδομένων επιλέγεται το καλύτερο ως εξής: Από τα μοτίβα που εμφανίζονται περισσότερες φορές από το μήκος τους, επιλέγεται εκείνο με το μεγαλύτερο μήκος L. Έπειτα επιλέγεται από τα μοτίβα που έχουν μεγαλύτερο μήκος από τον αριθμό εμφάνισής τους, εκείνο που εμφανίστηκε τις περισσότερες φορές N. Το τελικό μοτίβο είναι εκείνο με το μεγαλύτερο Ν ή L. 3. Ελέγχεται αν υπάρχει σύγκρουση μεταξύ του μοτίβου που επιλέχθηκε και των μοτίβων του πίνακα μοτίβων. Τα μοτίβα, στον πίνακα των μοτίβων, στα οποία εντοπίζεται σύγκρουση μειώνεται ο αριθμός που εντοπίστηκαν. 4. Επαναλαμβάνεται η διαδικασία από την αρχή ώσπου να μην βρεθεί μοτίβο που να μειώνει το μέγεθος των αρχικών δεδομένων.

25 Αλγόριθμος Kon Το πρόβλημα της «σύγκρουσης».
Λόγω του ότι το μήκος των μοτίβων είναι μεταβλητό και ο πίνακας περιέχει όλα τα συχνά μοτίβα, μπορεί αρκετά μοτίβα ή να «συγκρούονται». Για παράδειγμα από τα μοτίβα: 2-3-1 και και Το μοτίβο «συγκρούεται» με το μοτίβο 2-3-1, και το μοτίβο με το μοτίβο μπορεί να «συγκρούονται» σε ορισμένες περιπτώσεις όπως αυτή: … … Στα μοτίβα που «συγκρούονται» με το μοτίβο που έχει επιλεγεί πρέπει να μειώνεται ο αριθμός των φορών που έχουν εμφανιστεί ώστε να μην υπολογίζεται το ίδιο μοτίβο 2 φορές. Το πρόβλημα αυτό ονομάζεται πρόβλημα «σύγκρουσης». Για την αντιμετώπιση του προβλήματος της σύγκρουσης αφού επιλεγεί ένα μοτίβο για τον πίνακα ταξινόμησης, μειώνεται ο αριθμός που εμφανίστηκαν τα μοτίβα του πίνακα σάρωσης που συγκρούονται με αυτό.

26 Αλγόριθμος Kon Αποθήκευση του τελικού ιστορικού.
Το τελικό ιστορικό περιλαμβάνει το ιστορικό του αλγόριθμου Nek, το ιστορικό του αλγόριθμου Kon και τα συμπιεσμένα δεδομένα. Το ιστορικό του αλγόριθμου Kon περιλαμβάνει την αποθήκευση των μοτίβων και τους αριθμούς gamma. Ύστερα από την εφαρμογή των προηγούμενων βημάτων στον πίνακα των μοτίβων, εντοπίστηκε μόνο ένα μοτίβο, το 4-4.

27 Αλγόριθμος Kon Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα
Κατά την διαδικασία αυτή αντικαθιστούνται τα μοτίβα από μια κοινή δομή αντικατάστασης. Η δομή αυτή έχει μήκος MAX+1, όπου MAX το μεγαλύτερο FL1 του κύριου πίνακα του αλγόριθμου Nek. Στο παράδειγμα της εργασίας MAX=4 οπότε το μήκος της δομής αντικατάστασης θα είναι L1=5. Κατά την σάρωση κάθε φορά που εντοπίζεται ένα μοτίβο αντικαθιστάται από την δομή αντικατάστασης ενώ αποθηκεύεται στο ιστορικό ο αριθμός gamma που αντιπροσωπεύει το είδος του μοτίβου. Ο πρώτος αριθμός gamma αντιστοιχεί στο πρώτο μοτίβο, ο δεύτερος στον δεύτερο κτλ. Στην περίπτωση που είναι μόνο ένα μοτίβο τότε δεν αποθηκεύονται οι αριθμοί gamma. Ακολουθούν τα δεδομένα πριν και μετά την εφαρμογή του αλγόριθμου Kon στο παράδειγμα. Παρατηρούμε ότι τα δεδομένα μειώθηκαν κατά 30bit. Αφού στο παράδειγμα μας εντοπίστηκε ένα μόνο μοτίβο δεν θα αποθηκευτούν οι αριθμοί gamma.

28 Αλγόριθμος Kon Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα

29 Αποσυμπίεση Κατά την διαδικασία της αποσυμπίεσης δημιουργούνται οι βασικοί πίνακες της συμπίεσης. Διαβάζονται στην αρχή τα δεδομένα του αλγόριθμου Nek και δημιουργείται ο βασικός πίνακας. Αφού είναι γνωστά από το ιστορικό τα L1, L2, το εάν έχει εφαρμοστεί η 2η μεταβολή, το σημείο τομής και η ταξινόμηση ως προς Ν εύκολα δημιουργείται ο αρχικός πίνακας. Ύστερα διαβάζονται τα μοτίβα που είχαν αποθηκευτεί στο ιστορικό. Δημιουργείται ο πίνακας των μοτίβων. Τα δεδομένα σαρώνονται και γίνεται αντικατάσταση των δομών με βάση τους πίνακες που έχουν δημιουργηθεί. Πρώτα αντικαθιστάται με βάση τους αριθμούς gamma του ιστορικού τα μοτίβα και ύστερα αντικαθιστούνται τα FL1-FL2 του πίνακα Nek με τα αντίστοιχα L1-L2.

30 Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά προγράμματα
Για την εικόνα “stone20.jpg” με μέγεθος byte την καλύτερη συμπίεση έκανε το πρόγραμμα Nek-Kon με byte. Επίσης, παρατηρούμε ότι μόνο το πρόγραμμα Nek-Kon μείωσε το μέγεθος του αρχικού αρχείου καθώς τα υπόλοιπα προγράμματα το αύξησαν. Πιθανή αιτία αυτού του φαινομένου είναι το γεγονός ότι το αρχείο είναι ήδη συμπιεσμένο σε μορφή jpg. Μέγεθος σε byte Χρόνος σε sec Αρχικά δεδομένα Μετά από τον Nek-Kon 3654 Μετά από το WinRar 1 Μετά από το WinZip Μετά από το 7-zip 2

31 Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά προγράμματα
Το αρχείο “Visual3D.EngineMedia.dll” έχει μέγεθος byte και συμπιέστηκε καλύτερα από το πρόγραμμα WinRar με byte. Μέγεθος σε byte Χρόνος σε sec Αρχικά δεδομένα 16.384 Μετά από τον Nek-Kon 1.328 3 Μετά από το WinRar 1.052 1 Μετά από το WinZip 1.144 Μετά από το 7-zip 1.062

32 Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά προγράμματα
Ο ήχος “rkflood01c.mp3” έχει μέγεθος byte και συμπιέστηκε καλύτερα από το πρόγραμμα WinZip με byte. Μέγεθος σε byte Χρόνος σε sec Αρχικά δεδομένα 53.289 Μετά από τον Nek-Kon 52.804 208 Μετά από το WinRar 52.881 1 Μετά από το WinZip 52.798 Μετά από το 7-zip 53.113


Κατέβασμα ppt "Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek-Kon"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google