04/02/2020
Codage et Compression
(codage de source)
Badreddine Rejeb, ISITCom
Introduction
• Notion de code au sens large :
Règle permettant de convertir une information
sous une forme différente de sa représentation
initiale
• Plusieurs grandes familles de codes :
⁻ les codes de communication (Morse, Baudot,...)
⁻ les codes de représentation (ASCII, UTF, Base64,…)
⁻ les codes de protection (Cryptographie ,…)
⁻ les codes de compression (“Théorie du codage”)
⁻ les codes d’identification (IBAN, EAN, Code-barres,...)
B. rejeb, ISITCom 2
1
04/02/2020
Codes d’identification
Code EAN-13 (European Article Numbering) :
Soit le code 764-915481257-7, vérification :
a) On calcule la somme des 12 premiers chiffres du code
après calcul des produits de chacun d’eux alternativement
avec 1 et 3
7*1+6*3+4*1+9*3+1*1+5*3+4*1+8*3+1*1+2*3+5*1+7*3=133
b) On détermine alors le modulo 10 de l’opposé du résultat
de cette somme :
(-133) mod 10 = 7,
ce qui correspond au check digit fourni.
B. rejeb, ISITCom 3
Codes d’identification
Code IBAN (International Bank Acount number)
Soit le code BE-43-068999999501, vérification :
a) On pratique dans un premier temps une rotation
circulaire de 4 caractères vers la gauche :
068999999501BE43
a) On convertit ensuite les lettres de la façon
suivante : A=10, B=11,. . .Z=35
068999999501111443
a) On calcule enfin le modulo 97 de ce nombre. S’il
est égal à 1, le check digit est valide :
068999999501111443 mod 97 = 1.
B. rejeb, ISITCom 4
2
04/02/2020
Les tables de caractères
Code ASCII (American Standard Code for Information Interchange, 1961)
• ASCII de base : 7 bits de données et 1 bit de parité
• ASCII étendu (Extended ASCII ) : sur 8 bits,
plusieurs variantes
(OEM 1.2 , ANSI 1.3)
Table code ASCII de base
B. rejeb, ISITCom 5
Les tables de caractères
EBCDIC (Extended Binary Coded Decimal Interchange Code)
créé par IBM
codage des caractères sur 8 bits
Table EBCDIC
B. rejeb, ISITCom 6
3
04/02/2020
Les tables de caractères
ISO 8859-1 / -15 (nommé Latin 1)
– Norme de l’International Organization for Standardization
– se compose de 191 caractères codés sur un octet.
– recouvre les caractères les plus utilisés dans les langues européennes
et dans une partie des langues africaines
B. rejeb, ISITCom 7
Les tables de caractères
ISO 8859-15
⁻ Ajout du caractère € et guillemets anglais
⁻ 218 caractères imprimables
Différence entre ISO 8859-1 et ISO 8859-15
B. rejeb, ISITCom 8
4
04/02/2020
Les tables de caractères
Unicode (en 1987):
• Un code universel sur 16 bits ou 32 bits, permettant
donc 216 ou 232 codes différents
• L’espace des codes s’étend de 0 à 0x10FFFF
• code ASCII + jeux complets de caractères coréens,
japonais, chinois, les symboles mathématiques et les
écritures anciennes
• Plusieurs formats d’encodage sont possibles UTF :
(Universal Transformation Format) :
⁻ UTF-8 : 8 bits
⁻ UTF-16 : 16 bits
⁻ UTF-32 : 32 bits
B. rejeb, ISITCom 9
Unicode UTF-8
UTF-8 : sur mots de 8 bits
• se présentent comme un octet ou une suite
d’octets. (maximum 4 octets au total)
• Lorsque le caractère se situe dans la plage
0x00 à 0x7F, il s’agit du code ASCII.
• Si non, un premier octet « lead byte » suivi
d’un nombre variable d’octets « trailing byte »
représentent la valeur à encoder.
B. rejeb, ISITCom 10
5
04/02/2020
Unicode UTF-8
• Bit de poids fort du « lead byte » toujours à 1,
et suivi d’autant de bit à 1 que de «trailing
byte».
Format du premier octet Nombre d’octets au total
110 . . . . . 2
1110 . . . . 3
11110 . . . 4
• Les bits remplacés par ’ . ’ dans le tableau ci-
dessus représente les bits disponibles pour la
valeur Unicode à encoder.
B. rejeb, ISITCom 11
Les tables de caractères : Unicode
• Toutefois, chaque « railing byte» doit avoir ses deux
premiers bits à 10. Chaque «trailing byte» possédera 6 bits
d’information.
Formats possibles Nombres de bits d’encodage
110..... 10...... 8 à 11 bits disponibles
1110.... 10...... 10...... 12 à 16 bits disponibles
11110... 10...... 10...... 10...... 17 à 21 bits disponibles
• 21 bits est suffisants pour Unicode.
• Par cette méthode d’encodage, un même caractère peut
avoir plusieurs représentations.
• Par exemple, le caractère ’/’ peut s’écrire :
0x2F, 0xC0 0xAF, 0xE0 0x80 0xAF ou 0xF0 0x80 0x80 0xAF
B. rejeb, ISITCom 12
6
04/02/2020
Unicode UTF-16
UTF-16 : sur mots de 16 bits
• Sous la forme de mots de 16 bits,
⁻ Si U < 0x10000, U est encodé comme un entier non signé sur 16
bits
⁻ Si non, Soit U’ = U - 0x10000.
U ≤ 0x10FFFF (plage de validité de Unicode),
U’ ≤ 0xFFFFF donc 20 bits sont donc nécessaires
⁻ Initialiser 2 entiers non signés de 16 bits, W1 et W2, aux valeurs
0xD800 et 0xDC00
Chaque entier possédera 10 bits libres, total 20 bits
⁻ Associer les 10 bits de poids forts de U’ aux bits libres de W1, et
les 10 bits de poids faibles de U’ à W2
• Une seule manière de représenter les données
mais 216 < 0x10FFFF, donc insuffisant
B. rejeb, ISITCom 13
Unicode UTF-32
• UTF-32 : sur mots de 32 bits
• Les code points sont ici représentés par une
valeur sur 32 bits ( 232 valeurs).
• Cette taille est suffisante pour représenter
tous les code points Unicode existants.
B. rejeb, ISITCom 14
7
04/02/2020
Les tables de caractères
Code Base64
• Utilisé pour la transmission de messages
• Utilise un alphabet de 64 caractères
• En entrée par groupe de 24 bits (3 octets)
• En sortie un bloc de 4 caractères (4*6 bits)
• Chaque groupe de 6 bits sert d’index dans
l’alphabet Base64
B. rejeb, ISITCom 15
Code Base64
• Si la séquence d’entrée inferieur à 24 bits
⁻ l’entrée fournit 8 bits (1 octet) : le bloc de 4
caractères en sortie sera composé de 2
⁻ caractères de la table base64 suivis de 2
caractères finaux (‘=‘ c’est-à-dire le 65ème
caractère).
⁻ l’entrée fournit 16 bits (2 octets) : le bloc de 4
caractères en sortie sera composé de 3caractères
de la table base64 suivis de 1 caractère final
B. rejeb, ISITCom 16
8
04/02/2020
Code Base64
Table Base64
B. rejeb, ISITCom 17
Code Base64
Exemple :
• Le mot “oui” est traduit sous forme binaire en :
’01101111 01110101 01101001’.
• On découpe ces 24 bits en blocs de 6 bits, il vient :
’011011 110111 010101 101001’.
• Sous forme décimale, on obtient ’27 55 21 41’, et en
substituant, il vient ’b3Vp’.
• Lorsqu’on utilise cet encodage dans le logiciel de
chiffrement de messages PGP, le résultat est ensuite
encodé au format ASCII.
• Ainsi, si on met le bit de parité à 0, la correspondance
de ’b3Vp’ est :
• ’01100010 00110011 01010110 01110000’.
B. rejeb, ISITCom 18
9
04/02/2020
Codage de source
Définition
Le codage de source vise à représenter
l’information à transmettre sous la forme
numérique la plus compacte possible.
Il s’agit donc de :
• numériser si elles sont analogique ,
• comprimer les données numériques, de
manière à réduire le débit de transmission ou
le volume de stockage
B. rejeb, ISITCom 19
Codage de source
Chaine de communication avec codage et décodage de source
B. rejeb, ISITCom 20
10
04/02/2020
Codage de Canal
Définition
Le codage de canal consiste à ajouter aux
message binaire des bits de redondance, de
telle sorte que le message codé ait une
structure particulière.
En réception, le décodeur de canal vérifie si
cette structure est bien respectée
B. rejeb, ISITCom 21
Codage de Canal
Place du codage de canal dans une chaine de communication
B. rejeb, ISITCom 22
11
04/02/2020
Théorie de l’information
• La théorie de l’information donne le cadre
mathématique aux codes compresseurs.
• Un alphabet est un ensemble fini qui sert à
former les messages
Exemple :
⁻ L’alphabet latin pour les textes
⁻ L’alphabet pour transmettre les messages
⁻ C = {0, 10, 110} est un code binaire de
cardinal 2, sur l’alphabet V = {0,1}
B. rejeb, ISITCom 23
Source et codage de source
Source discrète sans mémoire
La sortie d’une sources discrètes sans mémoire
est une séquence de lettres tirées dans un
alphabet fini {a1, . . . , aK}.
Chaque lettre de la séquence est statistiquement
indépendante des autre et obtenue d'après une
loi de probabilité fixe P(a1), . . . , P(aK).
Pour toute lettre ak, 1 ≤ k ≤ K, de la source, P(aK)
est la probabilité pour que cette lettre soit
produite, nous aurons donc
B. rejeb, ISITCom 24
12
04/02/2020
Source et codage de source
• Question:
Pourquoi modéliser une source d'information à
l'aide d'un processus aléatoire?
• Réponse :
Soit l’exemple d’une source d'information qui
fournit comme information l'une des quatre
lettres a1, a2, a3 et a4. Supposons que le codage
transforme cette information en symboles
binaires.
Dans la Table suivante, nous donnons deux
codages différents de cette source.
B. rejeb, ISITCom 25
Source et codage de source
• 1ère méthode, deux symboles binaires sont générés
pour chaque lettre émise,
• 2ème le nombre de symboles est variable.
• Si les quatre lettres sont équiprobables :
⁻ 1ère méthode est la meilleure : 2 symboles par
lettre en moyenne
⁻ 2ème 2,25 symboles.
B. rejeb, ISITCom 26
13
04/02/2020
Source et codage de source
• Pour une probabilité d’apparition
• 1ère méthode nécessite toujours 2 symboles
binaires par lettre en moyenne alors que la
• 2ème méthode n'en nécessite que 1,75
Donc, pour coder correctement une source
il faut connaître son comportement statistique
B. rejeb, ISITCom 27
Quantité d’Information et Entropie
• L'information propre de x doit être une fonction
de sa probabilité : I(x) = f(p(x))
• L'information de x est une fonction décroissante
de p(x) : en effet un évènement certain n'apporte
aucune information, alors qu'un évènement
improbable en apportera beaucoup
• Si les évènements x et y sont statistiquement
indépendants l'information est une grandeur
additive :
f(p(x, y)) = f(p(x)p(y)) = f(p(x)) + f(p(y)).
B. rejeb, ISITCom 28
14
04/02/2020
Quantité d’Information et Entropie
• donc choisir une fonction de la forme
I(x) = α log (p(x))
α < 0 pour assurer la décroissance par rapport à p(x)
• si X est un espace probabilisé dans l'espace des
épreuves {0, 1} , binaire, muni d'une loi uniforme
(i.e. p(0) = p(1) = 1/2), alors la quantité d'information
fournie par la réalisation de l'événement :
X = 0 (ou X = 1) est de 1 bit.
On a I(0) = α log p(0) = − α log(2) = 1,
donc α = −1/ log(2) ce qui revient à choisir le
logarithme en base 2 pour la définition de I(x) :
I(x) = −log2 (p(x)) et l’unité est donc le bit
B. rejeb, ISITCom 29
Quantité d’Information et Entropie
Exemple :
• Soit une source dont l'alphabet de sortie
{a0, . . . , a15} comprend 16 lettres équiprobables,
pour tout k, 0 < k < 16, P(ak) = 1/16.
• L'information propre de l'une de ces sorties ak :
I(ak) = −log2(1/16) = 4 bits.
• Dans ce cas, l'information va consister à choisir
un entier k dans {0,1,. . . ,15}, et pour représenter
cette information il faut disposer de 4 bits.
B. rejeb, ISITCom 30
15
04/02/2020
Quantité d’Information et Entropie
• Si les lettres de la source ne sont pas
équiprobables alors l'information de
l'événement ak :
I(ak) = −log2 p(ak) est différente de 4 bits
• La quantité d’information moyenne peut
être inférieure strictement à 4 bits.
Donc, Compression de données
B. rejeb, ISITCom 31
Quantité d’Information et Entropie
Définitions
1. Information propre (Quantité d’Information)
L'information propre d’un événement x définie par
I(x) = −log2 (p(x))
L'information propre s'interprète comme la
quantité d'information fournie par la réalisation d'un
événement .
Notons que : l'information propre est toujours positive ou nulle, et
que plus un événement est improbable, plus son information
propre est grande.
À l'inverse, lorsque p(x) = 1, on a I(x) = 0, c'est-à-dire que la
réalisation d'un événement certain n'apporte aucune information,
ce qui semble.
B. rejeb, ISITCom 32
16
04/02/2020
Quantité d’Information et Entropie
2. Entropie
L'entropie d'un espace probabilisé X est
défini par :
L’Entropie définit la
quantité d’Information mutuelle moyenne
B. rejeb, ISITCom 33
Quantité d’Information et Entropie
3. Longueur moyenne d’un code
Soit un codage des messages à partir d’un
alphabet de d caractères, tel qu’il existe une
correspondance non ambiguë entre chaque
message et son code alors,
La longueur moyenne d’un code est :
B. rejeb, ISITCom 34
17
04/02/2020
Quantité d’Information et Entropie
Théorème de Shannon
Soit une source S sans mémoire d’entropie H.
Tout code uniquement déchiffrable (décodage
unique) de S sur un alphabet V de taille d, de
longueur moyenne L, vérifie :
L ≥ H / log2(d)
De plus, il existe un code uniquement
déchiffrable de S sur un alphabet V de taille d,
de longueur moyenne L qui vérifie :
L < (H / log2(d)) +1
B. rejeb, ISITCom 35
Quantité d’Information et Entropie
Indépendance des messages
Soit un ensemble C de messages égal au
produit de 2 ensembles A et B indépendants.
Alors : H(C) = H(A) + H(B)
En effet :
B. rejeb, ISITCom 36
18
04/02/2020
Quantité d’Information et Entropie
Efficacité d’un système de codage
• D’après le théorème du codage de Shannon,
L ≥ H / log2(d)
Donc, soit E = H / (L*log2(d)) ≤ 1
Ce qui définit l’efficacité E d’un système
de codage.
• La redondance R est : R = 1 − E
B. rejeb, ISITCom 37
Quantité d’Information et Entropie
Théorème : Propriétés de l'entropie
Soit X un espace probabilisé discret de
cardinal K (nombre des mots de codes représentés en binaire).
Alors son entropie H(X) vérifie
H(X) ≤ log2 (K)
avec égalité si et seulement si la loi de
probabilité de X est uniforme.
B. rejeb, ISITCom 38
19
04/02/2020
Codage d'un alphabet discret
Soit un alphabet X discret (fini ou infini dénombrable).
X* désigne l'ensemble des séquences finies non
vides de lettres de X.
{0, 1}* l'ensemble des séquences binaires nies.
Définition 1
Un codage d'un alphabet discret est une procédure
qui associe à chaque séquence finie de lettres une
séquence binaire finie.
Un codage est une application de X* dans {0, 1}*.
B. rejeb, ISITCom 39
Codage d'un alphabet discret
Définition 2
Un code d'un alphabet discret est une
procédure qui associe à chaque lettre une
séquence binaire appelée mot de code.
Définition 3
Un code est régulier s'il est injectif (deux
lettres distinctes sont codées à l'aide de deux
mots de code distincts).
B. rejeb, ISITCom 40
20
04/02/2020
Codage d'un alphabet discret
Définition 4
Soit X = (X, PX) une source discrète sans
mémoire d'entropie H et soit ϕ un code de X.
La longueur moyenne de ϕ, notée L, est le
nombre de symboles binaires utilisés en
moyenne pour coder une lettre de la source :
L = ∑ L(x).PX(x)
L'efficacité de ϕ est dénie par :
E(ϕ) = H / L
B. rejeb, ISITCom 41
Codage d'un alphabet discret
Codes de longueur fixe
Un code de longueur xe est un code dont tous les
mots de code ont la même longueur. On parlera
de longueur du code.
Exemple :
Soit une source dont l'alphabet est l'ensemble des
chiffres décimaux X = {0, 1, . . . , 9} muni de la loi
de probabilité uniforme. Le code de longueur fixe
d'une telle source a une longueur au moins 4.
Par exemple :
B. rejeb, ISITCom 42
21
04/02/2020
Codage d'un alphabet discret
L'efficacité de ce code est égale à :
H(X)/4 = (log2 10)/4 = 0, 83.
Il est clair que ce code n'est pas optimal, puisque six
mots binaires de longueur 4 sont inutilisés, donc ce
code pourrait être utilisé pour une source ayant un
cardinal 16.
B. rejeb, ISITCom 43
Codage d'un alphabet discret
Il est cependant possible d'améliorer l'efficacité du codage en
considérant non plus des chiffres isolés mais des paires de chiffres.
• L’alphabet sera l'ensemble X2 = {00, 01, . . . , 99} de cardinal 100.
Si X est sans mémoire, la nouvelle source, notée X2 reste munie
d'une loi de probabilité uniforme, et son entropie vaut :
H(X2) = log2 100 = 2H(X).
• La puissance de 2 immédiatement supérieure à 100 est 27 = 128.
Il existe donc un code régulier de X2 de longueur 7.
• L'efficacité de ce code est cette fois égale à :
H(X2)/7 = (2 log2 10)/7 = 0, 95 ce qui est meilleur.
• En considérant la source X3 de 1000 lettres, codées en 10 symboles
binaires, on obtient une efficacité de 0, 996.
B. rejeb, ISITCom 44
22
04/02/2020
Exercice 1
Soit S la source d’alphabet {a, b, c, d} et de
probabilité :
U s1 = a s2 = b s3 = c s4 = d
P(U) 0.5 0.25 0.125 0.125
On code S avec le code suivant :
a b c d
0 10 110 111
1. Coder adbccab. Décoder 1001101010
2. Est-ce un code instantané ?
3. Calculer l’entropie de la source
Exercice 1 : Solution
1. Le mot de pour adbccab est :
011110110110010
Le mot de source pour 1001101010 est :
bacbb
2. On vérifie facilement en comparant tous les
mots deux à deux qu’aucun n’est préfixe d’un
autre. C’est donc un code instantané.
3. L’entropie de la source est H = 1,75
23
04/02/2020
Exercice 2
On veut construire un code compresseur binaire sur une
source S = (S,P) (supposée infinie) où S = (0, 1) est l’alphabet
source et P = (P(0) = p, P(1) = 1 − p) est la loi de
probabilité´e de S.
On propose le code suivant : on compte le nombre
d’occurrences de “0” avant l’apparition d’un “1”. Les deux
règles de codage sont :
– Une chaîne de quatre “0” consécutifs (sans “1”) est codée
par 0.
– Si moins de quatre “0” apparaissent avant un symbole
“1”, on code la chaîne par le mot de code “1e1e2”, où e1e2
est la représentation binaire du nombre de “0” apparus
avant le “1”.
Exercice 2
Par exemple, l’apparition de quatre zéros consécutifs “0000” est codée
par “0”, tandis que l’occurrence “001” est codé par “110” car deux
“0” sont apparus avant le “1” et que “10” est la représentation
binaire de deux.
1. Expliciter les 5 mots de code. Le code possède-t-il la propriété du
préfixe ?
2. Sachant que la probabilité d’apparition de deux symboles successifs
s1 et s2 est, dans notre cas o`u l’on suppose la source sans mémoire,
p(s1)*p(s2), calculer la probabilité d’occurrence dans S d’une chaîne
de k “0” suivis d’un “1”.
3. Pour chaque mot du code, calculer le nombre de bits de code
nécessaires par bit de source. En déduire le taux de compression
de ce code, c’est `a dire la longueur moyenne par bit de source.
24
04/02/2020
Exercice 2 : Solution
1. 0 n’est préfixe d’aucun autre mot de code, car ils commencent
tous par 1.
Tous les autres mots de code sont de la même longueur, ils ne
peuvent donc pas être préfixes les uns des autres.
Autre preuve : on peut dessiner un arbre de Huffman contenant
tous les mots de code.
2. P(0 . . . 01) = P(0) . . . P(0)P(1) = pk(1 − p)
3. Pour les mots de code (100, 101, 110, 111, 0), les rapports
(nombres de bits de code par bit de source) sont :
(3/1, 3/2, 3/3, 3/4, 1/4).
Le taux de compression est donc
T = 3(1 − p) + 3/2(1 − p)p + (1 − p)p2 + 3/4(1 − p)p3 + 1/4p4
= 3 − 3/2p − 1/2p2 − 1/4p3 − 1/2p4
Exercice 2 : Solution
1. 0 n’est préfixe d’aucun autre mot de code, car ils commencent
tous par 1.
Tous les autres mots de code sont de la même longueur, ils ne
peuvent donc pas être préfixes les uns des autres.
Autre preuve : on peut dessiner un arbre de Huffman contenant
tous les mots de code.
2. P(0 . . . 01) = P(0) . . . P(0)P(1) = pk(1 − p)
3. Pour les mots de code (100, 101, 110, 111, 0), les rapports
(nombres de bits de code par bit de source) sont :
(3/1, 3/2, 3/3, 3/4, 1/4).
Le taux de compression est donc
T = 3(1 − p) + 3/2(1 − p)p + (1 − p)p2 + 3/4(1 − p)p3 + 1/4p4
= 3 − 3/2p − 1/2p2 − 1/4p3 − 1/2p4
25
04/02/2020
Exercice 3 :
Cet exercice introduit des éléments théoriques
sur la valeur du code généré par l’algorithme
de Huffman. Soit la source S = (S,P), où S = (0,
1), et P(0) = 0.99 et P(1) = 0.01.
1. Calculer l’entropie de S.
2. Donner le code généré par l’algorithme de
Huffman sur la troisième extension S3.
Quel est son taux de compression ?
Exercice 3 : Solution
Le code issu de l’algorithme de Huffman est :
• L’entropie de S est
• Sa longueur moyenne est : L = 1.05, soit par bit
de source l = 0.35.
26
04/02/2020
Codes de longueur variable
Codage de Huffman
Supposons avoir 8 messages m1, ...,m8.
la probabilité d’occurrence est donnée par
p1 = p2 = ... = p8 = 1/8.
Si l’alphabet est {0,1}, alors :
d=2 et L ≥ 3/1 = 3
• Donc, le codage à 3 bits [000,001,...,111] est efficace1.
• Quand d=2 donc H(X) donne la longueur en bits pour
un codage non-redondant
B. rejeb, ISITCom 53
Codes de longueur variable : Huffman
Si on dispose d’une autre distribution P :
• Alors : H(X) = 127/64
• On obtient un codage non-redondant
où L < 2 bits
• Ce codage permet le décodage instantané
(caractère par caractère, sans attendre une séquence
entière. On parle de propriété préfixe : aucun mot de
code n’est préfixe d’un autre).
B. rejeb, ISITCom 54
27
04/02/2020
Codes de longueur variable : Huffman
Algorithme du codage de Huffman
1. Les messages constituent les feuilles d’un
arbre portant chacune un poids égal à la
probabilité P d’occurrence du message
correspondant
2. Joindre les 2 nœuds de moindre poids en un
nœud parent auquel on attache un poids égal
à la somme de ces 2 poids
B. rejeb, ISITCom 55
Codes de longueur variable : Huffman
3. Répéter le point 2 jusqu’à l’obtention d’une
seule racine à l’arbre
4. Affecter les codes 0 et 1 aux noeuds
descendants directs de la racine
5. Continuer à descendre en affectant des codes
à tous les nœuds, chaque paire de
descendants recevant les codes L0 et L1 où L
désigne le code associé au parent
B. rejeb, ISITCom 56
28
04/02/2020
Description : Algorithme de Huffman
B. rejeb, ISITCom 57
Description : Algorithme de Huffman
B. rejeb, ISITCom 58
29
04/02/2020
Codes de longueur variable : Huffman
Exemple 1 : Construction du code de Huffman
Étape suivante :
B. rejeb, ISITCom 59
Codes de longueur variable : Huffman
B. rejeb, ISITCom 60
30
04/02/2020
Codes de longueur variable : Huffman
B. rejeb, ISITCom 61
Codes de longueur variable : Huffman
• Exemple 2
• soit un ensemble de 3 messages a, b et c de
probabilité respective 0.6, 0.3 et 0.1.
• L’algorithme est :
B. rejeb, ISITCom 62
31
04/02/2020
Codage par substitutions
• Le codage de HUFFMAN est efficace quand il y a
un petit nombre de types de messages dont
quelques-uns couvrent une proportion
importante du texte (pi >> pj)
• Autrement, on effectue une compression en
remplaçant seulement des séquences choisies de
texte par des codes plus courts, plusieurs façons :
o parcourir le texte et remplacer les séquences
redondantes par des séquences plus courtes(RLE)
o analyser préalablement le texte pour déterminer les
groupes à remplacer et les codes qui les remplacent
(LZW)
B. rejeb, ISITCom 63
Codage par substitutions
Codage RLE (Run Length Encoding)
• élimine certaines séquences de caractères en
les remplaçant par un code spécifique.
• Chaque k éléments ( k ≥ 3 ) est remplacée par
un caractère non utilisé (ex : @) suivi de
l’entier k et du caractère substitué.
• Si tous les caractères sont utilisés, on en
choisit un rarement utilisé comme "indicateur"
et on le double quand on rencontre ce
caractère rare
B. rejeb, ISITCom 64
32
04/02/2020
Codage par substitutions : RLE
• Exemple 1
AB2000000394000005260DBBBBBBBA2
est remplacé par :
AB2@60394@505260D@7BA2
• Exemple 2
AB2000039444452600D666@A2
devient :
AB2@4039@4452600D@36@@A2
B. rejeb, ISITCom 65
Codage par substitutions
Bit-map
• Soit un enregistrement de 4 champs de 8
caractères
• Le principe est d’utiliser une bit-map devant
chaque enregistrement pour indiquer la présence
ou l’absence de valeur dans les différents champs
• Exemple
B. rejeb, ISITCom 66
33
04/02/2020
Les algorithmes à dictionnaire
• Consistent à remplacer des séquences par
un code plus court qui est l’indice de ce
facteur dans un dictionnaire
• Le dictionnaire n’est qu’une portion du
texte encodé précédemment.
• L’encodeur examine le texte à compresser
par l’intermédiaire d’une fenêtre glissante
• EXP. LZ77, LZ78, LZW (Lempel, Ziv, Welch)
B. rejeb, ISITCom 67
Les algorithmes à dictionnaire
LZ78 (GZIP, PKZIP, 1978)
• Les séquences codées ont la forme d’un
couple (i,c),
o i est l’index de l’entrée dans le dictionnaire
correspondant à la plus longue chaîne
semblable à la dite séquence à coder,
o c, le caractère suivant la séquence dans le flux
d’entrée.
o Si la séquence n’a pas de correspondance
dans le dictionnaire, i est égal à 0, et le couple
est ajouté au dictionnaire
B. rejeb, ISITCom 68
34
04/02/2020
Les algorithmes à dictionnaire
• Exemple de dictionnaire
B. rejeb, ISITCom 69
Les algorithmes à dictionnaire
LZW (ZIP, 1984)
• Principe :
Réduire l’envoi de l’informations au
décodeur.
o Au lieu du couple (i,c)
o Seul l’index « i » sera transmis.
B. rejeb, ISITCom 70
35
04/02/2020
Les algorithmes à dictionnaire : LZW
• Algorithme :
o On initialise le dictionnaire en y plaçant les
codes des caractères ASCII étendu (256
caractères)
o On regarde le caractère à transmettre :
- s’il existe déjà dans la table, on regarde le
caractère suivant,
- si le groupe des deux existe également,
on regarde le suivant…
B. rejeb, ISITCom 71
Les algorithmes à dictionnaire : LZW
o Lorsqu’un nouveau groupe est découvert, on le
définit en l’insérant dans le dictionnaire.
- Dans un premier temps, on transmet les codes
des morceaux qui le composent.
- La prochaine fois qu’on le rencontrera,
on transmettra son code propre.
- Les mots ajoutés au dictionnaire seront
déterminés par l’intermédiaire d’une "fenêtre«
évoluant au fil de l’analyse du texte à compresser
o On procède de la sorte jusqu’à la fin de la
transmission.
B. rejeb, ISITCom 72
36
04/02/2020
Algorithme LZW : Compression
B. rejeb, ISITCom 73
Algorithme LZW : Décompression
B. rejeb, ISITCom 74
37
04/02/2020
Les algorithmes à dictionnaire : LZW
• Exemple
Soit le message à compresser : "ma maison"
1. Le premier caractère a analysé est "m". Il est dans le
dictionnaire.
2. Le caractère suivant est concaténé avec "m" forme la
chaine "ma"
- N’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 256 dans le dictionnaire
- On envoie la valeur correspondante à "m" (109)
Le code : 109
B. rejeb, ISITCom 75
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
3. On reprend au dernier caractère pris en compte "a"
- Concaténation avec le caractère suivant on a la
chaine "a " (a-espace).
- n’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 257 dans le
dictionnaire
- On envoie la valeur correspondante à "a" (97)
Le code : 109 – 97
B. rejeb, ISITCom 76
38
04/02/2020
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison«
4. On reprend alors au dernier caractère pris en compte
(ici " ")
- Concaténation avec le caractère suivant on la
chaine " m"
- N’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 258 dans le
dictionnaire.
- On envoie la valeur correspondante à " "(32)
Le code : 109 – 97 – 32
B. rejeb, ISITCom 77
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
5. On reprend alors au dernier caractère pris en compte
("m").
- Concaténation avec le caractère suivant on la chaine
"ma".
- Chaine déjà dans le dictionnaire.
- Concaténation avec le caractère suivant on la chaine
"mai".
- N’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 259 dans le dictionnaire.
- On envoie donc la valeur correspondante à "ma" 256
Le code : 109 – 97 – 32 – 256
B. rejeb, ISITCom 78
39
04/02/2020
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
6. On reprend alors au dernier caractère pris en
compte (ici "i").
- Concaténation avec le caractère suivant on la
chaine "is".
- N’est pas dans le dictionnaire : il faut donc l’ajouter.
- On lui affecte donc l’entrée 260 dans le
dictionnaire.
- On envoie la valeur correspondante à "i" (105)
Le code : 109 – 97 – 32 – 256 – 105
B. rejeb, ISITCom 79
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
7. On reprend alors au dernier caractère pris en compte
(ici "s")
- Concaténation avec le caractère suivant on la
chaine "so".
- N’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 261 dans le
dictionnaire.
- On envoie la valeur correspondante à "s". (115)
Le code : 109 – 97 – 32 – 256 – 105 – 115
B. rejeb, ISITCom 80
40
04/02/2020
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
8. On reprend alors au dernier caractère pris en compte
(ici "o").
- Concaténation avec le caractère suivant on la
chaine "on".
- N’est pas dans le dictionnaire : il faut donc l’ajouter
- On lui affecte donc l’entrée 262 dans le
dictionnaire.
- On envoie la valeur correspondante à "o" (111)
Le code : 109 – 97 – 32 – 256 – 105 – 115 – 111
B. rejeb, ISITCom 81
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
9. On reprend alors au dernier caractère pris en compte
(ici "n").
-Concaténation avec le caractère suivant on la
chaine "n(eof)".
- N’est pas dans le dictionnaire : il faut donc l’ajouter.
- Etant donné le caractère spécifique de fin de
fichier, il n’est pas ajouté au dictionnaire.
- On envoie la valeur correspondante à "n" (110)
Le code : 109 – 97 – 32 – 256 – 105 – 115 – 111 – 110
B. rejeb, ISITCom 82
41
04/02/2020
Les algorithmes à dictionnaire : LZW
Message à compresser "ma maison"
• Au final, le flux compressé sera :
(109)(97)(32)(256)(105)(115)(111)(110)
• Lors de la décompression, le décodage se
fera de manière inverse
B. rejeb, ISITCom 83
42