1 / 107

Conf. Dr. Ing . Costin-Anton Boiangiu < Costin.Boiangiu@CS.PUB.RO >

UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE. Transmisia datelor multimedia in retele de calculatoare : Compresia datelor Codificarea Huffman. Conf. Dr. Ing . Costin-Anton Boiangiu < Costin.Boiangiu@CS.PUB.RO >. Codarea Shannon- Fano. Are avantajul simplitatii

lynna
Télécharger la présentation

Conf. Dr. Ing . Costin-Anton Boiangiu < Costin.Boiangiu@CS.PUB.RO >

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE Transmisiadatelor multimedia in retele de calculatoare: CompresiadatelorCodificarea Huffman Conf. Dr. Ing. Costin-Anton Boiangiu <Costin.Boiangiu@CS.PUB.RO>

  2. Codarea Shannon-Fano • Are avantajul simplitatii • Suboptimal • Se bazeazapeteoria Shannon • Codul este construit astfel: mesajele sursei s(i) si probabilitatile asociate p(i) sunt listate in ordine descrescatoare a probabilitatilor • Lista este divizata pentru a forma doua grupuri de probabilitati egale • Fiecare mesaj din primul grup receptioneaza (primeste) 0 ca prim simbol al cuvantului de cod, iar mesajele din lista a doua vor avea cuvintele de cod incepand cu 1 • Fiecare din sub-listele obtinute sunt divizate dupa acelasi criteriu si se aloca (asigneaza) simboluri suplimentare • Procesul se continua pana cand se obtin sub-liste cu un singur mesaj

  3. Codarea Shannon-Fano • Lungimea cuvantului de cod este –log(p(x)) daca este posibil sa se divizeze in subgrupuri de probabilitate egala • Cand acest lucru nu este posibil, unele din cuvintele de cod vor avea lungimi de (-log(p(x)) +1) • Codul Shannon-fano furnizeaza o lungime medie a cuvintelor de cod ce satisface relatia :

  4. 1 1 1 1 0 0 0 1 a b c d e f 9 8 6 5 4 2 Codarea Shannon-Fano a b c d e f 9 8 6 5 4 2

  5. 0 1 c d e f 0 1 6 5 4 2 a b 9 8 Codarea Shannon-Fano 1 1 1 1 0 0 a b c d e f 9 8 6 5 4 2

  6. c d e f 6 5 4 2 Codarea Shannon-Fano 1 1 1 1 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 a b 9 8

  7. 1 0 1 c d e f 6 5 4 2 Codarea Shannon-Fano 1 1 1 1 00 01 a b c d e f 9 8 6 5 4 2 0 0 1 a b 9 8

  8. Codarea Shannon-Fano 10 10 11 11 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 0 1 a b c d e f 9 8 6 5 4 2

  9. 0 0 1 c d 6 5 Codarea Shannon-Fano 10 10 11 11 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 1 a b e f 9 8 4 2

  10. Codarea Shannon-Fano 100 101 11 11 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 0 1 a b e f 0 1 9 8 4 2 c d 6 5

  11. 1 0 1 e f 4 2 Codarea Shannon-Fano 100 101 11 11 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 0 a b 0 1 9 8 c d 6 5

  12. Codarea Shannon-Fano 100 101 110 111 00 01 a b c d e f 9 8 6 5 4 2 0 1 0 1 0 1 a b 0 1 0 1 9 8 c d e f 6 5 4 2

  13. Codari Prefix Optimale • Codarioptimale • Simbolurile care aparmaifrecventvoraveacodurimaiscurte • Ultimele 2 celemaiputinfrecventesimbolurivoraveacoduri de lungimiegale • Demonstratie: • Vremsademonstramfaptul ca in acestcazcodulesteclar suboptimal • Presupunemopusul • Fie X, Y celemaiputinfrecventesimbolurisi • |cod(X)| = k, |cod(Y)| = k+1 Atunci • Datoritadecodificariiunice (UD), cod(X) nu poatefi prefix pt cod(Y) • Deasemeneatoatecelelaltecodurisuntmaiscurte Eliminandultim bit al lui|cod(Y)| ar genera un nou cod scurtunicdecodificabil, ceeacecontrazicepresupunereainitiala de optimalitate

  14. Codificare Huffman • Algoritmul Huffman ia ca intrare o lista de ponderi ne-negative {w(1), ... ,w(n) } si construieste un arbore binar complet ale carui frunze sunt numerotate cu ponderi • un arbore binar este complet daca fiecare nod are zero sau 2 ramificatii • Ponderile reprezinta probabilitatile asociate simbolurilor sursei • Initial arborele are numai doua noduri, cele corespunzatoare ponderilor celor mai mici • La fiecare pas in algoritm, cele mai mici ponderi definesc un nou nod cu ponderea w(i)+w(j) si a carui radacina (root) are doi sub-arbori, reprezentati de w(i) si w(j) • Ponderile w(i) si w(j) sunt indepartate din lista si locul lor este preluat de w(i)+w(j) • Procesul continua pana cand se obtine o lista cu o singura valoare.

  15. Codificare Huffman • Algoritmul Huffman (1952) constituie un algoritm optimal, în sensul că nici un alt algoritm nu asigură o mai mică lungime medie a cuvintelor • Sunt situaţii în care şi alţi algoritmi pot da o lungime medie egală cu cea dată de algoritmul Huffman, dar niciodată mai mică • Exemplu:

  16. Codificare Huffman • Initializare: Creeaza o multime din fiecarelitera

  17. Codificare Huffman Sorteazamultimiledupaprobabilitate

  18. Codificare Huffman Insereazaprefixul ‘1’ in codurileliterelor din prima multime

  19. Codificare Huffman Insereazaprefixul ‘0’ in codurileliterelor din a douamultime

  20. Codificare Huffman Unesteprimele 2 multimi

  21. Codificare Huffman Sorteazacrescatormultimiledupaprobabilitate

  22. Codificare Huffman Insereazaprefixul ‘1’ in codurileliterelor din prima multime

  23. Codificare Huffman Insereazaprefixul ‘0’ in codurileliterelor din a douamultime

  24. Codificare Huffman Unesteprimele 2 multimi

  25. Codificare Huffman Sorteazacrescatormultimiledupaprobabilitate

  26. Codificare Huffman Insereazaprefixul ‘1’ in codurileliterelor din prima multime

  27. Codificare Huffman Insereazaprefixul ‘0 in codurileliterelor din a douamultime

  28. Codificare Huffman Unesteprimele 2 multimi

  29. Codificare Huffman Sorteazacrescatormultimiledupaprobabilitate

  30. Codificare Huffman Insereazaprefixul ‘1’ in codurileliterelor din prima multime

  31. Codificare Huffman Insereazaprefixul ‘0’ in codurileliterelor din a douamultime

  32. Codificare Huffman Unesteprimele 2 multimi • Sfarsit

  33. Codificare Huffman • Statisticiexemplu: • Lungimemedie cod • l= 0.4x1 + 0.2x2 + 0.2x3 + 0.1x4 + 0.1x4 = 2.2 bits/symbol • Entropie • H = s=a..eP(s) log2P(s) = 2.122 bits/symbol • Redundanta • l - H = 0.078 bits/symbol • Peformantele sunt identice cu cele obtinute folosind codarea Shannon-Fano • Diferenta consta in faptul ca prin codarea Huffman se garanteaza obtinerea unui cod optimal

  34. Arbore Huffman 0 1 b 0 1 0.4 c 0 1 0.2 a 0 1 0.2 e d 0.1 0.1

  35. 0 1 0.2 Arbore Huffman b 0.4 c 0.2 a 0.2 e d 0.1 0.1

  36. 0 1 0.4 Arbore Huffman b 0.4 c 0.2 a 0 1 0.2 0.2 e d 0.1 0.1

  37. 0 1 0.6 Arbore Huffman b 0.4 c 0 1 0.4 0.2 a 0 1 0.2 0.2 e d 0.1 0.1

  38. 0 1 1.0 Arbore Huffman b 0 1 0.6 0.4 c 0 1 0.4 0.2 a 0 1 0.2 0.2 e d 0.1 0.1

  39. 0 1 0.2 Arbore Huffman alternativ (1) b 0.4 a c e d 0.2 0.2 0.1 0.1

  40. 0 1 0.4 Arbore Huffman alternativ (1) b 0.4 0 1 0.2 a c e d 0.2 0.2 0.1 0.1

  41. 0 1 0.6 Arbore Huffman alternativ (1) b 0.4 0 1 0 1 0.4 0.2 a c e d 0.2 0.2 0.1 0.1

  42. 0 1 Arbore Huffman alternativ (1) b 0 1 0.6 0.4 0 1 0 1 0.4 0.2 a c e d 0.2 0.2 0.1 0.1 • Lungimemedie cod • l= 0.4x1 + (0.2 + 0.2 + 0.1 + 0.1)x3= 2.2 bits/symbol

  43. Arbore Huffman alternativ (2) 1 0 0 1 0.4 0 1 0.6 a c b 0.2 0.2 0.4 0 1 0.2 e d • Lungimemedie cod • l= 0.4x2+ (0.2 + 0.2)x2 + (0.1 + 0.1)x3= 2.2 bits/symbol 0.1 0.1

  44. Arbori Huffman Minimali • Codurile Huffman nu suntunice • Toateversiunileproducacceasilungimemedie • Pe care sailfolosim? • Peacela cu varianta minima in lungimilecodurilor • Adicacel cu arborele cu ceamai mica inaltime • De ce? • Vaasiguracelmaimic grad de variabilitate in fluxulcodificat • Cum se poaterealiza? • In timpulsortarii, solutioneazaegalitatileprinplasareaseturilormicimaisus in arbore • Alternativ, plaseazaseturilenoi cat de josposibil

  45. Coduri Huffman Extinse • Se considerasursa: • A = {a, b, c}, P(a) = 0.8, P(b) = 0.02, P(c) = 0.18 • H = 0.816 bits/symbol • Codul Huffman: a 0 b 11 c 10 • l = 1.2 bits/symbol • Redundanta = 0.384 bits/symbol (47%!) • Se poatesimaibine?

  46. Coduri Huffman Extinse • Incercamcodificareasecventelor de 2 litere in loc de codificareaindividuala a literelor l = 1.7228/2 = 0.8614 Red. = 0.0045bits/symbol

  47. Coduri Huffman Extinse • Ideea se poateextindemaideparte • Se consideratoatesecventelenmposibile (am facut 32) • In teorie, considerandmaimultesecventeputemimbunataticompresia • In realitate, crestereaexponentiala a alfabetului face acestlucruimposibil • Ex., pentrulungime 3 avem 2563 = 224 = 16M secventeposibile • Majoritateasecventelorvoraveafrecventa zero

  48. Codificare Huffman Dinamica • Compresia dinamica (sau adaptiva) Huffman foloseste un arbore de codare ce este actualizat de fiecare data cand un simbol este citit din fisierul de intrare • Arborele creste (se dezvolta, evolueaza) la fiecare simbol citit din fisierul de intrare • Modul de evolutie al arborelui este identic la compresie si la decompresie • Eficienta metodei se bazeaza pe o proprietate a arborilor Huffman, cunoscuta sub numele de proprietatea „fiilor” („siblingproperty”)

  49. Codificare Huffman Dinamica • Proprietate (sibling): • Fie T un arbore huffman cu n frunze. Atunci nodurile lui T pot fi aranjate intr-o secventa (x0, x1, ..., x2n-2) astfel incat: • Secventa ponderilor (weight(x0), weight(x1), ..., weight(x2n-2)) sa fie in ordine descrescatoare • Pentru orice i (0 ≤ i ≤ n-1), nodurile consecutive x2i+1 si x2i+2 sunt siblings (fii ai aceluiasi parinte) • Compresia si decompresia utilizeaza arborele dinamic Huffman pornind de la un caracter virtual, notat – de exemplu – prin VIRT, sau NTI • Acesta este intotdeauna nod terminal (frunza)

  50. Codificare Huffman Dinamica • De fiecare data cind un simbol este citit din fisierul de intrare se efectueaza urmatoarele operatii: • Se scrie in fisierul destinatie codul simbolului: • Daca simbolul citit este nou, atunci se scrie codul caracterului virtual (NTI) (determinat din arborele de codare) urmat de codificarea in binar (ASCII) pe 9 biti a simbolului respectiv • In caz contrar, se scrie cuvantul de cod al simbolului, determinat din arborele de codare • Numai la primul simbol se scrie direct codul ASCII al acestuia pe 9 biti.

More Related