Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας
Ενότητα 3: Επισκόπηση Συµπίεσης 2
Θεωρία Πληροφορίας Κωδικοποίηση Θεµελιώθηκε απο τον Claude Shannon (AT&T-Bell Labs, 1948 A Mathematical Theory of Communication ) Βαθιά µαθηµατική θεωρία η οποία όµως εξηγεί πολύ σηµαντικά προβλήµατα ηλεκτρολόγων/τηλεπικοινωνιακών µηχανικών 3
Θεωρία Πληροφορίας Κωδικοποίηση Η θεωρία πληροφορίας ασχολείται µε: Αποδοτικότητα Αξιοπιστία της µετάδοσης πληροφορίας από µια πηγή σε έναν προορισµό 4
Ορισµοί Θεωρίας Πληροφορίας Ως πληροφορία µπορούµε να θεωρήσουµε την οργάνωση µεµονωµένων στοιχείων, τα οποία ονοµάζονται σύµβολα. Αλφάβητο: διακριτό και µη κενό σύνολο συµβόλων S={s 1,s 2, s 3,, s n } Ακολουθία: µια σειρά συµβόλων (δοθέντος ενός αλφαβήτου) 5
Ορισµοί Θεωρίας Πληροφορίας Κώδικες Μοναδικής Αποκωδικοποίησης: Ο αποκωδικοποιητής πρέπει να µπορεί να καθορίζει κατά µοναδικό τρόπο το σύνολο των συµβόλων που αντιστοιχούν στους δυαδικούς κώδικες που λαµβάνει. Προθεµατικοί Κώδικες (prefix codes): Ειδική περίπτωση µοναδικά αποκωδικοποιήσιµου κώδικα στον οποίο καµία κωδική λέξη δεν είναι πρόθεµα άλλης κωδικής λέξης. 6
Εικόνα από το βιβλίο «Συστήµατα Πολυµέσων: Αλγόριθµοι, Πρότυπα & Εφαρµογές»
Θεωρία Πληροφορίας Κωδικοποίηση Η πληροφορία που µεταδίδει ένα σύµβολο είναι αντιστρόφως ανάλογη της πιθανότητας του: I p = log ( p (bits) Η εντροπία µιας πηγής είναι η µέση τιµή της πληροφορίας των συµβόλων της: H p =,-. +/0 p + log ( p + (bits) 8
Εικόνα από το βιβλίο «Συστήµατα Πολυµέσων: Αλγόριθµοι, Πρότυπα & Εφαρµογές»
Ορισµοί Θεωρίας Πληροφορίας Απόδοση: Μετρική για τον υπολογισµό της ικανότητας συµπίεσης του συστήµατος κωδικοποίησης: Εντροπια Αποδοση = Μεσο µηκος συµβολου Εντροπία: βέλτιστο µέσο µήκος συµβόλου 10
Κατηγοριοποίηση Τεχνικών Συµπίεσης Συµπίεση Χωρίς Απώλειες (Lossless Compression) Συµπίεση Με Απώλειες (Lossy Compression) 11
Εικόνα από το βιβλίο «Συστήµατα Πολυµέσων: Αλγόριθµοι, Πρότυπα & Εφαρµογές»
Μετρικές Συµπίεσης Ρυθµός Συµπίεσης (compression rate): Ρυθµός συµπιεσµένων δεδοµένων (απόλυτο µέγεθος). Εκφράζεται ως bit/σύµβολο Λόγος Συµπίεσης (compression ratio): Πηλίκο του µεγέθους (ή ρυθµού) των αρχικών δεδοµένων προς το µέγεθος (ή ρυθµό) των συµπιεσµένων δεδοµένων (σχετικό µέγεθος) 13
Ρυθµός Παραµόρφωση (R-D) 14
Run Length Coding Κωδικοποίηση Μήκους Διαδροµής Lossless Coding. Απλούστερη µορφή αποµάκρυνσης πλεονασµού. Αποδίδει καλύτερα όταν υπάρχουν επαναλήψεις ή πλεονασµός συµβόλου στην πληροφορία. 15
Run Length Coding Κωδικοποίηση Μήκους Διαδροµής Κωδικοποίηση Run-Length: 0,0,,0,L (N,L) (N: # of 0s, L 0) N Π.χ. 0,0,0,1,0,0,2,1,0 (3,1),(2,2),(0,1),EOB EOB ( End of Block ) σηµατοδοτεί το τέλος του µηνύµατος και κωδικοποιεί τα υπολοιπόµενα µηδενικά, καθότι ο συνολικός αριθµός συµβόλων είναι γνωστός (εικόνα-8x8 DCT: 64 σύµβολα) 16
Huffman Coding Κωδικοποίηση Huffman Υπολογισµός Πιθανότητας Εµφάνισης κάθε συµβόλου. Τα σύµβολα είναι φύλλα δυαδικού δέντρου µε τα συχνότερα σύµβολα να είναι πιο κοντά στη ρίζα του δέντρου. Δηµιουργία δυαδικού δέντρου: Τα φύλλα του δυαδικού δέντρου αντιστοιχίζονται στις πιθανότητες εµφάνισης των συµβόλων. Τα φύλλα µπορούν να είναι ταξινοµηµένα σε αύξουσα/φθίνουσα σειρά. Συνδυάζονται οι δυο µικρότερες πιθανότητες και δηµιουργείται ένας νέος κόµβος (πατέρας), ο οποίος έχει πιθανότητα ίση µε τα άθροισµα των δυο πιθανοτήτων που συνδυάστηκαν (παιδιών). 17
Huffman Coding Κωδικοποίηση Huffman Η διαδικασία επαναλαµβάνεται διαλέγοντας κάθε φορά δυο κόµβους που αντιστοιχούν στις ελάχιστες πιθανότητες, οι οποίοι συνδυάζονται για να φτιάξουν άλλους κόµβους, έως ότου αποµείνει ένας µόνο κόµβος (ρίζα του δέντρου). Σε κάθε κλαδί του δέντρου ανατίθεται η ετικέτα 0 ή 1 ξεκινώντας από τη ρίζα. Διατρέχονται όλοι οι ενδιάµεσοι κόµβοι. 18
Huffman Coding Κωδικοποίηση Huffman 19
Huffman Coding Κωδικοποίηση Huffman Εύκολος αλγόριθµος σχεδίασης βιβλίου κωδικών(codebook) recursive greedy algorithm Γίνεται να υλοποιηθει «στατικα», όπου η φάση της σχεδίασης του βιβλίου κωδικών γίνεται πριν απο τη µετάδοση του µηνύµατος πληροφορίας και το βιβλίο παραµένει σταθερο καθ όλη τη διάρκεια µετάδοσης. Γίνεται να υλοποιηθει «δυναµικα», δηλαδη για κάθε µήνυµα προηγεί ται η διαδικασία σχεδίασης του βιβλίου κωδικών, µετα η µετάδοση του βιβλίου και στο τέλος του κωδικοποιηµένου µηνύµατος. 20
Huffman Coding Κωδικοποίηση Huffman Γίνεται επίσης να ξεκινήσουµε µε κάποιο βιβλίο κωδικών και να το µεταβάλουµε, προσαρµόζοντάς το για κάθε µήνυµα ( adaptive codebook ). Επιτυγχνάνει µέση τιµη κωδικοποιηµένης πληροφορίας πολυ κοντα στην εντροπία της πηγής L P =,-. +/0 p + l + < H P + 1 (bits) Πολυ εύκολη υλοποίηση κωδικοποίησης (look-up table) και σχετικα εύκολη υλοποίηση αποκωδικοποίησης (binary trees/lookup tables) 21
Μειονεκτήµατα Κωδικοποίησης Huffman εν έχει καλη απόδοση για πηγές που έχουν σύµβολα µε πολυ µεγά λη πιθανότητα (p 1) Λύση: κωδικοποίηση πολλών συµβόλων ταυτόχρονα Run Length Coding 22
Μειονεκτήµατα Κωδικοποίησης Huffman Π.χ. p(0) = 0.8, p(1) = 0.1, p(2) = 0.1 I(0) = 0.322 bits, I(1) = I(2) = 3.322 bits H = 0.922 bits Κωδικοποίηση Huffman: 0 (1), 1 (00), 2 (01), L = 1.2 bits («µό νο» 0.278 bits παραπάνω, αλλα 30%!!!) 23
Κωδικοποίηση Huffman Αν κωδικοποιήσουµε 2 σύµβολα ταυτόχρονα, τότε: p(0,0) = 0.8*0.8=0.64 I0 = 0.644 bits p(0,1) = p(1,0) = p(0,2) = p(2,0) = 0.8*0.1 = 0.08 I1 = 3.644 bits p(1,1) = p(1,2) = p(2,1) = p(2,2) = 0.1*0.1 = 0.01 I2 = 6.644 bits H=1.844bits(/2σύµβολα=0.922bits/σύµβολο) 24
Κωδικοποίηση Huffman Κωδικοποίηση Huffman: (0,0) 1 (0,1) 010 (0,2) 0111 (1,0) 0110 (2,0) 001 (1,1) 00000 (1,2) 00001 (2,1) 00010 (2,2) 00011 L = 1.96 bits (+0.116 bits παραπάνω, αλλά 6.3%) Πανεπιστήµιο Θεσσαλίας 25
Arithmetic Coding Arithmetic coding is a form of entropy encoding used in lossless data compression. Normally, a string of characters such as the words "hello there" is represented using a fixed number of bits per character, as in the ASCII code. When a string is converted to arithmetic encoding, frequently used characters will be stored with fewer bits and not-so-frequently occurring characters will be stored with more bits, resulting in fewer bits used in total. Arithmetic coding differs from other forms of entropy encoding, such as Huffman coding, in that rather than separating the input into component symbols and replacing each with a code, arithmetic coding encodes the entire message into a single number, an arbitrary-precision fraction n where [0.0 n < 1.0). 26
Παράδειγµα Arithmetic Coding Μετάδοση µηνύµατος: abba 27
Παράδειγµα Arithmetic Coding Μετάδοση µηνύµατος: eaii! After seeing Nothing e a i i! TABLE I. Example Fixed Model for Alphabet (a, e, i, o, u,!) Symbol Probability Range.2 LO, 0.2).3 [0.2, 0.5).l [0.5, 0.6).2 [0.6,0.8).l [0.8, 0.9).l [0.9, 1.0) 1 0 i! u 0 i e a 0.5 0.2 i a 0.26 0.2 i! u 0 / i e a \! U 0 / i e a \ 28