Вы находитесь на странице: 1из 16

Chapitre 2 : Codage de Source

Partie I : Introduction au codage de source

I.1. Introduction

Une source d’information est un dispositif qui délivre aléatoirement des symboles (ou lettres), à partir
d’un ensemble (alphabet). Les symboles sont choisis selon des probabilités qui sont parfois liées aux
symboles délivrés précédemment. Dans ce chapitre, nous nous intéressons au codage de la sortie d’une
source. Nous considérons les sources stationnaires, discrètes et sans mémoire. L’objectif du codage
source est de représenter la donnée originale par un nombre minimal de symboles ou lettres. C’est
donc : La compression de données.

I.2. Propriétés d’une source d’information

 Redondance :

Soit une source 𝑆 délivrant 𝑚 symboles selon des probabilités différentes. On définit la redondance
𝑟 de cette source par :

𝐻 (𝑆 )
𝑟 = 𝐻𝑚𝑎𝑥 − 𝐻(𝑆) , soit : 𝑟 = 1 − 𝐻
𝑚𝑎𝑥

𝐻(𝑆): Entropie de la source.

𝐻𝑚𝑎𝑥 : Entropie maximale de la source, 𝐻𝑚𝑎𝑥 = 𝑙𝑜𝑔2 (𝑚).

 Exemple 1:

On considère l’alphabet de la langue Anglaise (26 lettres + l’espace). Les fréquences de choix
exprimant les probabilités des lettres sont variées. L’entropie de cette source a été estimée en utilisant
un livre de Dumas Malone à 1.34 bits. Ainsi la redondance de cette langue est donnée par :

1.34
𝑟 =1− ≅ 0.72 ≅ 72%
𝑙𝑜𝑔2 (27)

Ce résultat veut dire que lorsqu’un texte est écrit en anglais, on a 28% des lettres qui sont librement
choisies, tandis que 72% des lettres sont choisies selon les règles et la structure de la langue.

Prof. Y. Chibani et Prof. H. Nemmour Page 15


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Taux d’entropie :

La quantité d’information délivrée par une source en fonction du temps, dépend du taux de symboles
« Symbol rate ». Elle est exprimée par le taux d’entropie 𝐻 ′ (𝑆) donné par :

𝐻 ′ (𝑆) = 𝐻 (𝑆) × 𝐷𝑆

𝐷𝑆 est le taux de symboles exprimé en symboles / secondes.

Le taux d’entropie est vu comme la quantité moyenne d’information émise par la source en une
seconde. Cette information est utile lors de la transmission des données dans un canal de
communication.

I.3. Définition d’un code

Un code est un ensemble de mots appelés « mots de code » ou « code words ». Ils correspondent à la
juxtaposition des symboles extraits de l’alphabet d’une source. Le nombre de symboles qui composent
un mot de code est appelé « longueur du mot ». Le code le plus utilisé en pratique est le codage
binaire.

 Exemple 2 :

En technologie de communication ainsi qu’en analyse de données, on utilise souvent, le code ASCII
(American Standard Code for Information Interchange) développé en 1963. Ac tuellement, ce code
contient 28 =256 codes binaires avec une longueur fixée à 8 bits.

 Exemple 3 :

Un autre code qu’on utilise est le « code Morse » qui permet de transmettre l’alphabet {𝑎, 𝑏, ⋯ , 𝑧, ⋯ }
par des signaux électriques :

Signal court → pour les points

Signal long → pour les tirets

Dans ce code, chaque lettre (ou symbole) est représentée par une séquence de points et de tirets :

« S → . . . » et « O → _ _ _ ». Alors, le mot SOS est codé par : « . . . _ _ _ . . . ».

I.4. Problème de codage

Pour comprendre l’objectif et les problèmes liés au codage source, considérons l’exemple suivant :

Prof. Y. Chibani et Prof. H. Nemmour Page 16


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

Soit une source discrète sans mémoire délivrant des lettres dans :{𝐴, 𝐵, 𝐶, 𝐷} avec les probabilités
1 1 1 1
suivantes : , , , . On veut stocker 1000 symboles sous forme d’un fichier binaire. On doit donc
2 4 8 8

coder les symboles par des digits binaires. On veut optimiser la taille des codes pour réduire la taille
du fichier.

 Première solution :

Puisque on doit coder 4 symboles, soit 2 2 symboles, on utilise 2 bits selon le principe de Shannon. On
considère le codage binaire suivant : A→00, B→01, C→10, D→11.

Tous les mots de code ont le même nombre de bits. Ce code est dit « Codage à longueur fixe » ou
« fixed length code ».

Dans ce cas, la taille du fichier est : 1000×2=2000 bits.

 Deuxième solution :

Puisque les symboles n’ont pas les mêmes probabilités, on peut réfléchir à poser un code qui affecte
aux symboles les plus probables des mots de code de taille petite pour réduire encore la taille du
fichier. On peut utiliser par exemple, le codage suivant : A→1, B→01, C→000, D→001.

Ici, la longueur des mots de code est variable. On dit que le code est à « longueur variable ».

Pour calculer la taille du fichier, on utilise la fréquence d’apparition de chaque symbole dans les 1000
observations.

A : 1000×1/2=500 symboles

B : 1000×1/4=250 symboles

C : 1000×1/8=125 symboles (idem pour le D).

La taille du fichier est calculée comme suit : (500×1)+(250×2)+(125×3)+(125×3)=1750 bits.

 Remarques :

2000−1750
 Comparativement au codage binaire, le taux de compression est : = 12.5%.
2000

1750
 En moyenne, nous avons besoin de 1000 soit 1.75 bits pour coder un symbole.

 Si le taux de symboles est de 1000 symboles par seconde, le bit rate est de 1750 bits par seconde.

Prof. Y. Chibani et Prof. H. Nemmour Page 17


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Conclusion :

Pour toute source d’information, les questions liées au codage sont :

 Est-il possible de compresser les données ?

 Quel est le nombre de bits moyen minimal pour représenter un symbole ?

 Comment peut-on élaborer une compression efficace ?

Pour répondre à toutes ces questions, le code qu’on va proposer doit respecter un certain nombre de
propriétés. Avant d’aborder les algorithmes de codage, nous allons établir les propriétés d’un code
efficace.

I.5. Propriétés d’un code

Pour établir un codage source efficace, le code doit vérifier plusieurs propriétés pour être : non-
ambigu, à déchiffrage (ou déchiffrement) unique, et sans préfixe. Pour comprendre ces propriétés,
nous allons les exposer à travers des exemples.

 Code ambigu :

Pour une source ayant un alphabet {𝐴, 𝐵, 𝐶, 𝐷}, on se propose le code suivant : A→1, B→10, C→00,
D→01. Supposons la séquence 10001 qu’on souhaite décoder. Dans ce cas, il y a deux interprétations
possibles : 10001→ACD ou 10001→BCA. Ce code est dit « ambigu ».

 Définition :

On dit qu’un code est « non-ambigu » si et seulement si chaque séquence du code ne correspond qu’à
un seul message de la source. On dit qu’un code est à déchiffrement unique « non ambigu » si et
seulement si chaque séquence de mots de code possède un décodage unique.

 Code instantané :

On considère une source à deux symboles A et B. On propose les deux codes suivants :

Code 1 : A→0 et B→10

Code 2 : A→1 et B→10

Lors d’une transmission, le récepteur peut décoder d’une façon instantanée, les mots reçus si on utilise
le premier code. En effet, si on reçoit 0 on sait que c’est un A et nous n’avons pas besoin d’attendre le
deuxième bit. En revanche, si on utilise le deuxième code, et on reçoit un 1, on doit attendre le bit
suivant pour décider s’il s’agit d’un A ou d’un B. On dit que le premier code est instantané.

Prof. Y. Chibani et Prof. H. Nemmour Page 18


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Définition :

Un code instantané est un code dans lequel chaque mot de code peut être interprété (décodé) mot par
mot sans attendre les mots suivants.

 Code sans préfixe (Par convention on dit Code préfixe) :

On considère une source définie sur l’alphabet: {𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺 }. On propose le code suivant :
{𝐴 → 01, 𝐵 → 11, 𝐶 → 000, 𝐷 → 101,𝐸 → 111,𝐹 → 1100,𝐺 → 1101}.

Si on reçoit le mot de code 1101, le décodage peut donner deux solutions : G ou BA. Le code est
ambigu car le mot de code du symbole B (11) est le préfixe du mot de code du symbole G (1101).
Pour éviter cette confusion, chaque mot de code ne doit pas être le préfixe d’un autre mot de code.

 Définition :

On dit qu’un code est un code « sans préfixe » si et seulement si aucun mot de code n’est le préfixe
d’un autre mot de code.

 Remarques :

 Un code sans préfixe est un code instantané et à déchiffrement unique.

 Un code à déchiffrement unique n’est pas toujours un code sans préfixe.

 Souvent on utilise le terme « préfixe » pour désigner le code « sans préfixe ».

I.6. Théorème de Kraft (Existence d’un code sans préfixe)

Il existe un code n’aire sans préfixe de 𝑚 mots de code {𝐶1,𝐶2 ,⋯ , 𝐶𝑚 } avec des longueurs
{𝑙 1 ,𝑙 1,⋯ , 𝑙 𝑚 } pour coder un alphabet, si et seulement si l’inégalité de Kraft est vérifiée :

∑ 𝑛 −𝑙 𝑘 ≤ 1
𝑘=1

 Exemple 4:

Reprenons l’exemple précédent avec le code 𝐶 = {01,11,000,101,111,1100,1101}.

Ce code n’est pas un code préfixe car le 11 est le préfixe des mots 111, 1100, et 1101.

Néanmoins, l’inégalité de Kraft est vérifiée car : 2−2 + 2−2 + 2−3 + 2−3 + 2−3 + 2−4 + 2−4 = 1.

Nous concluons que parmi les codes qui vérifient l’inégalité de Kraft on peut trouver un code préfixe
(sans préfixe), mais ce n’est pas le code proposé par notre exemple. Ainsi, il exis te un code préfixe

Prof. Y. Chibani et Prof. H. Nemmour Page 19


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

ayant deux mots de code de longueur 2, trois mots de code de longueur 3 et deux mots de code de
longueur 4. Pour trouver un tel code, on doit passer par la représentation graphique utilisant les arbres
de codage.

I.7. Arbres n’aires de codage

Pour construire un code sans préfixe n’aire, le moyen le plus efficace est la représentation graphique
par un arbre n’aire. Rappelons que 𝑛 est le nombre de bits (ou digits) qui constituent l’alphabet du
code. Pour un code binaire composé de 0 et 1, 𝑛 = 2. Aussi, un codage ternaire (𝑛 = 3) correspond
par exemple à un alphabet de 0, 1 et -1.

Un arbre est un graphe qui possède des nœuds et des arcs. Il commence par un nœud de racine.
Chaque nœud est soit une feuille (point de terminaison), soit un nœud intérieur à partir duquel d’autres
nœuds fils peuvent dériver.

 On appelle arité d’un nœud le nombre de ses fils.

 Un nœud feuille est un nœud sans fils.

Un arbre de codage est construit selon les considérations suivantes :

 La racine est placée au sommet.

 La profondeur d’un nœud correspond au nombre d’arcs à parcourir pour aller de la racine à ce
nœud.

 La profondeur de l’arbre est égale à la profondeur maximale de ses feuilles.

 Un arbre n’aire est un arbre dans lequel chaque nœud à une arité (nombre de nœuds fils) égale à
n.

 Un arbre n’aire complet est un arbre dans lequel toutes les feuilles ont la même profondeur.

 Au niveau 0, il y a un seul nœud (la racine). Au niveau 1, il y a au maximum 𝑛 nœuds (2 pour le


codage binaire). Ainsi, à un niveau 𝑙, on peut avoir 𝑛 𝑙 nœuds au maximum.

 Un mot de code est représenté par une séquence de branches (arcs) allant de la racine. Sa
longueur est égale à la profondeur de sa feuille.

 Le codage de Shannon définit la longueur du mot de code d’un symbole par : 𝑙 𝑖 = ⌈−𝑙𝑜𝑔𝑛 (𝑝𝑖 )⌉

Prof. Y. Chibani et Prof. H. Nemmour Page 20


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Exemple 5:

On veut construire un arbre de codage pour trouver un code préfixe pour la source utilisée dans
l’exemple 4. L’alphabet est {𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺 } . Selon l’inégalité de Kraft, il existe un code préfixe
ayant deux mots de codes de longueur 2, deux autres de longueur 4 et 3 mots de code de longueur 3.
On peut trouver ce code à l’aide de l’arbre de codage.

Racine
Code :
0 1
A : 01
B: 10
C: 000
D: 001
0 1 0 1
E:110
F:1110
A B G: 1111
0 1 0 1

C D E
0 1

F G

I.8. Théorème du codage source (Premier théorème de Shannon)

Le théorème du codage source établit les limites et les conditions qui permettent de développer un
code sans préfixe et à déchiffrement unique. Soit S une source débitant des symboles pris d’un
alphabet de taille 𝑚 et soit 𝑛 la taille de l’alphabet du code. Le théorème du codage source est tel que :

a) Chaque code à déchiffrement unique utilisé pour coder des séquences d’une source discrète,
𝐻 (𝑆 )
stationnaire et sans mémoire, satisfait : 𝐸[𝑙] = 𝐿̅ ≥
𝑙𝑜𝑔 (𝑛 )

b) On peut coder une source discrète, stationnaire et sans mémoire par un code instantané n’aire
𝐻 (𝑆 )
dont la longueur moyenne du code vérifie : 𝐸[𝑙] = 𝐿̅ < +1
𝑙𝑜𝑔 (𝑛 )

Prof. Y. Chibani et Prof. H. Nemmour Page 21


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Remarques :

 L’entropie est la borne inférieure pour les longueurs moyennes de tous les codes instantanés que
l’on peut proposer.

 Un code efficace ou optimal doit avoir une longueur moyenne telle que : 𝐿̅ = 𝐻 (𝑆)

 Le logarithme utilisé pour calculer 𝐻(𝑆) est pris à la base 𝑛.

 Pour un codage binaire : 𝑙𝑜𝑔 (𝑛) = 𝑙𝑜𝑔 (2) = 1

 𝐿̅ : Longueur moyenne du code, calculée par : 𝐿̅ = 𝐸[𝑙] = ∑𝑚


𝑖=1 𝑝𝑖 .𝑙 𝑖 . Avec : 𝑙 𝑖 longueur du mot

de code utilisé pour coder le symbole, ayant une probabilité 𝑝𝑖 .

𝐻 (𝑆 )
 Lorsque 𝐿̅ = , soit 𝐿̅ = 𝐻(𝑆), on dit que le code est optimal ou efficace.
𝑙𝑜𝑔 (𝑛 )

 Exemple 6 :

Soit une source S définie par l’alphabet {𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺 } avec les probabilités : 1/3 pour A et 1/9
pour les autres symboles. On veut coder la sortie de S par un code ternaire ayant l’alphabet suivant :
{0, 1,2}. Le codage de Shannon estime la longueur du mot de code par : 𝑙 𝑖 = ⌈−𝑙𝑜𝑔3 (𝑝𝑖 )⌉ (⌈ ⌉
correspond à l’entier supérieur ou égal à la valeur). Ainsi, pour le symbole A, nous avons : 𝑙𝐴 =
1 1
−𝑙𝑜𝑔3 (3) = 𝑙𝑜𝑔3 (3) = 1𝑏𝑖𝑡. Pour les autres symboles, nous avons : 𝑙 𝑖 = −𝑙𝑜𝑔3 (9 ) = 𝑙𝑜𝑔3 (9) =

2 𝑏𝑖𝑡𝑠.

Avant de poser l’arbre de codage, on doit vérifier si un tel code respecte l’inégalité de Kraft.

Nous avons :(3−1 ) + (6 × 3−2 ) = 1. Alors, on peut trouver un code préfixe à déchiffrement unique
utilisant les longueurs calculées selon le principe de Shannon. La longueur moyenne de ce code est
5 1 1
telle que : 𝐿̅ = 𝑡𝑟𝑖𝑡𝑠/𝑠𝑦𝑚𝑏𝑜𝑙𝑒. L’entropie de la source est : 𝐻(𝑆) = − 𝑙𝑜𝑔3 ( ) − 6 ×
3 3 3
1 1 5
𝑙𝑜𝑔3 ( ) = 𝑡𝑟𝑖𝑡𝑠 .
9 9 3

Pour retrouver ce code, nous utilisons un arbre ternaire de codage.

Code :
0 1 2
A:1
B: 00
C: 01
A D: 02
0 1 2 0 1 2
E: 20
F : 21
G: 22
B C D E F G
Prof. Y. Chibani et Prof. H. Nemmour Page 22
USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

Ce code est dit efficace car 𝐿̅ = 𝐻(𝑆).

 En résumé :

Pour une source d’information S, la compression de données est possible si : 𝐻(𝑆) < 𝑙𝑜𝑔𝑛 (𝐿̅ ). Le
nombre moyen minimal des symboles codes requis pour représenter un symbole est égal à l’entropie
𝐻(𝑆).

Partie II : Algorithmes de Compression

Dans cette section, nous présentons les algorithmes de codage binaire permettant la compression de
données.

II.1. Codage binaire de Shannon

Ce code constitue la méthode basique du codage binaire. Il est basé sur l’utilisation de l’information
propre pour définir la taille du mot de code de chaque symbole de l’alphabet. Pour une source S
définie sur un alphabet {𝑎1 ,𝑎2 ,⋯ } , choisi selon les probabilités { 𝑝𝑎1 , 𝑝𝑎2 ,⋯ }, la taille des mots de
code est définie par : ⌈−𝑙𝑜𝑔 ( 𝑝𝑎𝑖 )⌉ (l’entier supérieur ou égal à l’information propre). Ainsi, les codes
sont obtenus à l’aide d’un arbre de codage.

Le codage binaire de Shannon est un code préfixe mais non optimal.

Le codage binaire de Shannon est optimal si l’entropie de la source H(S) est égale à Hmax
(Symboles équiprobables)

II.2. Algorithme de Shannon-Fano

Cet algorithme est basé sur le principe que chaque bit de code décrit par une variable aléatoire doit
avoir une entropie maximale.il est composé des étapes suivantes :

1. Classer les symboles dans l’ordre décroissant des probabilités.

2. Diviser l’ensemble des symboles en deux sous-ensembles contenant chacun des symboles
consécutifs de façon que les probabilités totales (somme des probabilités) des deux sous -ensembles
soientt les plus proches possible. On affecte 1 pour un sous-ensemble et 0 pour l’autre.

Prof. Y. Chibani et Prof. H. Nemmour Page 23


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

3. Répéter l’étape 2 pour chaque sous-ensemble contenant au moins deux symboles. L’algorithme se
termine lorsque tous les sous-ensembles contiennent un seul symbole.

4. Les digits binaires successifs affectés aux sous-ensembles sont groupés pour former les mots de
codes.

 Exemple 7:

Considérons une source S discrète, stationnaire et sans mémoire, prenant des valeurs dans
{𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺 }, avec les probabilités {0.4, 0.15,0.15,0.1,0.1, 0.05,0.05}

Pour vérifier la faisabilité d’une compression, on doit comparer l’entropie de la source à Hmax.

H(S)=2.38 bits et Hmax=log(7)=2.81 bits.

Puisque H(S) est inférieure à Hmax, la source contient une redondance et peut être compressée. Nous
allons appliquer l’algorithme de Shannon-Fano comme décrit dans le tableau suivant :

Symboles Probabilité Etape 1 Etape2 Etape 3 Etape 4 Etape 5 Etape 6 Code


A 0.4 0 0 00
B 0.15 0 1 01
C 0.15 1 0 0 100
D 0.1 1 0 1 101
E 0.1 1 1 0 110
F 0.05 1 1 1 0 1110
G 0.05 1 1 1 1 1111

Pour évaluer l’efficacité de l’algorithme de codage, on doit calculer la longueur moyenne du code.

Comparativement à un codage binaire classique qui utilise 3 bits pour coder 7 symboles, la réduction
3−2.55
du taux de symboles offerte par la méthode de Shannon-Fano est de 15%, soit : ≅ 0.15
3

II.3. Algorithme de Huffman

Cet algorithme a été proposé par Huffman en 1952. Il permet de développer des codes préfixes (sans
préfixes) en utilisant les arbres de codage. En pratique, l’algorithme de Huffman est utilisé dans les
applications de compression sans perte telles que le format JPEG pour les images, MPEG pour les
vidéos et MP3 pour l’audio. Il se compose des étapes suivantes :

1. Classer les symboles de la source en bas et de gauche à droite selon l’ordre croissant des
probabilités.

Prof. Y. Chibani et Prof. H. Nemmour Page 24


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

2. On combine les deux symboles ayant les deux plus faibles probabilités dans un nœud obtenu en
utilisant des arcs sortants des deux symboles. Un arc sera affecté d’une valeur égale à 1 et l’autre
prend 0. Le nœud obtenu est considéré comme un nouveau symbole dont la probabilité est la
somme des deux probabilités. Supprimer ainsi les deux symboles utilisés et rajouter le nouveau
symbole à la liste des symboles.

3. Reprendre l’étape 2 jusqu’à l’obtention d’un nœud ayant une probabilité égale à 1 (Racine de
l’arbre de codage).

4. Les codes des chemins qui mènent aux différents symboles depuis la racine constituent les mots de
code respectifs.

 Exemple 8: On reprend la source utilisée dans l’exemple 7. Le codage de Huffman est tel que :

1
0 1

Niveau 4 : 0.60
0 1

Niveau 3 : 0.35
0 1

Niveau 2 : 0.20
0 1

Niveau 1 : 0.10 0.25


0 1 0 1

Niveau 0 : 0.05 0.05 0.10 0.15 0.10 0.15 0.40

G F E C D B A

Codes: A(1), B(011), C(001), D(010), E(0001), F(00001), G(00000).

 Evaluation :

Entropie de la source: 𝐻 (𝑆) = 2.446 bits, 𝐻𝑚𝑎𝑥 = 𝑙𝑜𝑔7 = 2.8073 bits,

𝐻( 𝑆)
Efficacité : 𝐸𝐹 =
𝐿̅

𝐿̅−𝐻( 𝑠) 𝐻( 𝑆)
Taux de redondance de la source codée (après codage) noté rc: 𝑟𝑐 = =1− = 1 − 𝐸𝐹
𝐿̅ 𝐿̅

Prof. Y. Chibani et Prof. H. Nemmour Page 25


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

Binaire Shannon-Fano Huffman


Longueur moyenne (bits/ symbole) 3 2.55 2.5
Taux de redondance après codage (%) 18.47 4.08 2.16
Efficacité du code (%) 81.53 95.92 97.14

 Conclusions :

a) Lorsque les mots de source (un mot est une suite de symboles source) ont la même longueur, le
codage de Huffman est le plus efficace parmi les codes à déchiffrement unique.

b) Le codage de Huffman satisfait toujours les conditions du théorème du codage source.

c) L’application des algorithmes de Huffman et de Shannon-Fano, nécessite la connaissance des


probabilités de distribution des symboles source. En pratique, ces probabilités sont inconnues. Elles
sont estimées par la fréquence d’apparition des symboles (ou mots) dans les messages. Ces
probabilités doivent être transmises au récepteur avec le code pour permettre un décodage correct
du message.

II. 4. Algorithme Lemplel-Ziv Welch:

Le code Lempel-Ziv connu sous le nom LZ-78 est un codage basé sur l’utilisation d’un dictionnaire. Il
a été inventé en 1978 (Première version en 1977) pour permettre la compression d’une source avec les
avantages suivants :

 La compression est universelle, donc les probabilités de distribution des symboles sources, ne
doivent pas être connues.

 C’est un code optimal (ou efficace), car le nombre de bits par symbole tend vers l’entropie.

 Un codage facile à mettre en œuvre.

 Principe de l’algorithme Lempel-Ziv (LZ):

La séquence source est découpée en plusieurs séquences (ou chaines) de symboles qui ne sont pas
apparues précédemment. Par exemple, la séquence : 1011010100010 est découpée en 1, 0, 11,
01,010,00,10. Dans ce cas, le dictionnaire initial contient deux caractères 0 et 1. A chaque fois que
l’on veut extraire une sous-chaine il faut tenir compte des sous-chaines précédentes, pour ne pas créer
une sous-chaine existante. Pour cette raison, la cinquième sous-chaine prend 010 et non pas 01 qui

Prof. Y. Chibani et Prof. H. Nemmour Page 26


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

existe déjà dans le dictionnaire. Une fois le découpage terminé, le codage LZ transforme chaque sous -
chaine en un couple contenant :

 La position de la plus longue sous-chaine précédente préfixe de la sous-chaine courante et,

 Le caractère (ou bit) ajouté qui rend la sous-chaine unique.

Pour notre exemple nous obtenons le codage décrit par le tableau suivant :

Index Chaine Code


0 vide La position 0 du dictionnaire correspond au vide ou
1 1 (0, 1) l’espace. On l’utilise lorsque la sous-chaine courante
2 0 (0, 0) n’a pas une sous-chaine préfixe.
3 11 (1,1)
4 01 (2,1)
5 010 (4,0)
6 00 (2,0)
7 10 (1,0)

Dans le cas où le message contient des caractères, on utilise le code ASCII comme dictionnaire de
codage.

 Algorithme LZW :

En 1984, Terry Welch a proposé une amélioration de l’algorithme LZ appelée LZW. Il consiste à
utiliser une table de codage appelée Dictionnaire contenant des chaînes de caractères avec leurs
positions (appelées Index) pour compresser un message. Il est composé des étapes suivantes :

1. Au départ, le dictionnaire est initialisé avec des chaînes composées d’un seul caractère (Exemple
code ASCII sur 8 bits) en affectant un numéro d’index pour chaque chaîne en commençant par 0.

2. Puis, le dictionnaire est mis à jour progressivement au fur et à mesure de l’apparition d’une
nouvelle chaîne. Pour cela, l’algorithme utilise un pointeur pour balayer le message à compresser
de la gauche vers la droite. Ce pointeur permet d’identifier le code de la chaîne se trouvant dans le
dictionnaire pour coder le message. Le premier caractère correspond à la première chaine
d’initialisation « P ». On lit le caractère suivant dans le message « c ». Si la juxtaposition P⊕c
n’est pas dans le dictionnaire, on l’ajoute comme nouvelle chaine, on envoie la position de P et on
utilise c pour initialiser la chaine suivante.

 Exemple 9:

On considère un alphabet composé de 7 symboles : AX ={, a, e, g, i, m, r} ( : Espace blanc)

Message du texte à coder : M= amiamiraimeimage.

Prof. Y. Chibani et Prof. H. Nemmour Page 27


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

Le codage avec l’algorithme LZW est résumé dans le tableau suivant :

Index Chaine Initialisation Caractère lu Position émise


0 
1 a
2 e
3 g
4 i
5 m
6 r
7 am a m 1
8 mi m i 5
9 i i  4
10 a  a 0
a a m
11 ami am i 7
12 ir i r 4
13 r r  6
 a
14 ai a i 10
15 im ia m 4
16 me m e 5
17 e e  2
18 i  i 0
i i m
19 ima im a 15
20 ag a g 1
21 ge g e 3
e 2

Code : 1 , 5, 4, 0, 7, 4, 6, 10, 4, 5, 2, 0, 15, 1, 3, 2

 Décodage par LZW:

Pour effectuer la décompression du message codé, le récepteur utilise le dictionnaire de départ et


procède par une reconstruction du dictionnaire du message. Le décodage se fait comme suit:

 Lire le premier caractère et l’envoyer en sortie. Ce caractère est utilisé comme chaine
d’initialisation « P » pour l’étape suivante.

 Lire le symbole suivant « c » (qui représente l’entrée dans le tableau de décodage). Si la


juxtaposition « P⊕c » n’existe pas dans le dictionnaire faire:

 Ajouter au dictionnaire la sous-chaine la plus courte de « P⊕c » et qui n’existe pas


préalablement dans le dictionnaire.

Prof. Y. Chibani et Prof. H. Nemmour Page 28


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

 Envoyer le symbole « c » à la sortie.

 Utiliser « c » comme chaine d’initialisation pour l’étape suivante.

Le décodage de l’exemple 9 est donné dans le tableau suivant :

Symbole Chaine Caractère lu Chaine+Caractère Index Sortie


0  lu entrée
1 a
2 e
3 g
4 i
5 m
6 r
1 a a
5 a m am 7 m
4 m i mi 8 i
0 i  i 9 
7  am a 10 am
4 am i ami
a 11 i
6 i r ir 12 r
10 r a r 13 a
4 a i ai 14 i
5 i m im
i 15 m
2 m e me 16 e
0 e  e 17 
15  im i 18 im
1 im a ima 19 a
3 a g ag 20 g
2 g e ge 21 e

Message décodé: amiamiraimeimage

 Remarques :

 Pour terminer le codage avec LZW, on envoie toujours la position du dernier caractère.

 Plus le message est long, mieux est l’efficacité du LZW.

 Les positions peuvent être codées sur un nombre fixe de bits, mais l’algorithme est plus
efficace avec un nombre variable. On commence toujours par 9 bits, car 8 bits sont réservés
pour le code ASCII qui est très souvent utilisé comme dictionnaire initial du codage.

 Comparaison des méthodes de codage:

Prof. Y. Chibani et Prof. H. Nemmour Page 29


USTHB/FEI/ Licence Télécommunications/ Codage et Théorie de l’information / 2019-2020

Le taux de compression évalué sur des fichiers de 6MB de type texte, binaire et graphique a donné les
résultats ci-dessous:

Code Graphique Binaire Texte Moyenne


Huffman 27.22% 24.79% 40.38% 31.04%
LZW(12 bits fixe) 20.61% 15.07% 50.32% 29.20%
LZW(12 bits variable) 46.78% 36.61% 54.82% 45.81%

 Conclusion :

Dans ce chapitre, nous avons appris les notions fondamentales du codage source, notamment, les
propriétés d’un codage efficace et à déchiffrement unique. Nous avons étudié quelques algorithmes de
compression. Parmi ces algorithmes, le codage entropique par l’algorithme de Huffman permet une
compression sans perte avec des codes binaires.

Prof. Y. Chibani et Prof. H. Nemmour Page 30

Вам также может понравиться