Sunteți pe pagina 1din 8

Tehnici de compresie a semnalelor

multimedia
Codarea Huffman

Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei


Universitatea Tehnică “Gheorghe Asachi”, Ias, i, România

2020

1/8
Not, iuni teoretice

Clasificarea algoritmilor de compresie fără pierderi


Algoritmi statici:
Cerint, ă init, ială: surse cu statistică cunoscută;
Cerint, ă pentru eficient, a transmisiei: surse cu statistică
similară celei init, iale.
Algoritmi adaptivi sau ı̂n două treceri:
Cerint, ă init, ială: parcurgerea ı̂ntregii secvent, e furnizate de sursă
pentru a determina statistica (frecvent, a) mesajelor;
Cerint, ă pentru eficient, a transmisiei: -;
Observat, ie: Nu pot fi folosit, i ı̂n transmisii ı̂n timp real (cerint, a
init, ială prespupune un timp suplimentar pentru alcătuirea
codului).
Algoritmi adaptivi:
Cerint, ă init, ială: -;
Cerint, ă pentru eficient, a transmisiei: -.
2/8
Not, iuni teoretice

Aprecierea compresiei
 
s1 s2 ... sN
S:
p(s1 ) p(s2 ) . . . p(sN )
l min,XFM H(S)/ log2 M H(S)
Eficient, a codării: η = l
= l
⇒ η= l·log2 M
PN
Entropia sursei: H(S) = − p(sk ) · log2 p(sk ) [bit, i/mes.]
k=1

Lungimea medie a cuvintelor de cod: l = Nk=1 p(sk ) · lk


P

[bit, i/mes.]
M = numărul de simboluri din alfabetul codului.
Pentru coduri binare: X = {0, 1} ⇒ M = 2 ⇒ η = H(S) l
.
Factorul de compresie: FC = llu , lu = dlogM Ne
dlog2 Ne
Pentru coduri binare: lu = dlog2 Ne ⇒ FC = l
.

3/8
Exemplu codare Huffman statică

Codarea Huffman de dispersie minimă


La ordonarea mesajelor sursei restrânse, mesajul compus se
plasează
 pe pozit, ia cea mai
 de sus posibil ı̂n sursa restrânsă.
s 1 s2 s3 s 4 s5
S=
0.1 0.4 0.2 0.1 0.2
R0 R1 R2 R3
r3
→ 0.6 → 0
r2
→ 0.4 | . . . 0.4 → 1

s2 → 0.4 . . . 0.4 | . . . 0.4 | → 00
r1
0.2 | . . . 0.2 → 01 s1 → c1,disp min → 010

s2 → c2,disp min → 00
s3 → 0.2 | . . . 0.2 | → 10
s3 → c3,disp min → 10
s5 → 0.2 | . . . 0.2 → 11
s4 → c4,disp min → 011
s1 → 0.1 | → 010
s5 → c5,disp min → 11
s4 → 0.1 → 011

4/8
Exemplu codare Huffman statică

Codarea Huffman de dispersie minimă


 
s1 s 2 s3 s4 s 5 0 1
S=
0.1 0.4 0.2 0.1 0.2
s1 → c1,disp min → 010
s2 → c2,disp min → 00
0 1 0 1
s3 → c3,disp min → 10
s4 → c4,disp min → 011
s5 → c5,disp min → 11 c2 c3 c5
P5
l disp min = k=1 p(sk ) · lk,disp min = 0 1
= 0.1 · 3 + 0.4 · 2 + 0.2 · 2 + 0.1 · 3 + 0.2 · 2 =
= 0.3 + 0.8 + 0.4 + 0.3 + 0.4 = 2.2 bit, i/mesaj
P5 c1 c4
2 2
σdisp min = k=1 p(sk ) · (lk,disp min − l disp min ) =
P5
H(S) = − k=1 p(sk ) · log2 p(sk )
= 0.1·(3−2.2)2 +0.4·(2−2.2)2 +0.2·(2−2.2)2 + ∼
= 2.12 [bit, i/mes.]
0.1 · (3 − 2.2)2 + 0.2 · (2 − 2.2)2 = 0.1 · (0.8)2 + 0.4 · ηdisp min = l H(S) ∼ ∼
= 2.12
2.2 =
(0.2)2 +0.2·(0.2)2 +0.1·(0.8)2 +0.2·(0.2)2 = 0.1· ∼
disp min

0.64+0.4·0.04+0.2·0.04+0.1·0.64+0.2·0.04 = = 0.9645
0.064 + 0.016 + 0.008 + 0.064 + 0.008 = 0.16 FC ,disp min = dlog
l
2 5e 3 ∼
= 2.2 = 1.36
disp min

5/8
Exemplu codare Huffman statică

Codarea Huffman de dispersie maximă


La ordonarea mesajelor sursei restrânse, mesajul compus se
plasează pe pozit, ia cea mai de jos posibil ı̂n sursa restrânsă.
 
s 1 s2 s3 s 4 s5
S=
0.1 0.4 0.2 0.1 0.2
R0 R1 R2 R3
r3
→ 0.6 → 0
s2 → 0.4 ... 0.4 ... 0.4 | . . . 0.4 → 1
r2 
→ 0.4 | → 00
s3 → 0.2 ... 0.2 | . . . 0.2 → 01 s1 → c1,disp max → 0010
s5 → 0.2 ...

0.2 | → 000 s2 → c2,disp max →1
r1
0.2 → 001 s3 → c3,disp max → 01
 → s4 → c4,disp max → 0011
s1 → 0.1 | → 0010
s5 → c5,disp max → 000
s4 → 0.1 → 0011

6/8
Exemplu codare Huffman statică

Codarea Huffman de dispersie maximă 0 1


 
s1 s 2 s3 s4 s 5
S= c2
0.1 0.4 0.2 0.1 0.2
s1 → c1,disp max → 0010 0 1
s2 → c2,disp max → 1
s3 → c3,disp max → 01
c3
s4 → c4,disp max → 0011
s5 → c5,disp max → 000 0 1
P5
l disp max = k=1 p(sk ) · lk,disp max =
= 0.1 · 4 + 0.4 · 1 + 0.2 · 2 + 0.1 · 4 + 0.2 · 3 = c5
= 0.4 + 0.4 + 0.4 + 0.4 + 0.6 = 2.2 bit, i/mesaj ⇒
ηdisp max = ηdisp min ∼
= 0.9645, FC ,disp max = FC ,disp min ∼
= 1.36 0 1
2
P5 2
σdisp max = k=1 p(sk ) · (lk,disp max − l disp max ) =
= 0.1 · (4 − 2.2)2 + 0.4 · (1 − 2.2)2 + 0.2 · (2 − 2.2)2 + c1 c
0.1 · (4 − 2.2)2 + 0.2 · (3 − 2.2)2 = 0.1 · (1.8)2 + 0.4 · l disp min = l disp max4 = 2.2
2 2
(1.2)2 + 0.2 · (0.2)2 + 0.1 · (1.8)2 + 0.2 · (0.8)2 = σdisp min < σdisp max
= 0.1·3.24+0.4·1.44+0.2·0.04+0.1·3.24+0.2·0.64 = | {z } | {z }
0.324 + 0.576 + 0.008 + 0.324 + 0.128 = 1.36 =0.16 =1.36
7/8
Exemplu codare Huffman statică

Avantajele codurilor Huffman de dispersie minimă

Codul 1: Codul 2:
s1 → c1,disp min → 010 s1 → c1,disp max → 0010
s2 → c2,disp min → 00 s2 → c2,disp max →1
s3 → c3,disp min → 10 s3 → c3,disp max → 01
s4 → c4,disp min → 011 s4 → c4,disp max → 0011
s5 → c5,disp min → 11 s5 → c5,disp max → 000
Exemplu: Viteza mesajelor sursei: vmes = 10000 mesaje/sec.
Capacitatea necesară a canalului:
C = vmes · l = 10000 mesaje/sec · 2.2 bit, i/mesaj = 22000 bit, i/sec
Succesiuni de mesaje furnizate:
s1 s, i s4 ⇒ 1) 3 · 10000 = 30000 bit, i/sec; 2) 4 · 10000 = 40000 bit, i/sec;
⇒ buffer necesar cu capacitatea
1) 30000-22000=8000 bit, i; 2) 40000-22000=18000 bit, i.
s2 ⇒ 1) 2 · 10000 = 20000 bit, i/sec; 2) 1 · 10000 = 10000 bit, i/sec; ⇒ un
deficit de 1) 22000-20000=2000 bit, i/sec; 2) 22000 - 10000=12000 bit, i/sec.
Powered by TCPDF (www.tcpdf.org)
8/8

S-ar putea să vă placă și