Sunteți pe pagina 1din 23

Lucrarea 4

Codarea sursei

4.1 Obiectivul lucr rii


Stocarea s, i transmisia digital  a datelor necesit  conversia
informat, iei transmise de surs  în bit, i. Cres, terea ecient, ei transmisiu-
nii impune codarea sursei primare, operat, ie ce conduce la maximizarea
transinformat, iei. Lucrarea are ca scop introducerea not, iunilor legate
de codarea surselor discrete, a algoritmilor folosit, i uzual pentru imple-
mentarea cod rii. În nalul lucr rii este prezentat standardul JPEG
pentru compresia cu pierderi a imaginilor.

4.2 Aspecte teoretice


Scopul principal al cod rii de surs  este s  permit  trecerea de
la alfabetul sursei la alfabetul canalului. Cazurile în care efectul
perturbat, iilor asupra transmisiei datelor este nesemnicativ (transmi-
sii la distant, e mici, putere de emisie mare, etc) impun codarea surselor
discrete de informat, ie astfel încât s  fac  posibil  transmisia pe canal
într-un timp cât mai scurt.

În plus, datele furnizate de o surs  discret  sunt adesea re-


dundante. Conectarea direct  a unei asemenea surse la canalul de
comunicat, ie conduce la utilizarea neeconomic  a acestuia. Distribut, ia
de probabilitate a simbolurilor emise nu poate asigura entropia ma-
xim  a sursei s, i ca urmare, canalul nu poate  utilizat la capacitatea

61
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
62

Fig. 4.1: Adaptarea statistic  a sursei la canal.


sa, chiar dac  nu este afectat de perturbat, ii, ceea ce conduce la o
ecient, a redus  a transmisiunii în ansamblu.

Pentru a asigura prin canal transinformat, ia la valoarea sa ma-


xim , este necesar ca sursa primar  s  e transformat , prin operat, ia
de codare, într-o surs  secundar , specicat  de setul de probabilit t, i
care maximizeaz  transinformat, ia (entropia sursei secundare cât mai
apropiat  de cea maxim ). Se introduce astfel un codor ce va realiza
adaptarea statistic  a sursei la canalul de comunicat, ie. Acesta im-
plementeaz  o codare compact , care genereaz  cuvinte de cod într-o
reprezentare cu un numar de bit, i cât mai mic, optim  în raport cu un
criteriu de compactare adecvat. Acest criteriu va lua în considerare
maximizarea entropiei s, i posibilitatea realiz rii unei decod ri sigure s, i
facile la recept, ie.

Fie sursa primar  descris  de alfabetul [S] ce cont, ine N simboluri


a c ror distribut, ie de probabilitati este [PS ]:
[S] = [s1 , s2 , .....sN ]

[PS ] = [p(s1 ), p(s2 ), .....p(sN )]

Sursa secundar  este descris  de alfabetul [X] ce include D sim-


boluri s, i distribut, ia de probabilit t, i [PX ] :

[X] = [x1 , x2 , .....xD ]

[PX ] = [p(x1 ), p(x2 ), .....p(xD )]

Se aloc  ec rui simbolsi din alfabetul sursei primare, prin codare


compact , un cuvânt de cod ci , de lungime li , format din literele xk ,
k = 1, ...D. Codul astel obtinut este: [C] = [c1 , c2 , .....cN ].
si ∈ S =⇒ ci ∈ C

Prin codare se urm res, te ecient, a transmisiei informat, iei. În cazul


canalelor f r  zgomot m rirea ecient, ei presupune minimizarea unei

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
63

anumite funct, ii de cost, cea mai simpl  funct, ie ind cea care asociaz 
costului ti durata cuvântului. Considerând faptul ca pret, ul exploat rii
unui sistem de transmisiune poate  estimat ca ind aproximativ liniar
cresc tor cu timpul, costul mediu pe mesaj devine:

N
X n
X
C= ti · p(ci ) = ti · p(si )
i=1 i=1

Dac  toate literele xi din alfabetul [X] al codului au aceeasi durata ,

τ care se poate considera egal  cu unitatea (τ = 1) atunci:

ti = li · τ

adic  durata unui cuvânt este egal  cu num rul de litere care for-
meaz  acel cuvant ci , costul mediu ind astfel asociat cu lungimea
medie l a unui cuvant de cod.

n
X
C= li · p(si ) = l (4.1)
i=1

Cres, terea ecient, ei se poate obt, ine printr-o atribuire convenabil 


a cuvintelor de cod ec rui mesaj al sursei primare, luându-se în con-
siderare distribut, ia de probabilit t, i a sursei.

Exemplu 4.1. Cursa de cai - Lucrarea 2, cu 8 participant, i este des-


1 1 1 1 1 1 1 1
cris  de probabilit t, ile de câstig ale c rui cal [ ].
2 4 8 16 64 64 64 64
Presupunând c  dorim s  trimitem un mesaj care s  transmit  care
este calul ce a cas, tigat cursa, o alternativ  ar  s  transmitem indexul
acestuia, descrierea necesitând 3 bit, i pentru oricare cal.

Probabilit t, ile de câs, tig nu sunt îns  uniforme, de aici posibilitatea


de a realiza mesaje mai scurte pentru caii cu probabilitate mare de
câs, tig s, i mesaje mai lungi pentru cei cu s, anse mici, as, a încât s  obt, inem
o lungime medie a mesajului mai mic  decât 3.

Fie urm torul set de bit, i pentru reprezentarea celor 8 cai:


[0, 10, 110, 1110, 111100, 111101, 111110, 1111111] pentru care lungi-
mea medie a mesajului este de 2 biti. Observati c , pentru acest
, ,

caz, lungimea medie este egal  cu entropia, fapt ce va  demonstrat


în continuare.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
64

Limita inferioar  a lungimii medii a unui cuvânt de cod


Fie o surs  S, caracterizat  de alfabetul [S] = [s1 , s2 .....sN ] cu
distribut, ia de probabilit t, i [PS ] = [p(s1 ), p(s2 ), .....p(sN )] si un cod
,

[C] = [c1 , c2 .....cN ], ale c rui cuvinte apar cu aceleasi probabilit ti , ,

ca mesajele sursei p(ci ) = p(si ). Lungimile cuvintelor de cod sunt:


[L] = [l1 , l2 .....lN ] unde li este num rul de litere din alfabetul codului
[X] = [x1 , x2 .....xD ] care compun cuvântul ci .
Entropia sursei este:

N
X
H(S) = H(C) = − p(si ) log p(si ) (4.2)
i=1

unde H(C) este entropia cuvintelor codului. Entropia alfabetului co-


dului este:
D
X
H(X) = − p(xi ) log p(xi ) (4.3)
i=1

Informat, ia medie pe un cuvânt de cod este dat  de produsul dintre


num rul mediu de litere l s, i informat, ia medie pe litera H(X):
H(S) = l · H(X)

Valoarea maxim  a entropiei H(X) se obt, ine atunci când


p(xi )
probabilit t, ile ale literelor codului sunt egale, respectiv
Hmax (X) = log D.
Relat, ia (4.2) devine:

H(S) = l · H(X) ≤ l · log D

Altfel spus:
H(S)
l≥ = lmin (4.4)
log D
relat, ie care arat  c  lungimea medie a unui cuvânt de cod are o margine
inferioar  egal  cu entropia sursei împartit  la valoarea maxim  a
entropiei alfabetului codului sau c :

H(S)
≤ log D (4.5)
l
informat, ia medie pe o liter  din alfabetul codului nu poate  mai mare
decat valoarea maxim  a entropiei alfabetului codului.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
65

Exemplu 4.2. Problema transmiterii calului câs, tig tor enunt, at  an-
terior devine:

[S] = [1 , 2, 3, 4, 5, 6, 7, 8]
1 1 1 1 1 1 1 1
[PS ] = [ ]
2 4 8 16 64 64 64 64
[C] = [0, 10, 110, 1110, 111100, 111101, 111110, 1111111]
1 1 1 1 1 1 1 1
[PC ] = [ ]; p(ci ) = p(si )
2 4 8 16 64 64 64 64
[L] = [1, 2, 3, 4, 6, 6, 6, 6] l0 = 1; l10 = 2; · · · l111111 = 6

[X] = [0, 1]; D = 2


1 1 1 1
H(S) = H(C) = −( log + ...... + 4 · log ) = 2 [bit/simbol]
2 2 64 64
H(X) = 1 [bit/simbol]
8
X 1 1 1 1 1
l= ·1+ ·2+ ·3+
p(si ) · li = ·4+4· ·6=2
i=1
2 4 8 16 64
P P
si p(si ) · n0,i p(si ) · n1,i
[PX ] = [p(0), p(1)]; p(0) = ; p(1) = si
l l
0 0 0 0
num rul de bit, i 0 respectiv 1 din cuvântul ci corespunz tor simbo-
lului si ind reprezentat de n0,i si n1,i .

În consecint,   daca H(S) = l · H(X) atribuirea cuvintelor de cod


mesajelor emise de surs  este optim . Dac  ar  fost folosit, i 3 bit, i
pentru transmiterea indexului ec rui cal, costul mediu nu ar  avut
valoarea minim  rezultând o transmisie mai put, in ecient .

Capacitatea, ecienta si redundanta codului


, , ,

ˆ Capacitatea codului. Capacitatea unui canal f r  perturbat, ii


este atins  c nd sursa secundar  este o surs  de entropie maxim :

C = sup[H(X) − H(X/Y )] = max H(X) = log D


p(x)

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
66

unde D reprezinta alfabetul de intrare al canalului s, i, în acelas, i


timp, alfabetul codului. Deoarce H(X/Y ) = 0 se deneste capa- ,

citatea codului ca valoarea maxim  a entropiei sursei secundare:

CC = max H(X) = log D (4.6)


p(x)

ˆ Ecient, a codului este raportul dintre entropia sursei secundare


H(X) s, i valoarea sa maxim  Hmax (X) sau raportul dintre lun-
gimea medie minim  lmin s, i lungimea medie l a cuvintelor de
cod:
H(S) H(X) H(X) lmin
ηC = = = = (4.7)
l · log D Hmax (X) log D l

ˆ Redundant, a codului este m rimea complementar  ecient, ei:

log D − H(X)
ρC = 1 − ηC = (4.8)
log D

Codurile pentru care l = lmin ; η = 1; ρ = 0 sunt coduri abso-


lut optimale. Dac  pentru un cod oarecare este îndeplinit  aceasta
relat, ie nu rezult  ca el este absolut optimal, îns , cu alfabetul s, i cu
lungimile date se poate forma un cod absolut optimal.

Codurile pentru care l > lmin ; η < 1; ρ > 0 sunt coduri optimale.
Considerând surse discrete cu debit controlabil s, i f r  memorie,
pentru codare compact  se folosesc algoritmii Shannon-Fano [26] [6] si
Human [10].

Inegalitatea McMillan
Condit, ia necesar  de existent,   a unui cod f r  prex , de alfabet
de dimensiune D, cu lungimea cuvintelor de cod li , i = 1, N este dat 
de inegalitatea Kraft McMillan:

N
X
D−li ≤ 1 (4.9)
i=1

Pentru codurile absolut optimale inegalitatea devine egalitate.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
67

Codarea pe grupe de simboluri


Conform teoremei I a lui Shannon codarea extensiilor unei surse
discrete de informat, ie conduce la obt, inerea unor lungimi medii ale
cuvintelor de cod cu atât mai mici cu cât ordinul extensiei este mai
mare. Aplicat, iile practice nu permit îns  codarea extensiei de ordinul
m a sursei cand m → ∞ din motive ce tin de complexitatea codorului
,

asa încât, în general se realizeaz  cod ri pe mesajele individuale ale


sursei - simbol cu simbol folosindu-se algoritmi ce conduc la coduri
instantanee de ecient, a cât mai mare.

4.3 Codarea Shannon Fano


Se consider  c  simbolurile sursei sunt codate în mod individual
unul câte unul. Pentru codare cu D simboluri se parcurg urm torii
pas, i:

1. Simbolurile sursei se aranjeaz  în ordinea descresc toare a


probabilit t, ilor;

2. Se fac partit, ii succesive ale simbolurilor sursei în D submult, imi


de probabilit t, i (sume ale probabilit t, ilor simbolurilor grupate
în submult, ime) cât mai apropiate; se atribuie ec rei submult, imi
câte una din literele codului;

3. Partit, iile se termin  când ecare din submult, imi cont, ine câte un
singur simbol al sursei;

4. Cuvântul de cod se obt, ine ca sir al literelor atribuite în partit, iile


succesive.

Exemplu 4.3. Fie sursa descris  în Exemplul 4.1:

[S] = [1 , 2, 3, 4, 5, 6, 7, 8], [PS ] = [ 21 1 1 1 1 1 1 1


4 8 16 64 64 64 64
].
S  se codeze aceast  surs  folosind un alfabet cu D=2 simboluri.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
68

si p(si ) Diviziuni ci li
s1 1/2 0 0 1
s2 1/4 0 10 2
s3 1/8 0 110 3
s4 1/16 0 1110 4
s5 1/64 1 0 111100 6
1 0
s6 1/64 1 1 111101 6
1
s7 1/64 0 111110 6
1
s8 1/64 1 111111 6

Tabel 4.1: Codare Shannon Fano.

Vericând valorile calculate în Exemplul 4.2, sursa a fost codat 


absolut optimal:

l = 2 = lmin = H(S)

η = 1;

ρ = 0.

4.4 Codarea Human


Dac  sursa se codeaza simbol cu simbol problema care apare este
identicarea unei metode de codare care s  genereze un cod optimal
pentru orice distribut, ie de probabilit t, i a sursei primare, altfel spus
s  nu existe o alta procedur  de codare care s  conduc  la o ecient,  
mai mare. În acest caz cuvintele de cod obt, inute vor avea cea mai
mic  lungime medie în raport cu lungimile medii ce se pot obt, ine prin
1
alte metode. David A. Human a identicat o metod  de codare

În 1951, David A. Human si colegii s i de la cursul de Teoria Informatiei de


1
, ,

la MIT au avut optiunea de a alege, pentru evaluare, între un proiect de semestru


,

si un examen nal. Subiectul proiectului, ales de profesorul Robert M. Fano a fost


,

identicarea celui mai ecient cod binar. Dup  câteva luni, Human a esuat în ,

încercarea de a demonstra ecienta maxim  a codurilor dezvoltate si se preg tea


, ,

pentru examenul nal când s-a gândit la ordonarea dup  frecvent  simbolurilor a ,

arborelui binar, demonstrând rapid c  acest  metod  este cea mai ecient . [11].
Astfel Human si-a întrecut profesorul care lucrase al turi de Claude Shannon la
,

dezvoltarea unui cod similar. Construind arborele de jos în sus, Human a evitat
dezavantajul major al cod rii suboptimale Shannon Fano.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
69

1
0 1

1/2 1/2
0 1

1/4 1/4
0 1

1/8 1/8
0 1

1/16 1/16
0 1

1/32 1/32
0 1 0 1

1/64 1/64 1/64 1/64

0 10 110 1110 111100 111101 111110 111111

Fig. 4.2: Arborele de codare pentru sursa din Tabelul 4.1.


optimal .

Înainte de expunerea metodei dou  propriet t, i generale ale codu-


rilor optimale trebuie ment, ionate:

1. Cel mai scurt cuvânt de cod s  e atribuit simbolului cu proba-


bilitatea cea mai mare. În acest scop se ordoneaz  simbolurile
2
în ordinea descrescatoare a probabilit t, ilor.

2. Ultimele dou  cuvinte de cod au aceeas, i lungime.

Codarea Human cu D simboluri presupune parcurgerea urm to-


rilor pas, i:

1. Cele N simboluri ale sursei se aranjeaz  în ordinea descresc toare


a probabilit t, ilor;

2. Se formeaz  mult, imi de mesaje care s  poat   divizate în dou 


submult, imi de probabilit t, i cât mai apropiate. Se noteaz  sursa
primar  rezultat  cu R0 ;
2
Ordonarea asigur  existenta unei lungimi medii minime!
,

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
70

3. Se grupeaz  ultimele D simboluri de cele mai mici probabilit t, i,


într-un simbol articial r1 cu probabilitatea p(r1 ) egal  cu suma
probabilit t, ilor simbolurilor grupate; se obt, ine sursa restrâns 
de ordin 1, R1 .

4. Se atribuie câte una din literele alfabetului codului celor D sim-


boluri grupate;

5. Se repet  pas, ii precedent, i pân  când se ajunge la o sursa res-


trâns  RN −D care furnizeaz  doar D simboluri;

6. Cuvântul de cod complet, corespunz tor unui simbol al sursei


primare, este constituit din secvent, a literelor codului obt, inut 
prin parcurgerea surselor restrânse în sensul opus restrângerii,
pân  la g sirea simbolului original; aceasta echivaleaz  cu par-
curgerea unui arbore de la un nod nal la r d cin .

Exemplu 4.4. Fie o surs  S ce emite patru simboluri cu


probabilit t, ile [1/2, 1/4, 1/8, 1/8]. Identicat, i un cod Human pentru
sursa dat .

si p(si ) PR 1 PR 2 Code
0
1/2 ·1
0 1
s1 1/2 1/2 1/2 1
s2 1/4 1/4 1 00
0
s3 1/8 1/4 010
s4 1/8 1 011

Fig. 4.3: Codarea Human a sursei S folosind un alfabet binar.


Observatie. Un cod optimal de alfabet D trebuie s  îndeplineasc 
relat, ia:
N −D
∈N
D−1
undeN este num rul de simboluri al sursei primare. Codarea ternar ,
D = 3, a unei surse ce emite N =6 simboluri presupune ad ugarea
celui de-al 7-lea simbol, de probabilitate p(s7 ) = 0 pentru realizarea
cod rii.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
71

4.5 Desf s, urarea lucr rii

În Matlab dict, ionarul codului Human asociaz  ecare simbol


al sursei cu un cuvânt de cod. Are proprietatea c  nici un cuvânt
de cod din dict, ionar nu este prexul altui cuvant de cod. Funct, iile
huffmandict, huffmanenco, huffmandeco realizeaz  codarea s, i
decodarea. Crearea unui dictionar Human foloses, te sintaxa:

dict=huffmandict(simbols,p)

Argumentul simbols este un vector ce cont, ine simbolurile emise


de surs  iar argumentul p este un vector ce descrie distribut, ia de
probabilit t, i a simbolurilor sursei.
0 0 0 0
Consider m o surs  de date ce emite 1 cu probabilitatea 0.1, 2 cu
0 0
probabilitatea 0.1 s, i 3 cu probabilitatea 0.8. Etapa de calcul cea mai
important  în codarea datelor emise de surs  folosind un cod Human
este de a crea un dict, ionar ce asociaz  ec rui simbol un cuvânt de
cod. Sintaxa as, at  creeaz  un astfel de dict, ionar s, i apoi întoarce
vectorul cuvintelor de cod asociat unei valori particulare din datele
sursei.

clear all
symbols=[1 2 3]; % simbolurile emise de sursa;
p=[0.1 0.1 0.8]; % probabilitatile fiecarui simbol;
[dict,avglen]=huffmandict(symbols,p) % creeaza dictionarul
display ('primul simbol')
cuvcod=dict{1,2} % afiseaza prima linie a dictionarului.
display ('al-2lea simbol')
cuvcod=dict{2,2} % afiseaza a doua linie a dictionarului.
display ('al-3lea simbol')
cuvcod=dict{3,2} % afiseaza a treia linie a dictionarului.

Rezultatul de mai jos arat  c  cel mai probabil simbol al datelor,


0 0
3, este asociat unui cuvânt de cod de un digit în timp ce simbolurile
cu probabilitatea cea mai mic  de aparit, ie sunt asociate unor cuvinte
de cod de 2 digit, i.

dict =
[1] [1x2 double]
[2] [1x2 double]
[3] [ 0]
avglen =
1.2000
primul simbol

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
72

cuvcod =
1 1
al-2lea simbol
cuvcod =
1 0
al-3lea simbol
cuvcod =0

Aplicatie 4.1.
, Fie o surs  ce emite 5 simboluri cu urmatoarele pro-
babilitati: [PS ] = [0.4, 0.2, 0.2, 0.1, 0.1]. Scrieti în Matlab secventa , ,

de cod ce realizeaz  codarea Human a sursei date cu un alfabet de


lungime D=2 s, i calculat, i ecient, a codului obt, inut.

Aplicatie , 4.2. Construit, i codul Human binar pen-


tru sursaS ce emite simboluri cu probabilit tile ,

[PS ] = [0.4, 0.1, 0.06, 0.3, 0.1, 0.04]. Care este num rul me-
diu de digit, i transmis per cuvand de cod? Codul obt, inut este absolut
optimal? Motivat, i r spunsul.

Aplicatie 4.3.
, Se consider  o surs  ce emite 6 simboluri cu
probabilit t, ile [0.05, 0.1, 0.3, 0.25, 0.1, 0.2]. S  se determine un
cod compact folosind procedeul de codare Human dac  alfabetul co-
dului este X = [0 1] si dac  alfabetul codului este X = [0 1 2].
, Pentru
cele dou  coduri s  se calculeze lungimea medie a unui cuvânt de cod
s, i ecient, a codului.

Aplicatie 4.4.
, Fie o surs  S ce emite mesajele [S] = [1, 2, 3, 4, 5]. Se
consider  dou  distribut, ii PS s, i QS ale variabilei aleatoare ce descrie
sursa prezentat  în tabel. Ultimele dou  coloane ale tabelului cont, in
coduri binare asociate sursei date.

Simbol [PS ] [QS ] C1 C2


1 1/2 1/2 0 1
2 1/4 1/8 10 100
3 1/8 1/8 110 101
4 1/16 1/8 1110 110
5 1/16 1/8 1111 111

Scriet, i în Matlab secvent, a de cod necesar  as, a încât s :

a) Calculat, i H(PS ) s, i H(QS );

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
73

b) Vericat, i c  lungimea minim  medie a codului C1 sub distributia ,

PS este egal  cu entropia H(PS ). Este C1 absolut optimal pentru


PS ? Este C2 un cod absolut optimal pentru QS ?

c) Se presupune c  se utilizeaz  codul C2 cand distribut, ia este PS .


Care este lungimea medie a cuvântului de cod? Cu cât este mai
mare aceast  fat,   de entropia H(PS )?

d) Care este pierderea dac  este folosit codul C1 când distribut, ia


este QS ?

Concluzii asupra algoritmilor de codare optimal 

1. Codurile rezultate prin aplicarea algoritmilor de codare optimal 


0 0 0 0
nu sunt unice, inversarea lui 0 cu 1 s, i reciproc (pentru codurile
binare) conduce la coduri suplimentare. În plus, cazul unor me-
saje cu probabilit t, i egale determin  alegerea cuvintelor de cod
corespunzatoare în mod arbitrar. Ca atare, des, i codul nu este
unic, toate codurile realizate cu acelas, i algoritm asigur  aceeas, i
lungime medie, respectiv aceeasi ecient, a!

2. Lungimea ultimelor D cuvinte de cod este aceeas, i.

3. Atât codarea Shannon Fano cât s, i Human genereaz  coduri


instantanee, adic  nici un cuvant de cod nu este prexul altui
cuvânt de cod.

4. Codarea Human, simbol cu simbol, duce la sc derea ecient, ei


codului în cazul particular în care probabilitatea cea mai mare
este apropiat  ca valoare de 1. Dezavantajul poate  îndep r-
tat prin codarea Human a s, irurilor de simboluri, informat, ia
ind organizat  în blocuri de lungime x , care apoi sunt codate
Human.

5. Codarea Human este folosit  uzual ca ultim  etap  în câteva


scheme de compresie.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
74

4.6 Codarea Lempel-Ziv-Welch


Codarea LZW a fost prima dat  creat  de Lempel s, i Ziv în 1978
s, i ranat  de Welch în 1984. Este o metod  de compresie care exploa-
teaz  faptul c  într-o secvent,   de date (ex. de tip text sau imagine)
exist  multe sub-secvent, e care se repet .

Fig. 4.4: Date de tip imagine cu secvente repetitive. ,

In textul 'Aceasta este o imagine alb-negru in perspectiva ', grupu-


rile de litere ne si pe apar de 2 ori, iar în imaginea din Fig. 4.4 exist 
o redundant,   evident .

Principalele etape ale algoritmului sunt:

1. Init, ializarea modelului;

2. Parcurgerea secvent, ei de date element cu element;

3. Actualizarea modelului s, i codarea datelor.

Spre deosebire de codarea Human, LZW este o metod  bazat 


pe dict, ionare. Astfel, LZW nu construies, te arbori de codare, codarea
unei sub-secvente presupune atribuirea unui cuvânt de cod (un num r
sau index) ce se reg ses, te într-un tabel, ca în exemplul 4.5:

Exemplu 4.5. Procedeul de codare LZW al secvent, ei ABABABA


este prezentat în Tabelul 4.2.

Aplicatie 4.5.
, Codarea unei imagini. Consider m o imagine de di-
mensiune N M pixeli (cu o singur  band ). Fiecare pixel este repre-
zentat pe 8 biti, deci poate lua valori în intervalul [0, 255]. Pentru
,

simplitate vom alege o imagine binar .

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
75

Dict, ionar
0 A
1 B
ABABABA
0
Dict, ionar
0 A
1 B
2 AB
ABABABA
0 1
Dict, ionar
0 A
1 B
2 AB
3 BA
4 ABA
ABABABA
0 1 2 4

Tabel 4.2: Codarea LZW a unei secvente de text. ,

clear all
clc
% citirea imaginii
IMG = imread('imagine_binara.png');
% vectorizarea imaginii
sursa = IMG(:);
% sursa care trebuie codata devine
%reprezentata de un sir binar
len = length(sursa);
% transformarea vectorul sursa intr-un string
if ~isstr(sursa)
str_sursa=[];
for i=1: len
str_sursa = [str_sursa , num2str(sursa(i))];
end
else
str_sursa = sursa;
end
% definirea setului intitial de cuvinte de cod
setCod = {'0', '1', '2', '3'};

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
76

% definirea dictionarului initial


dictionar = {'0', '1', '01', '10'};
% initalizare sub-secventa
w=[];
% initializare sursa codata
sursa_codata = [];
% parcurgerea sirului sursei element cu element
for j = 1 : len
tmp = str_sursa(j);
% actualizare sub-secventa
subseq = [w, tmp];
% testare existentei sub secventei in dictionarul initial
if isempty(strmatch(subseq, dictionar, 'exact')); % daca
%nu se regaseste in dictionar se actualizeaza dictionarul
setCod{1,length(setCod)+1}=num2str(length(setCod));
cod = setCod (strmatch(w,dictionar,'exact'));
dictionar {length(dictionar)+1}=subseq; % adaugarea
%secventei noi in dictionar
w = tmp;
else % daca se regaseste in dictionar
cod = [];
w=subseq;
end
% codarea sursei
sursa_codata = [sursa_codata, cod];
end

cod = setCod(strmatch(w,dictionar,'exact'));
sursa_codata = [sursa_codata, cod];

As, ati primele 10 elemente din vectorul surs , primele 10 elemente


din vectorul cuvintelor de cod si primele 10 elemente din dictionar.
, ,

SU RSA :1111111111

SU RSAcodata :1 4 5 6

4.7 Algoritmul de compresie a imaginilor


JPEG
Standardul internat, ional JPEG (Joint Photographic Experts
Group) reprezint  una dintre cele mai uzuale metode de compresie (cu

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
77

Cuvinte de cod Dict, ionar


0 0
1 1
2 01
3 10
4 11
5 111
6 1111
7 11111
8 111111
9 1111111

Tabel 4.3: Primele 10 elemente din vectorul cuvintelor de cod


si din dictionar.
, ,

pierderi) a imaginilor, utilizat  în special pentru imaginile cu cont, inut


fotograc. A fost dezvoltat  la nalul anilor '80 s, i a devenit standard
ISO in 1992. Cele mai importante caracteristici sunt:

ˆ format independent de rezolut, ie, raport de aspect sau cont, inut;

ˆ calitate congurabil  (se pot obt, ine s, iere de dimensiuni mici
dac  se scade foarte mult calitatea);

ˆ rata foarte mare de compresie pentru imaginile cu redundant, a


mare (num r mic de culori, put, ine detalii);

ˆ introduce artefacte în imaginile de complexitate mare s, i în cele


monocromatice;

ˆ la rate mari de compresie nu este garantat  reproducerea exact 


a culorilor.

Etapele cod rii sunt urm toarele:

1. Separarea imaginii în componente;

2. Aplicarea transform rii Cosinus Discret (permite caracterizarea


componentelor individuale din punct de vedere al cont, inutului);

3. Cuantizare (ponderare pentru evident, ierea contribut, iei la


cont, inutul imaginii);

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
78

4. Codare pentru eliminarea redundant, ei (Human);

Separarea imaginii în componente


În mod obis, nuit imaginile color sunt separate într-o component 
de luminant,   s, i dou  componente de crominant,  . Spre deosebire de
alte formate, JPEG nu stocheaza imaginile ca RGB ci ca YUV (o
component  de luminant,   s, i dou  de crominant,  ), iar datele sunt sub-
es, antionate înainte de compresia JPEG propriu-zis . Raportul de sub-
es, antionare este 4 : 2 : 2 sau 4 : 1 : 1, deoarece componenta de
luminant,   (luminozitatea) are o important, a mai mare în percept, ie.

Transformarea Cosinus Discret DCT


Transformarea DCT se aplic  pe blocuri de date secvent, iale de
dimensiune 8×8 pixeli. Astfel, prima etap  înainte de DCT este
împ rtirea datelor în blocuri. Deoarece datele de intrare sunt f r 
semn iar interfet, ele video standard folosesc reprezentari binare, datele
B−1
de intrare sunt shiftate cu 2 , unde B este num rul de bit, i pe care
sunt reprezentate datele de intrare .

Transformarea DCT are rolul de a asigura faptul c :

ˆ informat, ia din imagine este tratat  diferit în funct, ie de nivelul


de complexitate (valori mici pentru structuri simple, valori mari
pentru structuri complexe),

ˆ valorile rezultate în urma transform rii reect  geometria


cont, inutului imaginii,

ˆ se elimin  redundant, a (zonele monocromatice sunt descrise de o


singura valoare, restul devenind 0).

Fiecare bloc de 8×8 pixeli este transformat dup  regula:

7
1 X (2x + 1) · u · π (2y + 1) · v · π
SV U = CU CV Sxy · cos cos
4 x,y=0
16 16

unde

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
79

(
√1 , u = 0, v = 0
CU s, i CV 2
1, u 6= 0, v 6= 0

Cuantizare (ponderare pentru evidentierea contributiei la , ,

continutul imaginii)
,

Fiecare bloc de 8 × 8 coecienti DCT , este cuantizat uniform dup 


modelul percept, iei umane. Procedeul de cuantizare nu este reversibil
s, i afecteaz  calitatea imaginii. Regula de cuantizare este dat  de:


Y (x, y)
Yq (x, y) = + 0.5 , x, y = 1, 8
Q(x, y)

unde Y (x, y) reprezint  coecientul DCT înaintea cuantizarii iar


Q(x, y) reprezint  pasul de cuantizare.

Cuantizarea foloses, te matrice de cuantizare utilizate pentru con-


trolul ratei de compresie (multiplicarea matricei de cuantizare cu scala
de cuantizare). Aceste tabele sunt stocate în s, ierul JPEG s, i sunt
esentiale pentru decodare.

Pas, ii standard de cuantizare pentru componenta de luminant, a


sunt dat, i în matricea din Tabelul 4.4.

16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
24 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99

Tabel 4.4: Matrice de cuantizare.


Deoarece DCT decoreleaz  s, i compacteaz  datele foarte mult, i
coecient, i (corespunz tori frecvent, elor înalte în special) devin 0. Pen-
tru a maximiza secvent, ele de lungime 0 se realizeaz  o scanare în
zig-zag a coecient, ilor DC s, i AC ca în gura de mai jos, urmat  de
codarea Human.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
80

0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63

Fig. 4.5 & Tabel 4.5: Procedura de scanare în zig-zag;


secventa de ordonare în zig-zag.
,

Codare Human pentru eliminarea redundantei ,

Redundant, a datelor rezultate din pas, ii anteriori poate  eliminat 


deoarece aceasta nu afecteaz  calitatea imaginii.

Aplicatie 4.6.
, Compresia JPEG a unei imagini.

clear all
close all
clc

% citire imagine

img = imread('parrots.tif');
[x,y,z] = size(img);

% m - matricea de cuantizare
% ordine - secv de ordonare
% qual - coef de calitate (uzual 1)

m =[16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
24 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99] ;

ordine = [0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
81

10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63] ;

qual = 1;

% N - dimensiunea matricei de transf


N = 8;
% limitarea dimensiunii imaginii pe x si y la multiplii de
N
if mod(x,N) ~= 0
x = floor(x/N)*N;
end
if mod(y,N) ~= 0
y = floor(y/N)*N;
end
if z == 3
img = rgb2gray(img(1:x,1:y,:));
end
[x,y] = size(img);

% shiftare nivel intensitate


img = double(img) - 128;

% prelucrare pe blocuri:
% TCD
Y = blockproc(img, [N,N], @(block_struct) dct2(block_struct
.data));

% cuantizarea
Y = blockproc(Y, [N,N], @(block_struct) floor(block_struct.
data./(qual*m)+0.5));

% transformarea blocurilor in coloane


Y = im2col(Y, [N,N], 'distinct');

% calculul numarului de blocuri


nblk = size(Y,2);

% ordonarea elementelor pe coloane


ordine = ordine+1;
Y = Y(ordine,:);

% definire simbol de marcaj pentru finalul unui bloc


eob = max(img(:))+1;

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
82

% procesarea pe rand a blocurilor


k = 0; % contor
for j = 1:nblk
% ultimul element diferit de zero
i = find(Y(:,j), 1, 'last' );
% daca nu exista elemente nenule
if isempty(i)
i = 0;
end
p = k+1;
q = p+i;
r(p:q) = [Y(1:i,j); eob];
k = k+i+1;
end

% codarea Huffman a vectorului rezultat:


% simbolurile unice
symbols = unique(r);
ls = length(symbols);

% calculul probabilitatilor de aparitie


prob = zeros(1,ls);

for k = 1:ls
prob(k) = length(find(r==symbols(k)))/length(r);
end

S = [symbols', prob'];
% ordonarea simbolurilor in ordinea descendenta a prob
S = sortrows(S,-2);

% crearea dictionarului
[dict,avlen] = huffmandict(S(:,1),S(:,2));

% codarea Huffman
cod = huffmanenco(r,dict);

% dimensiunea imaginii initiale

orig = whos('img');
orig = orig.bytes;
% dimensiunea imaginii codate
coded = whos('cod');
coded = coded.bytes;

% rata de compresie
rjpeg = orig/coded;

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
83

4.8 Exercit, ii propuse


1. Care tip de codare - simbol cu simbol, pe grupe de câte 2 sim-
boluri sau pe grupe de câte 3 simboluri, este mai ecient  si de
ce?

2. Identicat, i codul Human binar pentru sursa cu probabilit t, ile


[ 13 , 15 , 51 , 15
2 2
, 15 ]. Argumentat, i de ce codul obt, inut este de aseme-
1 1 1 1 1
nea optimal pentru sursa cu probabilit t, ile [ , , , , ].
5 5 5 5 5

3. Fie o surs  S ce emite patru simboluri cu probabilit t, ile


[ 31 , 31 , 29 , 19 ]. Identicat, i un cod Human pentru sursa dat 
s, i determinat, i în Matlab ecient, a acestuia.

4. Folosit, i alfabetul X = [0, 1, 2] pentru a coda ternar, cu ajuto-


rul algoritmilor Shannon Fano s, i Human, setul de probabilit t, i
[0.3, 0.2, 0.2, 0.1, 0.1, 0.1] ce descrie o sursa discret  f r  memorie.

D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016