1 / 107

Transmisia datelor multimedia in retele de calculatoare Compresia fara pierdere de calitate I

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

haig
Download Presentation

Transmisia datelor multimedia in retele de calculatoare Compresia fara pierdere de calitate I

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 Transmisia datelor multimedia in retele de calculatoareCompresia farapierdere de calitateI Conf. Dr. Ing. Costin-Anton Boiangiu <Costin.Boiangiu@CS.PUB.RO>

  2. Codarea Shannon-Fano • Are avantajul simplitatii • Suboptimal • Se bazeaza pe teoria luiShannon • 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 • Codari optimale • Simbolurile care apar mai frecvent vor avea coduri mai scurte • Ultimele 2 cele mai putin frecvente simboluri vor avea coduri de lungimi egale • Demonstratie: • Vrem sa demonstram faptul ca codul este clar suboptimal • Presupunem opusul • Fie X, Y cele mai putin frecvente simboluri si • |cod(X)| = k, |cod(Y)| = k+1 Atunci • Datorita decodificarii unice(UD), cod(X) nu poate fi prefix pt cod(Y) • Deasemenea toate celelalte coduri sunt mai scurte  Eliminand ultim bit al lui|cod(Y)| ar genera un nou cod scurt unic decodificabil, ceea ce contrazice presupunerea initiala 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 • Statistici exemplu: • Lungime medie 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 sunt unice • Toate versiunile produc acceasi lungime medie • Pe care sa il folosim? • Pe acela cu varianta minima in lungimile codurilor • Adica cel cu arborele cu cea mai mica inaltime • De ce? • Va asigura cel mai mic grad de variabilitate in fluxul codificat • Cum se poate realiza? • In timpul sortarii, solutioneaza egalitatile prin plasarea seturilor mici mai sus in arbore • Alternativ, plaseaza seturile noi cat de jos posibil

  45. Coduri Huffman Extinse • Se considera sursa: • 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 poate si mai bine?

  46. Coduri Huffman Extinse • Incercam codificarea secventelor de 2 litere in loc de codificarea individuala a literelor l = 1.7228/2 = 0.8614 Red. = 0.0045bits/symbol

  47. Coduri Huffman Extinse • Ideea se poate extinde mai departe • Se consider toate secventele nm posibile (am facut 32) • In teorie, considerand mai multe secvente putem imbunatati compresia • In realitate, cresterea exponentiala a alfabetului face acest lucru imposibil • Ex: pentru lungime 3 avem 2563 = 224 = 16M secvente posibile • Majoritatea secventelor vor avea frecventa 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