Documente Academic
Documente Profesional
Documente Cultură
calculatoare
Introducere
Ce este compresia?
Definitia 1: Compresia este stiinta reprezentarii datelor intr-o forma
compacta
Definitia 2: Compresia este procesul de minimizare a spaţiului ocupat
sau a timpului necesar transmiterii unei anumite cantităţi de informaţie
Analogie fizica: impachetarea unei valize
2
De ce compresie?
In lumea fizica
Insuficienta spatiului
3
De ce compresie?
Alte exemple
HDTV:
Panala 2,985 Mbps (1920 x 1080 x 24 x 60)
Cablu HDMI 5-10 Gpbs
NHK’s 8K:
7680x 4320 x 24 x 30 = 23,880 Gpbs (!)
Compresie
Audio 28Mbps 7-28Mbps
Video 24Gbps 180-600 Mbps
4
De ce compresie?
Concluzie – fara compresie:
Multe aplicatii/servicii nu ar fi functionale
Ex., streaming video
Alte servicii ar fi mult mai scumpe
Ex. Telefonie analogica vs. digitala
De ce nu am tine datele compresate mereu?
Majoritatea formatelor de date sunt proiectate pentru
achizitie/consum nu si pentru stocare eficienta
5
Terminologie
original compresat decompresat
x Compresie y Decompresie x’
6
Terminologie
Factorul de compresie:|x|/|y|
|x| reprezinta lungimea in biti a mesajului initial, iar |y|
reprezinta lungimea in biti a mesajului codificat
Ex.: |x| = 65,536, |y| = 16384, compresie = 4:1
sau, marimea datelor a fost redusa la (|x|-|y|)/|y| = 75%
Alte marimi ale codificarii
Biti / esantion (bits per sample)
Ex. ASCII: 8 bits/char, RGB: 24/48/72 bits/pixel
Distorsiune (metode cu pierderi)
Raportul dintre diferenta dintre x si x’ perceputa de om si diferenta
matematica dintre x si x’
7
Compresia cu pierdere
Metodele de compresie cu pierdere de informaţie sunt
folosite în special în transmisia semnalului audio şi video,
unde pierderea de informaţie nu este critica
8
Compresia fara pierdere
Exemplu:
prescurtările din viaţa de zi cu zi (abrevieri: prof., etc.,
CEC, ş.a.) - o formă primitivă a compresiei de date
Compresia de date fără pierdere este prezentă în special
în:
programele de arhivare
sistemele de transmisiune a datelor
A evoluat de-a lungul timpului pornind de la algoritmi
simpli (suprimarea zerourilor, codarea pe şiruri) şi
ajungând la algoritmii complecşi folosiţi în prezent
9
Compresia fara pierdere
In general, cantitatea de informaţie prelucrată (transmisă,
depozitată) conţine o anumită redundanţă care se
datorează:
distribuţiei caracterelor (unele caractere au o frecvenţă de
apariţie mult mai mare decât altele)
repetării consecutive a unor caractere
distribuţiei grupurilor de caractere (unele grupuri sunt mult
mai frecvente decât altele şi în plus există grupuri care nu
apar deloc)
distribuţiei poziţiei (unele caractere sau grupuri ocupă poziţii
preferenţiale, predictibile în anumite blocuri de date)
10
Avantajele compresiei
Avantajele compresiei sunt:
reducerea spaţiului necesar depozitării unei cantităţi de
informaţie
scăderea timpului de transmitere a unor mesaje, ceea ce
duce la scăderea costului per mesaj şi posibiltatea creşterii
traficului într-o reţea de transmisiuni
această scădere a timpului este efectul direct al micşorării
cantităţii de informaţie, dar şi efectul indirect al micşorării
pierderilor de timp datorate protocoalelor de comunicaţie
scăderea timpului de rulare a unui program datorită
timpului de acces la disc
11
Clasificarea algoritmilor de compresie fără pierderi
algoritmi statici - se bazează pe o statistică bine cunoscută a sursei şi dau
rezultate bune în cazul în care sursele au o statistică asemănătoare cu cea
presupusă
in caz contrar, rezultatul poate fi o extensie în loc de o compresie
algoritmi semiadaptivi (sau în două treceri) - algoritmi care folosesc
statistica simbolurilor mesajului, statistică ce se obţine printr-o parcurgere
iniţială a întregului mesaj
aceşti algoritmi oferă rezultate pentru orice tip de sursă, dar nu pot fi folosiţi într-
o transmisiune
algoritmi adaptivi - sunt de obicei cei mai potriviti pentru orice tip de sursă
12
Modelare si codificare
Cerinţele reconstrucţiei sunt cele ce impun dacă compresia este cu sau fără
pierderi, schema exactă depinzând de un număr de factori; cei mai importanţi
sunt impuşi de caracteristicile datelor destinate compresiei
De exemplu, o tehnică de compresie poate fi eficientă pentru compresia unui text,
dar total ineficientă pentru imagini
Fiecare aplicaţie prezintă particularităţi specifice
Dezvoltarea algoritmilor de compresie pentru o varietate de date cuprinde două
faze:
prima fază se referă de obicei la modelare, când se încearcă extragerea informaţiei
despre orice redundanţă din date şi descrierea acesteia sub forma unui model
a doua fază este codarea
14
Modelare si Codificare. Exemplul 2
Se considera secventa:
Sn = 27, 28, 29, 30, 30, 32, 31, 31, 29, 28, 27
15
Codificare in lumea reala: Braille (1821)
16
Codificare in lumea reala: Morse (1844)
17
Codul Morse vs. Frecventa literelor
18
Reprezentarea datelor
Date analogice (continue)
Reprezentate de numere reale
Observatie: nu pot fi stocate in calculatoare
Date digitale (discrete)
Valori intr-un set finit {a1, a2, …, an},
Toate datele sunt reprezentate ca siruri de simboluri din acest set
Ex.: {a,b,c,d,r} => abc, car, bar, abracadabra, …
Folosim date digitale pentru a aproxima date analogice
19
Seturi de simboluri
Alfabetul roman si semnele de punctuatie
ASCII - 256 simboluri
Braille, Morse
Binar- {0,1}
0 si 1 se numesc biti
Toate datele digitale pot fi reprezentate eficient cu biti
Ex.: {a, b, c, d}, reprezentare binara cu lungime fixa (2
bits/simbol):
Simbol a b c d
Binar 00 01 10 11
20
Surse de informaţie si codificare
Sursele de informatie pot fi analogice sau discrete
Majoritatea surselor de informatie din domeniul
calculatorelor si al aplicatiilor internet sunt discrete
Pentru a descrie o sursă discretă fără memorie (SDFM) sunt
necesare două mărimi:
alfabetul sursei
probabilităţile de furnizare a fiecărui simbol:
s1 s 2 ... s N N
S : p(s k ) 1
p p ... p k 1
1 2 N
21
Surse de informaţie si codificare
Dacă numărul de simboluri este finit, sursa se numeşte discretă
Dacă la un moment dat se emite sigur un simbol atunci sursa este
completă
Sursa este fără memorie dacă evenimentele sk sunt independente,
adică furnizarea unui simbol la un moment dat nu depinde de
simbolurile furnizate anterior
Totalitatea simbolurilor unei surse formează alfabetul sursei
Orice succesiune finită de simboluri, în particular un singur simbol,
se numeşte cuvânt
Totalitatea cuvintelor formate cu un anumit alfabet se numeşte
limbaj
22
Teoria informatiei
Dezvoltata formal de Claude Shannon la Bell Labs in 1940-1950
Explica limitele de codificare/transmisie folosind teoria
probabilitatilor
Informatia furnizata de un simbol A al unei surse de informatii
este:
P(A) reprezinta probabilitaea de aparitie a simbolului A
1
i ( A) log b log b P A
P( A)
23
Surse de informaţie si codificare 6
Observatii 5
log 2 x
Idee:
2
Simbolurile cu probabilitate 0
mica (surpriza) contin mai 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
multa informatie
Daca A si B sunt 1 1
i ( AB ) log b logb
independente, atunci: P( AB ) P ( A) P( B)
i(AB) = i(A) + i(B) 1 1
logb logb i ( A) i ( B )
P ( A) P( B)
24
Exemplu: aruncarea monezii
Moneda ideala
Fie H si T rezultatele aruncarii
Daca P(H) = P(T) = 1/2, atunci
i(H) = i(T) = -1/log2(1/2) = 1 bit
Moneda masluita
Fie P(H) = 1/8, P(T) = 7/8
i(H) = 3 biti
i(T) = 0.193 biti
Obs. ca P(H) + P(T) = 1
25
Entropie
Entropia este informaţia medie pe simbol sau, altfel formulat, este
incertitudinea medie asupra simbolurilor sursei S, sau informatia medie
furnizata de un simbol
Unitatea de masura pentru entropie este biti/simbol
26
Exemplul 1
Se considera secventa:
1 2 3 2 3 4 5 4 5 6 7 8 9 8 9 10
P(1) = P(6) = P(7) = p(10) = 1/16
P(2) = P(3) = P(4) = P(5) = P(8) = P(9) = 2/16
Presupunand ca secventa este iid (Independent &
Identically Distributed):
1 1 2 2
H i 1 P(i ) log 2 P (i ) 4
10
log 2 6 log 2 3.25 bits
16 16 16 16
27
Exemplul 2
Consideram secventa
1 2 1 2 3 3 3 3 1 2 3 3 3 3 1 2 3 3 1 2
P(1) = P(2) = 1/4, P(3) = 1/2, H = 1.5 bits/simbol
Total biti: 20 x 1.5 = 30
Reconsideram secventa
(1 2) (1 2) (3 3) (3 3) (1 2) (3 3) (3 3) (1 2) (3 3) (1 2)
P(1 2) = 1/2, P(3 3) = 1/2
H = 1 bit/simbol x 10 simboluri = 10 biti
In teorie, se poate extrage o structura luand esantioane mai mari
In realitate, ne trebuie un model corect, pentru ca de obicei nu
este practic sa observam sursa prea mult timp
28
Modele
Un model bun pentru date conduce la algoritmi de compresie
eficienţi
Pentru a dezvolta algoritmi care efectuează operaţii matematice
asupra datelor, acestea trebuie modelate matematic
Modele fizice
Dacă se cunoaşte ceva despre mecanismul de generare a datelor, se
poate folosi această informaţie pentru construirea modelului
Exemplu: în aplicaţiile referitoare la vorbire, cunoaşterea
mecanismului de producere a vorbirii poate fi folosit la construirea
unui model matematic pentru procesul vorbirii eşantionate
29
Modele
Modele probabilistice
Cel mai simplu model statistic pentru sursă este de a
presupune că fiecare mesaj furnizat de sursă este independent
de celelalte şi fiecare se produce cu aceeaşi probabilitate
Acesta este numit model de ignoranţă si ar putea fi util când nu se
cunoaşte nimic despre sursă
Următorul pas în creşterea complexităţii modelului este de a
păstra presupunerea asupra independenţei, dar de a înlătura
presupunerea de probabilitate egală pentru mesaje
În acest caz se alocă fiecărui mesaj o probabilitate în funcţie de
frecvenţa de furnizare a mesajului respectiv
30
Modele
Modele probabilistice (cont)
Pentru o sursă care generează mesaje dintr-un alfabet
S = {s ,..., s }
1 M
Source 1
Source 2
…
Source n
32
Modele
Model Markov
Unul dintre cele mai răspândite moduri de reprezentare a
dependenţei între date este folosirea modelului Markov
Pentru modelarea datelor, în compresia fără pierderi se foloseşte
un model particular numit lanţ Markov discret
Fie {xn} secvenţa observată; aceasta secvenţă este un model
Markov de ordin k, dacă:
P xn xn 1 , , xn k P xn xn 1 , , xn k ,
33
Modele
Multimile {xi-1, …, xi-k}, i=n, n-1,…, reprezinta starile
procesului
Dacă mărimea alfabetului sursei este l, numărul de stări
este lk
Cel mai des folosit model Markov este cel de ordinul 1,
pentru care:
P xn xn 1 P xn xn 1 , , xn k ,
34
Modele
Folosirea modelului Markov nu necesită prezumţia de
liniaritate
Exemplu: fie o imagine binară, care are numai două feluri
de pixeli - albi şi negri
Se ştie că apariţia unui pixel alb la observarea următoare depinde
în oarecare măsură dacă pixelul curent este alb sau negru
Prin urmare, se poate modela succesiunea de pixeli cu un lanţ
Markov
35
Modele
Se defines doua stari: Sb & Sw P(b|b)
P(w|w) P(b|w)
pentru valoarea pixelului curent
Se defines probabilitatile: Sw Sb
P(Sb) = prob. ca pixelul sa fie P(w|b)
negru
P(Sw) = prob. ca pixelul sa fie
H S w Pb / wlogb / w Pw / wlogw / w
alb H Sb P w / b logb / w P b / b logb / b
Probabilitatile de tranzitie sunt: Pw / w 1 P b / w, Pb / b 1 P w / b
P(b|b), P(b|w)
H PS b H Sb P S w H S w
P(w|b), P(w|w)
36
Exemplu
Fie PS w 30 / 31 PSb 1 / 31
Pw / w 0.99 Pb / w 0.01 Pb / b 0.7 Pw / b 0.3
39
Coduri unic decodificabile
Exemple
Alfabet = {a1, a2, a3, a4}
H = 1.75 bits
40
Coduri unic decodificabile
Probabilitate Cod 1 Cod 2 Cod 3 Cod 4
a1 0.500 0 0 0 0
a2 0.250 0 1 10 01
a3 0.125 1 00 110 011
a4 0.125 10 11 111 0111
l 1.125 1.250 1.750 1.875
Cod 1
Coduri identice pentru a1 si a2==> decode(‘00’) = ???
Cod 2
Coduri unice dar ambigue: decode( ‘00’/’11’) = ???
Cod 3
Unic decodificabil, instantaneu
Code 4
Unic decodificabil, aproape instantaneu
41
Coduri unic decodificabile
Decodificare unica:
Pentru orice secventa de cuvinte cod exista o unica decodificare
pentru ea
Unica != instantanee
Ex.:
a1 0
a2 01
a3 11
decode(0111111111) = a1a3… or a2a3… ?
Nu se stie pana la sfarsitul secventei
0111111111 01111111a 011111a a 0111a a a
3 3 3 3 3 3
01a3a3a3a3 a2a3a3a3a3a3
42
Test de Decodificare Unica
Prefix si sufix
Fie a = a1…ak, b = b1…bn coduri binare si k < n
Daca a1…ak = b1…bk atunci a este prefix al lui b si
bk+1…bn este sufix (dangling suffix) al lui a: ds(a, b)
Algoritm
Fie C = {cn} setul tuturor cuvintelor cod
Pentru toate perechile (ci, cj) in C repeta:
Daca ds(ci, cj) C // sufixul NU este cuvant cod
C = C U ds(ci, cj)
Altfel // sufixul este cuvant cod
return NOT_UNIQUE
pana cand nu mai exista perechi unice
return UNIQUE
43
Coduri Prefix
Cod prefix:
Niciun cuvant cod nu este prefix al altuia
Arborii binari = decodificatori de prefix:
symbol code repeat
0 1 curr = root
a 00 c repeat
b 01 0 1 if get_bit(input) =
c 1 a b 1
curr = curr.right
else
curr = curr.left
until is_leaf(curr)
output curr.symbol
until eof(input)
44
Decodificarea coduril prefix. Exemplu
simbol cod 0 1
a 0
a 0 1
b 10
b 0 1
c 110
d 1110 c 0 1
r 1111 d r
abracadabra = 010111101100111001011110
45
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = 010111101100111001011110
Output = -----------
46
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = 010111101100111001011110
Output = a----------
47
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -10111101100111001011110
Output = a----------
48
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -10111101100111001011110
Output = a----------
49
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = --0111101100111001011110
Output = ab---------
50
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ---111101100111001011110
Output = ab---------
51
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ---111101100111001011110
Output = ab---------
52
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ----11101100111001011110
Output = ab---------
53
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -----1101100111001011110
Output = ab---------
54
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ------101100111001011110
Output = abr--------
55
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -------01100111001011110
Output = abr--------
56
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -------01100111001011110
Output = abra-------
57
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = --------1100111001011110
Output = abra-------
58
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = --------1100111001011110
Output = abra-------
59
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ---------100111001011110
Output = abra-------
60
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = ----------00111001011110
Output = abrac------
61
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -----------0111001011110
Output = abrac------
62
Exemplu decodificare
0 1
a 0 1
b 0 1
c 0 1
d r
Input = -----------0111001011110
Output = abraca-----
63
Exemplu decodificare
0 1
a 0 1
0 1 Si tot asa…
b
c 0 1
d r
Input = ------------111001011110
Output = abraca-----
64
Concluzii
In compresia datelor un rol important il are teoria codarii si teoria
informatiei
Compresia se refera la micsorarea redundantei mesajului de transmis
Compresia de poate face:
cu pierdere de informatie, asa cum este cazul surselor continue (analogice)
discretizate, reprezentate numeric in calculator
fara pierdere de informatie, asa cum este in cazul textelor
65