Vous êtes sur la page 1sur 111

Chapitre 2:

Codage Entropique

Pr Amina SERIR

Master 1 ST

1
Chapitre 2: Codage entropique
 II.1 Rappels sur la théorie de l’information.
Entropie et mesure de l’information
 II.2 Codage de Huffman – Shannon-Fano
 II.3 Le codage arithmétique
 II.4 La version adaptative de Huffman
 II.5 Le codage LZW
 II.6 Critères d’évaluation

2
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
 Introduction
La compression sans pertes est basée sur les statistiques des données
 Mots de code courts pour les symboles probables.

 Mots de code longs pour les symboles peu probables.

Définitions:

3
II.1 Codage sans pertes - Rappels
sur la théorie de l’information

4
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Choix du code

5
II.1 Codage sans pertes - Rappels
sur la théorie de l’information

Choix du code

6
II.1 Codage sans pertes - Rappels
sur la théorie de l’information

Exemple compression d’un texte

7
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
VLC: Conditions de décodabilité
On n’utilise pas de séparateurs entre les mots de
codes. Donc, il faut que le code soit décodable.
Exemple 1:
Symboles A B C
Codes 0 01 11
AABAAC: 00010011 décodage: AAA??
Exemple 2:
Symboles A B C
Codes 0 10 11
AABAAC:00100011 décodage:AABAAC
8
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Le code préfixe
Un code préfixe (ou code instantané) est un code ayant
la particularité de ne posséder aucun mot ayant pour préfixe
un autre mot. Autrement dit, aucun mot fini d'un code préfixe
ne peut se prolonger pour donner un autre mot.
C'est une propriété souvent recherchée pour les codes à
longueur variable, afin de pouvoir les décoder lorsque
plusieurs mots sont concaténés les uns aux autres sans qu'il
soit nécessaire d'utiliser des séparateurs (les séparateurs
rendent préfixes des codes non préfixes). Ce sont des codes
non ambigus.

9
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Inégalité de Kraft:

10
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Inégalité de Kraft

11
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Information et Entropie

12
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Entropie d’une variable binaire

13
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Distribution à entropie maximale

14
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Entropie conjointe

15
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Entropie conditionnelle

16
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Propriétés de l’entropie

17
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Code optimal

18
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Théorème de Shannon sur le codage de source

19
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Codage Entropique

20
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Codage Entropique

21
II.1 Codage sans pertes - Rappels
sur la théorie de l’information
Codage Entropique

22
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
Les principaux pionniers de la compression de données furent sans doute C.
Shannon et R. M. Fano. Ils démontrèrent que l’on peut coder un message en
utilisant la probabilité d’apparition d’un symbole ainsi que la base 2. Le principe
est de recoder des informations sur moins de 8 bits.

L’algorithme de compression Shannon-Fano


Il utilise des codes de longueur variable, comportant d’autant plus de bits que
la probabilité du symbole est faible. Les codes sont définis à l’aide d’un
algorithme spécifique selon un arbre de Shannon-Fano.

23
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
L’algorithme de compression Shannon-Fano

1- Les symboles sont triés et classés en fonction de leur fréquence en commençant


par le plus fréquent.
2- La liste des symboles est ensuite divisée en deux parties de manière à ce que le
total des fréquences de chaque partie soit aussi proche que possible.
3- Le chiffre binaire 0 est affecté à la première partie de la liste, le chiffre 1 à la
deuxième partie.
4-On répète les étapes 2 et 3 sur chacune des parties. Et ainsi de suite jusqu’à ce
que chaque symbole correspond à un code déterminé.
24
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
Exemple : Compression du mot : « statistique »

Mot à coder T S I A Q U E

Fréquence 3 2 2 1 1 1 1

Code binaire étape 1 0 0 1 1 1 1 1

Code binaire étape 2 00 01 10 10 11 11 11

Code binaire étape 3 00 01 100 101 110 110 111

Code binaire étape 4 00 01 100 101 1100 1101 111


25
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano

Exemple : Compression du mot : « statistique »

La somme des fréquences est égale à 11.


Le mot statistique nécessitait 11x8 bits = 88 bits.
Après compression, il nécessite 30 bits.
Taux=88/30=2,93
Taux(Bpe)=30/11=2,72 bpe (bit par échantillon)

26
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
Autre exemple : Codons ABCDE avec

Symbole A B C D E
fréquence 15 7 6 6 5

27
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
Autre exemple : Codons ABCDE
Symbole fréquence code Total bits
A 15 1.38 00 30
B 7 2.48 01 14
C 6 2.70 10 12
D 6 2.70 110 18
E 5 2.96 111 15 28
II.2 Codages de Shannon-Fano et
Huffman
Codage Shannon-Fano
Remarque :
Cette méthode ne permet pas d’approcher efficacement
l’entropie. On lui préfère l’algorithme de Huffman.

29
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
D.A. Huffman a inventé en 1952, un algorithme de compression capable, à
partir d'une analyse statistique des données, d'associer à celles les plus
souvent présentes les codes les plus courts. Inversement, les données les
plus rares se verront attribuer les codes les plus longs.

Huffman a découvert comment construire le code optimum pour n’importe


quelle source.

L’ algorithme permet d’Huffman permet d'obtenir de bons résultats, mais il


faut conserver entre la compression et la décompression, le dictionnaire
des codes utilisés.

30
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
 Principe
Pour la compression Huffman, le codage des signes est une
fonction inverse de leur probabilité d'apparition.
Il faut connaître préalablement la statistique d'apparition des
signes. En pratique, on fait un tableau donnant le nombre
d'apparitions de chaque signe, qui s'appelle nœud dans
l'information à transmettre. On construit un arbre binaire en
partant du bas. Les deux caractères les moins fréquents de la
liste, qui s'appellent "enfants", sont reliés par leurs "Parents" en
faisant la somme des comptes des fréquences. Les symboles
prennent alors les valeurs 0 et 1 et sont retirées de la liste. Le
processus est répété sur l'ensemble des caractères jusqu'à ce
qu'il ne reste plus qu'un seul élément parent formant la racine
de l'arbre. Pour décoder, il suffit de descendre dans l'arbre.
31
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
 Exemple
Symboles en fonction de leurs apparitions.
A=15 B= 7 C= 6 D= 6 E= 5
On prend les deux signes de poids le plus faible: ici D
et E de poids respectif 6 et 5. Ces deux nœuds sont
retirés de la liste D et affectaient à la branche 0 du
nœud parent, et E est affecté à la branche 1. Leur
somme est égal 11. On prend ensuite les deux
nœuds les plus faibles: B et C. Ils sont reliés par un
nouveau nœud parent avec un point de 13.

32
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
Nœuds Parents

Nœuds Enfants

33
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
La prochaine étape, les deux nœuds de poids le plus faible sont les
nœuds partant de B/C et de D/E. Ils sont reliés par un nouveau
nœud parent de poids 24. Dans la liste des nœuds libres les enfants
n'y sont plus.

34
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

A ce stade, il y a 2 bits pour les


codes de Huffman dans les signes
de B, C, D, E. Au dernier passage,
il y a deux nœuds parents de
poids 24 qui sont reliés au nœud
A pour créer un nouveau parent
de poids 39. On retire les deux
enfants, il ne reste plus q'un seul
parent, l'arbre est terminé.

Les signes avec leur code

A = 0 B = 100 C = 101
D = 110 E = 111 35
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

Cette première étape permet de constituer un arbre. L'arbre est constitué


de noeuds et de feuilles. Tous les noeuds ont deux liens vers d'autres
noeuds ou des feuilles. On dit qu'il est le père de deux fils. Le lien de
gauche est étiqueté 0 et celui de droite 1. Ce type d'arbre s'appelle un
arbre binaire car tous les noeuds ont deux fils. Le noeud le plus élevé
s'appelle la racine. On trouve alors le code d'une lettre en partant de sa
position dans l'arbre, en remontant vers la racine tout en notant de droite
à gauche les 1 et 0 rencontrés. Cet algorithme revient donc à construire un
arbre binaire. On note sur chaque noeud les sommes des fréquences des
fils.

36
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

Les feuilles représentent les valeurs avec leurs fréquences. La racine


indique donc la somme des valeurs du texte. Chaque branche
correspond soit à 0, soit à 1. Pour compresser l'image, il suffit pour
chaque valeur de parcourir l'arbre en partant de la feuille
correspondant à la valeur voulue, et de remonter jusqu'à la racine.
Une fois arrivé, on émet les bits 1 ou 0 correspondant au chemin
parcouru.

37
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
En résumé la méthode de Huffman peut-être traduite de la manière
suivante :
1. Les symboles sont triés et classés en fonction de leur fréquence dans
un ordre décroissant.
2. A partir des deux symboles présentant la fréquence la plus faible, un
nœud est créé. Il lui est affecté un poids égal à la somme des
fréquences des deux symboles.
3. Le nœud créé remplace désormais les deux symboles dans la suite du
processus. A ces derniers sont affectés respectivement les chiffres
binaires 0 pour le plus fréquent et 1 pour le plus rare.
4. La même démarche est reprise en considérant les deux symboles ou
nœuds de poids le plus faible. Elle est renouvelée tant qu’il ne reste
plus d’un nœud libre.

38
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
Autre exemple

39
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

40
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

41
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

42
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

43
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

44
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman

45
II.2 Codages de Shannon-Fano et
Huffman
Codage de Huffman
Inconvénients

46
II.3 Codage arithmétique

47
II.3 Codage arithmétique
• La compression arithmétique, comme Huffman est une
compression statistique, mais elle utilise des réels à la place
des bits.
• On utilise les partitions d’un intervalle [a b] (initialement [0
1]), la taille de chaque sous-intervalle est inversement
proportionnelle à la fréquence du symbole lui correspondant.
• Chaque symbole à compresser réduit l’intervalle courant [a b]
au sous-intervalle [a’ b’] lui correspondant. Cet intervalle [a’
b’] est lui-même partitionné etc…
• On obtient ainsi finalement un intervalle [A B], très petit ; les
données stockées sont alors la longueur N de la séquence à
compresser et la borne inférieure A de l’intervalle final.

48
II.3 Codage arithmétique
• Algorithme

Chaque symbole est introduit avec sa probabilité d’occurrence


comprise entre 0 et 1 (on commence par celui de la probabilité
la plus élevée.
Algorithme
1- Créer une table comportant les différentes valeurs à coder,
2- Calculer la probabilité associée à chaque symbole dans la
chaîne à coder,
3- associer à chaque symbole un sous-intervalle proportionnel à
sa probabilité d’occurrence dans l’intervalle [0 1] (l’ordre de
rangement sera mémorisé car il est nécessaire au décodeur).
4- Initialiser la limite inférieure de l’intervalle de travail à la
valeur 0 et la limite supérieure à la valeur 1. 49
II.3 Codage arithmétique
• Algorithme

Tant qu’il reste un symbole dans la chaîne à coder

Largeur = limite supérieure – limite inférieure


Limite inférieure=limite inférieure +Largeur x (limite basse du
sous-intervalle du symbole)
Limite supérieure = limite inférieure + Largeur x (limite haute
du sous-intervalle du symbole)

La limite inférieure code la chaîne de manière unique.


50
II.3 Codage arithmétique
• Exemple

Symboles en fonction de leurs apparitions.

A=15 B= 7 C= 6 D= 6 E= 5

51
II.3 Codage arithmétique
•Valeurs fréquence Probabilité intervalle
A 15 0.384315 [0, 0.384315]
B 7 0.179487 [0.384315,
0.563802]
C 6 0.153846 [0.563802,
0.717648]
D 6 0.153846 [0.717648,
0.871494]
E 5 0.128506 [0.871494, 1]

Codons le paquet [ABBD] 52


II.3 Codage arithmétique
Valeurs Intervalle Limiteinf limitesup
0 1
A [0, 0.384315] [0, 0.384315]

B [0.384315,0.563802] [0.147698, 0.216677]

B [0.384315, 0.563802] [0.174207, 0.186588]

D [0.717648, 0.871494] [0.183092, 0.184996]


53
II.3 Codage arithmétique
Nous remarquons qu’à chaque étape les limites (haute et basse)
se rapprochent de plus en plus ; ce qui nous donne pas de
liberté pour le nombre de mot du paquet à coder.
Phase de décompression :
Nous stockons les valeurs et les intervalles associées.
Pour un paquet compressé, on stocke la valeur limite inférieure
de l’intervalle.

54
II.3 Codage arithmétique
Décodage
• Initialiser le compteur 0 et charger le modèle établi par le
codeur.
Tant que le compteur est inférieur au nombre des symboles
codés
Chercher dans l’ensemble des sous-intervalles du modèle,
le sous-intervalle dans lequel se trouve le message codé
CODE.
Chercher le symbole correspondant à ce sous intervalle.
Message[Compteur]=symbole
Code = (Code-limitebasse du sous intervalle))/(limite haute –
limite basse)
Incrémenter le compteur
Fin tant que.
55
II.3 Codage arithmétique
Décodage
La valeur transmise est : Code= 0.183092
Cette valeur appartient à [0, 0.384315]
Cette intervalle correspond à la valeur A
Code=(0.183092-0)/0.384315=0.476411
Code appartient à [0.384315,0.563802]
Cette intervalle correspond à la valeur B
Code=(0.476411-0.384315)/ 0.179487=0.513106
Code appartient à [0.384315,0.563802]
Cette intervalle correspond à la valeur B
Code=(0.513106-0.384315)/ 0.179487=0.717550
Code appartient à ?
Cette intervalle correspond à la valeur ?

56
II.3 Codage arithmétique
Exemple

57
II.3 Codage arithmétique
Exemple

58
II.3 Codage arithmétique
Exemple

59
II.3 Codage arithmétique
Exemple

60
II.3 Codage arithmétique
Exemple

61
II.3 Codage arithmétique
Exemple

62
II.3 Codage arithmétique
Exemple

63
II.4 Les versions adaptatives-
Huffman adaptatif
 Problématique:
 L’encodage de Huffman nécessite une connaissance a priori de la
probabilité d’apparition des symboles.
 Il faut alors effectuer une étude statistique des données pour
générer un code.
 Ensuite effectuer l’encodage de Huffman.
 Procédure d’encodage se fait en deux étapes. Ce qui n’est pas
toujours pratique.
 Solution triviale
 Commencer par l’hypothèse d’équiprobabilité.
 Pour le kème symbole construire un nouveau code de Huffman basé
sur les symboles précédents.
 Complexité calculatoire élevée

64
II.4 Les versions adaptatives-
Huffman adaptatif
Solution élaborée: Soit l’alphabet A={a1,…, an}
1. Fixer un code initial pour l’alphabet.
2. Arbre formée d’une seule feuille NYT(not yet transmitted).
3. Parcourir les éléments de la source.
A. Si l’élément NYT
i. Envoyer NYT
ii. Mise à jour de l’arbre
B. Sinon
i. Envoyer le mot code de l’élément
ii. Mise à jour de l’arbre
4.Condition d’arrêt: parcours de toute la source.
Note 1: Code dépend de la fréquence des éléments.
Note 2: Encodeur et décodeur doivent être synchros.

65
II.4 Les versions adaptatives-
Huffman adaptatif
 Alphabet de n éléments:
 Un arbre contient 2n-1 noeuds (racines+feuilles)
 Les attributs d’un noeuds sont: symboles, gauche=0, droite=1,
parent, frère(a et b), feuille F, poids=4, identificateur id=50, symbole
a.

 Propriétés des poids


 Si x feuille: poids=fréquence d’occurrence
 Si x racine: poids=poids[Frère(droite)]+poids[Frère(gauche)]
 Propriété de l’identificateur
 Si poids(b)≤ poids(a) => id(b)≤ id(a)
 Propriété de fratrie: Id(frère gauche)=2k-1 et Id(frère droite) =2k
66
II.4 Les versions adaptatives-
Huffman adaptatif
 Algorithme:
 Point de départ: arbre avec un seul élément (feuille sans racine):
id=2n-1, poids=0, symbole=NYT.
 Nouveau symbole: on éclate le noeud NYT
 Préserver la propriété de fratrie.

 Quant un noeud x est mis à jour


Répéter
Si poids(x)<poids(frère(x)) [cas binaire:1 seul frère]
poids(x)++, exit.
Sinon
Inter-changer les frères, poids(x)++,
x=parent(x), réitérer.
Jusqu’à: x=racine
67
II.4 Les versions adaptatives-
Huffman adaptatif- Exemple
 Enoncé:
 Alphabet: lettres minuscules de la langue anglaise-française. La
longueur de l’alphabet=26.
 Message=[a a r d v a k]
 Code initial:

 Nombre total des noeuds dans l’arbre: 2x26-1=51.


 Identificateur de la racine de l’arbre est 51.

68
II.4 Huffman adaptatif
Encodage (1)
Message: a a r d v a k
Code:

69
II.4 Huffman adaptatif
Encodage (2)
Message: a a r d v a k
Code: 00000

70
II.4 Huffman adaptatif
Encodage (3)
Message: a a r d v a k
Code: 000001

71
II.4 Huffman adaptatif
Encodage (4)
Message: a a r d v a k
Code: 000001010001

72
II.4 Huffman adaptatif
Encodage (5)
Message: a a r d v a k
Code: 000001010001

73
II.4 Huffman adaptatif
Encodage (6)
Message: a a r d v a k
Code: 0000010100010000011

74
II.4 Huffman adaptatif
Encodage (7)
Message: a a r d v a k
Code: 000001010001000001100010101

75
II.4 Huffman adaptatif
Encodage (7)
Message: a a r d v a k
Code: 000001010001000001100010101

76
II.4 Huffman adaptatif
Encodage (9)
Message: a a r d v a k
Code: 000001010001000001100010101

77
II.4 Huffman adaptatif
Encodage (10)
Message: a a r d v a k
Code: 000001010001000001100010101

78
II.4 Huffman adaptatif
Encodage (11)
Message: a a r d v a k
Code: 0000010100010000011000101010

79
II.4 Huffman adaptatif
Encodage (12)
Message: a a r d v a k
Code: 0000010100010000011000101010

80
II.4 Huffman adaptatif
Encodage (12)
Message: a a r d v a k
Code: 0000010100010000011000101010110001010

81
II.4 Huffman adaptatif
Encodage (13)
Message: a a r d v a k
Code: 0000010100010000011000101010110001010

82
II.4 Huffman adaptatif
Encodage (14)
Message: a a r d v a k
Code: 0000010100010000011000101010110001010

83
II.4 Huffman adaptatif
Décodage (1)
Message décodé:
Code: 0000010100010000011000101010110001010

84
II.4 Huffman adaptatif
Décodage (2)
Message décodé: a
Code: 0000010100010000011000101010110001010

85
II.4 Huffman adaptatif
Décodage (3)
Message décodé: a a
Code: 0000010100010000011000101010110001010

86
II.4 Huffman adaptatif
Décodage (4)
Message décodé: a a
Code: 0000010100010000011000101010110001010

87
II.4 Huffman adaptatif
Décodage (5)
Message décodé: a a r
Code: 0000010100010000011000101010110001010

88
II.4 Huffman adaptatif
Décodage (6)
Message décodé: a a r
Code: 0000010100010000011000101010110001010

89
II.4 Huffman adaptatif
Décodage (7)
Message décodé: a a r d
Code: 0000010100010000011000101010110001010

90
II.4 Huffman adaptatif
Décodage (7)
Message décodé: a a r d
Code: 0000010100010000011000101010110001010

91
II.4 Huffman adaptatif
Décodage (8)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

92
II.4 Huffman adaptatif
Décodage (9)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

93
II.4 Huffman adaptatif
Décodage (10)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

94
II.4 Huffman adaptatif
Décodage (11)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

95
II.4 Huffman adaptatif
Décodage (12)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

96
II.4 Huffman adaptatif
Décodage (13)
Message décodé: a a r d v
Code: 0000010100010000011000101010110001010

97
II.4 Huffman adaptatif
Décodage (14)
Message décodé: a a r d v a
Code: 0000010100010000011000101010110001010

98
II.4 Huffman adaptatif
Décodage (15)
Message décodé: a a r d v a
Code: 0000010100010000011000101010110001010

99
II.4 Huffman adaptatif
Décodage (16)
Message décodé: a a r d v a k
Code: 0000010100010000011000101010110001010

100
II.4 Huffman adaptatif
Décodage (17)
Message décodé: a a r d v a k
Code: 0000010100010000011000101010110001010

101
II.4 Huffman adaptatif
Décodage (18)
Message décodé: a a r d v a k
Code: 0000010100010000011000101010110001010

102
II.5 Le codage Lempel Ziv Welch
(LZW)
Cet algorithme est un des plus répandu. On le trouve dans les formats
GIF et TIFF. Il constitue même une partie de la compression V42bis
des modems. En 1977, Abraham Lempel et Jakob Ziv ont créé le
premier élément de la famille des compresseurs LZ. Ce compresseur,
nommé LZ77, est utilisé dans les programmes d'archivages de donnés
comme PKZIP, ARJ ou bien LHA. Il est spécialisé dans les données
textuelles alors que LZ78 est plus efficace pour des donnés binaires
comme les images.

En 1984, alors qu'il travaillait chez Unisys, Terry Welch modifia LZ78
pour l'implanter dans des contrôleurs de disques. Le résultat fut
l'algorithme LZW.

103
II.5 Le codage Lempel Ziv Welch
(LZW)
LZW est capable de travailler avec n'importe quel type de données. Il
est rapide en compression et décompression et ne nécessite pas
d'opération à virgule flottante. De par le fait qu'il encode au niveau
bit et non au niveau de l'octet, il ne se soucie pas du processeur, et
de la manière dont il code les informations.

LZW utilise la substitution des motifs en se basant sur un dictionnaire


construit au fil de la compression.
Le flot d'information à compresser est découpé en chaînes d'octets.
Chaque chaîne est comparée au dictionnaire. Si elle n'est pas présente,
elle est stockée. Elle est ensuite écrite dans le flot de sortie compressé.
Quand une chaîne, déjà rencontrée, apparaît dans le flot, elle est codée
et transmise si elle a une longueur inférieur au plus grand mot du
dictionnaire.
104
II.5 Le codage Lempel Ziv Welch
(LZW)

Pour le décodage, le logiciel reconstruit en fait le dictionnaire dans le


sens inverse. Il n'est pas nécessaire ainsi de transmettre le
dictionnaire. Bien souvent, pour la compression et la décompression,
le dictionnaire est initialisé avec les 256 valeurs de la table ASCII.
Ainsi, tous les codeurs et décodeurs LZW initialisent leurs
dictionnaires de la même méthode.

105
II.5 Le codage Lempel Ziv Welch
(LZW)
Algorithme de compression LZW:
w = NULL;
Tant que ( lecture d’un caractère k )
{ if (wk existe dans le dictionnaire
w = wk; // concaténation de w et k (wk)
else
ajouter wk au dictionnaire;
retourner le code de w;
w = k;
}

106
II.5 Le codage Lempel Ziv Welch
(LZW) exemple w
NULL
k
^
Sortie Indexe Symbole

^ W ^ 256 ^W
W E W 257 WE
E D E 258 ED
D ^ D 259 D^
^ W
 Chaîne ^W E 256 260 ^WE
"^WED^WE^WEE^WEB^WET E ^ E 261 E^
". ^ W
 Exemple 2 à coder ^W E

ABRACADABRACADA ^WE E 260 262 ^WEE


E ^
E^ W 261 263 E^W
W E
WE B 257 264 WEB
B ^ B 265 B^
^ W
^W E
^WE T 260 266 ^WET
107
T EOF T
II.5 Le codage Lempel Ziv Welch
(LZW)
Algorithme de décompression LZW:
lire un caractère k;
Sortie ou retourner k;
w = k;
Tant que ( lire un caractère k ) /* k peut être un
caractère ou un code. */
{ entree = dictionaire entree pour k;
sortir entree;
ajouter w + entree[0] au dictionnaire;
w = entree;
}

108
II.5 Le codage Lempel Ziv Welch
(LZW) exemple
w k Sortie Indexe Symbole

^ ^

^ W W 256 ^W
 La chaine à décoder est :
"^WED<256>E<260><2 W E E 257 WE

61><257>B<260>T". E D D 258 ED

D <256> ^W 259 D^

<256> E E 260 ^WE

E <260> ^WE 261 E^

<260> <261> E^ 262 ^WEE

<261> <257> WE 263 E^W

<257> B B 264 WEB

B <260> ^WE 265 B^

<260> T T 266 ^WET

109
II.6 Critères d’évaluation
Rapport (taux de compression):

Nbitsentree
T
Nbitssortie
Débit de codage:
Nbitssortie
R [bits / ech]
Nbechantillons
Image de taille MxN Vidéo, son

Nbitssortie Nbitssortie
R [bpp] R [bps]
MN T 110
II.6 Critères d’évaluation

111

Vous aimerez peut-être aussi