Support 1 Cours
Support 1 Cours
Support 1 Cours
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 :
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
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
Table EBCDIC
B. rejeb, ISITCom 6
3
04/02/2020
B. rejeb, ISITCom 7
B. rejeb, ISITCom 8
4
04/02/2020
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
B. rejeb, ISITCom 11
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
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
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
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
B. rejeb, ISITCom 24
12
04/02/2020
B. rejeb, ISITCom 25
B. rejeb, ISITCom 26
13
04/02/2020
B. rejeb, ISITCom 27
B. rejeb, ISITCom 28
14
04/02/2020
B. rejeb, ISITCom 30
15
04/02/2020
B. rejeb, ISITCom 32
16
04/02/2020
L’Entropie définit la
quantité d’Information mutuelle moyenne
B. rejeb, ISITCom 33
B. rejeb, ISITCom 34
17
04/02/2020
En effet :
B. rejeb, ISITCom 36
18
04/02/2020
B. rejeb, ISITCom 37
B. rejeb, ISITCom 38
19
04/02/2020
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
B. rejeb, ISITCom 40
20
04/02/2020
B. rejeb, ISITCom 42
21
04/02/2020
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
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.
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.
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
B. rejeb, ISITCom 53
B. rejeb, ISITCom 54
27
04/02/2020
B. rejeb, ISITCom 55
B. rejeb, ISITCom 56
28
04/02/2020
B. rejeb, ISITCom 57
B. rejeb, ISITCom 58
29
04/02/2020
Étape suivante :
B. rejeb, ISITCom 59
B. rejeb, ISITCom 60
30
04/02/2020
B. rejeb, ISITCom 61
B. rejeb, ISITCom 62
31
04/02/2020
B. rejeb, ISITCom 63
32
04/02/2020
B. rejeb, ISITCom 66
33
04/02/2020
B. rejeb, ISITCom 68
34
04/02/2020
B. rejeb, ISITCom 69
B. rejeb, ISITCom 70
35
04/02/2020
36
04/02/2020
B. rejeb, ISITCom 73
B. rejeb, ISITCom 74
37
04/02/2020
Le code : 109 – 97
B. rejeb, ISITCom 76
38
04/02/2020
39
04/02/2020
40
04/02/2020
41
04/02/2020
B. rejeb, ISITCom 83
42