Documente Academic
Documente Profesional
Documente Cultură
Codarea sursei
61
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
62
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
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
64
N
X
H(S) = H(C) = − p(si ) log p(si ) (4.2)
i=1
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
66
log D − H(X)
ρC = 1 − ηC = (4.8)
log D
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
67
3. Partit, iile se termin când ecare din submult, imi cont, ine câte un
singur simbol al sursei;
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
l = 2 = lmin = H(S)
η = 1;
ρ = 0.
identicarea celui mai ecient cod binar. Dup câteva luni, Human a esuat în ,
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
70
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
71
dict=huffmandict(simbols,p)
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.
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 , ,
[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.
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
73
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
74
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
,
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
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
cod = setCod(strmatch(w,dictionar,'exact'));
sursa_codata = [sursa_codata, cod];
SU RSA :1111111111
SU RSAcodata :1 4 5 6
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
77
calitate congurabil (se pot obt, ine s, iere de dimensiuni mici
dac se scade foarte mult calitatea);
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
78
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
continutul imaginii)
,
Y (x, y)
Yq (x, y) = + 0.5, x, y = 1, 8
Q(x, y)
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
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
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;
% 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));
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016
82
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);
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
D.Faur, C. Pătrașcu, A. Popescu, C. Dănișor - Teoria transmisiunii informatiei, Aplicații, Printech, 2016