Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
44
Transmission : un débit de 1.2 Gbit/s est nécessaire pour transférer une vidéo full HD. 45
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Nécessité de la compression Nécessité de la compression
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Types des algorithmes de compression Types des algorithmes de compression
Compression avec pertes (lossy)
Compression sans pertes (lossless)
Méthodes irréversibles : les données obtenues après décompression sont différentes (légèrement) de
Méthodes réversibles : les données obtenues après décompression sont strictement identiques
celles avant compression.
aux données avant compression.
Un taux de compression élevé.
Un taux de compression faible.
Exploitent la redondance des données et la perception humaine pour éliminer le maximum
Exploitent la redondance des données ou utilisent une transformation réversible.
d’informations et avoir le meilleur taux de compression possible.
Exemples d’algorithmes :
Autorisent un taux de perte de l’information au profit du taux de compression.
Codage à répétition : par ex. RLE (Run Length Encoding) La dégradation peut être contrôlée selon la qualité qu’on souhaite obtenir et le taux de
Codage entropique : basé sur le codage à longueur variable en anglais Variable Length compression choisi.
Coding (VLC) tels que le codage de Huffman, codage arithmétique, etc. Applications cibles : applications autorisant un certain taux de perte de l’information (par ex. son,
Applications cibles : applications où la précision est majeure (aucune perte d’information n’est images, vidéo, etc.).
permise) telles que imagerie médicale (IRM par ex.), télédétection (imagerie satellite par ex.), etc. 50 Exemples d’algorithmes : codage par transformation (DCT, transformé en ondelettes), JPEG, etc. 51
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Mesures des performances: Evaluation de la compression et des pertes Codage de source
Mesures du taux de compression : Contexte :
Taille données compressées Soit une source S qui génère des séquences de données numériques (pixels, caractères,
Taux de compression Tc : % =
Taille données originales
échantillons, etc.) composées d’un ensemble de symboles.
Taille données originales 1
Quotient de compression Qc : % = = Les symboles appartiennent à un alphabet de taille N : A = { a1 , a2 , , aN } , N =|A|.
Taille données compressées
Gain de compression Gc : % =1 − s = (s1 , s2 , … , sK) : séquence générée par la source où si ϵ A, Ɐ i ϵ [1...K].
Mesure objective de distorsion (cas de compression avec perte) : Quantifier la perte Le codage de source consiste à associer à chaque symbole si une séquence
Soit une image I (non compressée), de taille WxH : est I après compression et décompression d’éléments de l’alphabet q-aire de destination, appelée mot du code mi.
Erreur quadratique moyenne (en anglais Mean Square Error)
,
MSE = Rapport signal sur bruit (Peak Signal-Noise Ratio) : ∑ , , − , Définition : la compression sans perte de s a pour but de déterminer le minimum de
∗
bits permettant de représenter s sans aucune perte de l’information.
$%
= 10!"# où d est la valeur maximale (ex. 255).
&'(
52 53
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage sans perte Codage à longueur fixe
Exemples de codes à longueur fixe : ASCII, UNICODE, code bitmap pour les images, etc.
Principe:
Codage à longueur fixe :
• À chaque symbole de la source correspond un mot de code binaire de longueur fixe de n bits.
ASCII, UNICODE, • n doit être : 2* ≤ |A| < 2*+
n : est l’unique entier tel que : log2(|A|) ≤ n < 1+log2(|A|)
Codage par décorrélation (par répétition) : Run-Length Encoding(RLE), codage
• Décodage simple sachant n.
topologique. Exemple
• A = {a, b, c, d, e} |A| = 5 log2(5) ≤ n < 1+log2(5)
le nombre de bits nécessaire pour coder les symboles de A est : n = 3.
Codage à longueur variable :
• Exemple de codage : Symbole Code
a 000
Codage entropique : Huffman, Shannon-Fano, Codes arithmétiques, etc.
b 001
Codes à base de dictionnaire : Lempel-Ziv (LZ77, LZW). C 010
D 011
54 55
E 100
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur fixe : Codage RLE (Running Length Encoding) Codage à longueur fixe: Codage RLE (Running Length Encoding)
Principe : Compression par encodage de répétition des motifs:
Exemples
Toute suite de bits ou de caractères identiques est remplacée par un couple (nombre
Exemple 3 : Application aux images monochrome: dans une image codée sur 1 bit, les
d’occurrences ; bit ou caractère répété).
pixels de l'image peuvent prendre 2 valeurs soit le noir (codée par 1) soit le blanc (codé
Le résultat comporte en général moins de caractères, bien que ce ne soit pas une
par 0). La séquence de pixels
obligation.
Exemples o séquence non compressée : 1111111100000000000000001111111100000000
Exemple 1 : séquence non compressée : ABBBBCAM o séquence compressée : 811608180
o séquence compressée : 1A4B1C1A1M Exemple 4 :
∗, ,
o Taux de compression : = = = 1.25
,∗, -. o séquence non compressée : 0000000000001101
Exemple 2 : séquence non compressée : JJMMMMMEDDDD
o séquence compressée : 2J5M1E4D o séquence compressée : 120211011
,∗, -.
o Taux de compression : = ∗,
= = 0.66
/- 56 57
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur fixe: Codage RLE (Running Length Encoding) Codage à longueur variable
67 = 3 1 !
2
67 ≤ 1 +
!"# ;
où li est la longueur du code du symbole si . 60 61
9 Le codage sans pertes des symboles d’une source S nécessite en moyenne H(S) bits/symbole.
Efficacité d’un code : 8 = 7
:
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Mesure de l’information Codage à longueur variable : Méthodes statistiques
Codage de Huffman
Exemple :
Le codage de Huffman est appelé aussi codage entropique (Entropy coding)
Alphabet A = {a, b, c, d}
Principe:
Séquence : s = (a, d, a, a, b, c, a, c)
Codage à longueur variable (en anglais VLC pour Variable Length Coding) préfixé :
@ F G F
>? = = B. D , >E = = B. FGD, >H = = B. GD, et >I = = B. FGD coder les symboles avec un nombre de bits différent.
A A A A
J = − !"# p K =1, IM = 3 , IN = 2 , et O =3 aucun code n’est le préfixe d’un autre Le décodage est alors immédiat.
H(A) = − ∑. p K !"# p K = 1.75 bits par symbole. consiste à remplacer les symboles les plus fréquents par des codes courts et les symboles
les moins fréquents par des codes longs.
Longueur minimale moyenne du code : 1.75 bits.
Crée un arbre ordonné à partir de tous les symboles et de leur fréquence d’apparition tel
que les branches sont construites récursivement en partant des symboles les moins
62 63
fréquents.
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable: Méthodes statistiques Codage à longueur variable : Méthodes statistiques
Algorithme de Huffman: Codage
Algorithme de Huffman :
Phase 1 : construction de l’arbre
Exemple :
1. Calculer le nombre d’occurrences de chaque symbole.
Message : "BELLE JOURNEE"
2. Trier les différents symboles par ordre décroissant de leur nombre d’occurrences. construire
Table des poids : Si E L B " " J O U R N
la table des poids. Ni 4 2 1 1 1 1 1 1 1
3. Fusionner les deux poids minimaux dans un arbre binaire et affecter leur somme à la racine.
Construction de l’arbre (étape 1) :
4. Réordonner la table de poids par poids décroissants.
5. Recommencer à l’étape 3 jusqu’à obtenir un seul arbre.
Phase 2 : construction du code
1. À partir de la racine, attribuer des 0 à chaque sous-arbres de gauche et 1 à celui de droite.
2. Le code de chaque symbole correspond à la suite des codes le long du chemin allant de ce
caractère à la racine.
64 65
Plus le symbole est "profond" dans l’arbre, plus son mot de code sera long.
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes statistiques Codage à longueur variable : Méthodes statistiques
Algorithme de Huffman : Algorithme de Huffman :
Exemple : Exemple :
Message : "BELLE JOURNEE" Message : "BELLE JOURNEE"
Table des poids : Si E L B " " J O U R N Table des poids : Si E L B " " J O U R N
Ni 4 2 1 1 1 1 1 1 1 Ni 4 2 1 1 1 1 1 1 1
Construction de l’arbre (étape 2) : Construction de l’arbre (étape 3) :
66 67
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes statistiques Codage à longueur variable : Méthodes statistiques
68 69
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes statistiques Codage à longueur variable : Méthodes statistiques
70 71
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes statistiques Codage à longueur variable : Méthodes statistiques
Algorithme de Huffman : Algorithme de Huffman :
Exemple :
Exemple : Construction de l’arbre + code :
Construction de l’arbre (étape 8) :
Associer des 0 aux branches de gauche de l’arbre et des 1 aux branches de droite.
72 73
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes statistiques Codage à longueur variable : Méthodes statistiques
Algorithme de Huffman : Exemple : Algorithme de Huffman:
Message : "BELLE JOURNEE" Avantages :
Si E L B " " J O U R N
Table des poids : Aucun code n’est le préfixe d’un autre décodage non ambigu
Ni 4 2 1 1 1 1 1 1 1
Construction de l’arbre + code : Inconvénients :
Lire tout le fichier avant de comprimer.
Pour décomprimer il faut connaître les codes et donc la table, qui est ajoutée devant le
fichier, aussi bien pour transmettre que stocker, ce qui diminue la compression, surtout pour les
petits fichiers.
Plusieurs variantes de Huffman existent pour supprimer ces défauts.
Code: Si E L B " " J O U R N La probabilité des symboles peut ne pas être connue et peut aussi changer avec le temps.
74 75
Code 00 010 0110 0111 100 101 1100 1101 111
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes de codage à base de dictionnaire Codage à longueur variable : Méthodes de codage à base de dictionnaire
Codage avec les algorithmes de type Lempel-Ziv-Welch (LZW) :
L’algorithme de codage de type Lempel-Ziv-Welch (LZW) :
Données : M[1..n] : un tableau de n caractères qui représente le message à coder.
Objectif : compresser l’effet mémoire qui peut exister dans les données.
Résultat : le tableau C encodant la liste de caractères du message M selon la méthode LZW.
Principe: utilisation d’un dictionnaire et remplacement des mots répétés par leur Algorithme:
Initialement, le dictionnaire comprend tous les caractères de la table ASCII. Les index de 0 à 255 sont
indice dans le dictionnaire :
donc occupés. Le dictionnaire est ensuite complété lorsque de nouvelles suites de caractères apparaissent.
Construire un dictionnaire dynamique au fur et à mesure de la lecture du fichier.
Soit h la mémoire (historique) et initialisé avec le caractère chaîne vide et i = 1.
Ce dictionnaire référence chaque mot rencontré. Si le mot est déjà dans le On a lu un mot s du texte on lit ensuite le caractère M[i] qui suit s dans le texte, alors
dictionnaire, on le remplace par sa position dans le dictionnaire. Si la concaténation hM[i] n’est pas présente dans le dictionnaire, on écrit l’indice de h dans le
Le dictionnaire n’est pas transmis avec le fichier encodé : le décodeur doit le fichier et sortie, on ajoute hM[i] dans le dictionnaire et on continue avec M[i] pour nouvelle valeur
de h.
reconstruire de la même façon.
76 Si hM[i] est déjà présent dans le dictionnaire, on continue avec hM[i] pour nouvelle valeur pour 77
h.
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes de codage à base de dictionnaire Codage à longueur variable : Méthodes de codage à base de dictionnaire
h M[i] u = h+M[i] Ajout dans C Ajout dans D
Exemple de codage avec l’algorithme LZW :
A A
Données :
Fonction CodeLZW(M , D) M = A O B E O R N O AA O B E O R T A O AO A AO = <256>
Exemple de codage avec l’algorithme LZW :
h "" D : dictionnaire composé par les codes ASCII O B OB O OB = <257>
Données : i 1 des 256 caractères (8-bits) B E BE B BE = <258>
Tant que (i <= n) Faire Résultat : C: tableau des codes des caractères du
M = A O B E O R N O AA O B E O R T tableau M selon la méthode LZW.
E O EO E EO = <259>
u Concaténer(h, M[i]) Fonction CodeLZW(M , D) O R OR O OR = <260>
D : dictionnaire composé par les codes Si (u є D) Alors h "" R N RN R RN = <261>
ASCII des 256 caractères (8-bits) h u i 1 N O NO N NO = <262>
Sinon Tant que (i <= n) Faire
O A OA O OA = <263>
Résultat : C: tableau des codes des caractères u Concaténer(h, M[i])
Ajouter(u, D) Si (u є D) Alors A A AA A AA = <264>
du tableau M selon la méthode LZW. C[i] s h u A O AO
h M[i] Sinon AO B AOB <256> AOB = <265>
La longueur de cette chaîne est de 16 caractères. Ajouter(u, D)
i i+1 B E BE
Elle nécessite donc 16 * 8 = 128 bits d’espace C [i] h
Fin tant que BE O BEO <258> BEO = <266>
de stockage h M[i]
C[i] h i i+1 O R OR
78 Fin tant que OR T ORT <260> ORT = <267> 79
C [i] h
T
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes de codage à base de dictionnaire Codage à longueur variable : Méthodes de codage à base de dictionnaire
Exemple :
LZW : algorithme de décodage : le décodage est symétrique au codage, le
Séquence compressée C composée de codes de 9 bits sur la sortie :
dictionnaire est reconstruit pendant le décodage
C = AOBEORNOA<256><258><260>T Lire un indice i dans le fichier compressé (C[i])
Elle nécessite 13*9 = 117 bits d’espace de stockage, au lieu des Ecrire dans le fichier de sortie (M) le mot w du dictionnaire d’indice i
Ajouter dans le dictionnaire D le mot wa où a est la première lettre du
16 * 8 = 128 bits de la chaine originale.
facteur décodé suivant.
P
= = 0.91
,
80 81
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes de codage à base de dictionnaire Codage à longueur variable : Méthodes de codage à base de dictionnaire
Exemple de décodage avec l’algorithme LZW :
Données : Initialisation:
LZW : algorithme de décodage C = AOBEORNOA<256><258><260>M
D : dictionnaire des codes ASCII des 256 caractères c h Entrée M D
Fonction DecodeLZW ( C , D ) Résultat : T: tableau des caractères correspondants aux
A A A
n |C| codes du tableau C selon la méthode LZW.
c C [1] Fonction DecodeLZW ( C , D )
M[1] D[c] n |C|
h D[c] c C[1]
Pour i de 2 à n Faire M[1] D[c] Etape 1: i =2
c C[i] h D[c]
Pour i de 2 à n Faire c h Entrée M D
Si Existe ( c , D ) Alors
c C[i] A A A
entrée D[c]
Si Existe ( c , D ) Alors
Sinon entrée D[c] O A O O AO=<256>
entrée Concaténer ( h , c[1] ) Sinon
M[i] entrée entrée Concaténer ( h , c[1] )
Ajouter ( Concaténer ( h , entrée[1]) , D ) M[i] entrée
h entrée Ajouter ( Concaténer ( h , entrée[1]) , D )
Fin Pour 82
h entrée 83
Fin Pour
Chapitre 3 : Théorie de l’information et codage binaire Chapitre 3 : Théorie de l’information et codage binaire
Codage à longueur variable : Méthodes de codage à base de dictionnaire Codage à longueur variable : Méthodes de codage à base de dictionnaire
Exemple de décodage avec l’algorithme LZW :
Données : c h Entrée M D
C = AOBEORNOA<256><258><260>M Codage avec les algorithmes de type Lempel-Ziv-Welch (LZW) :
A A A
D : dictionnaire des codes ASCII des 256 caractères
Résultat : T: tableau des caractères correspondants aux O A O O AO=<256> Avantages:
codes du tableau C selon la méthode LZW.
B O B B OB=<257>
Fonction DecodeLZW ( C , D ) Très efficace pour tout type de fichiers.
n |C| E B E E BE=<258>
c C[0] Paramétrable : ratio temps/taux de compression réglable.
O E O O EO=<259>
M[0] D[c]
h D[c] R O R R OR=<260> Plusieurs variantes existent (LZ77, LZ78, LZW, LZMA, etc.)
Pour i de 2 à n Faire N R N N RN=<261> Applications : Implémenté dans de nombreux logiciels :
c C[i]
O N O O NO=<262>
Si Existe ( c , D ) Alors le format d’image png implémente une compression qui couple une compression de
entrée D[c] A O A A OA=<263>
Sinon type LZW avec un codage de Huffman
256 A AO AO AA=<264>
entrée Concaténer ( h , c[0] )
M[i] entrée 258 AO BE BE AOB=<265> Le LZW est aussi utilisé pour la compression des images au format GIF.
Ajouter ( Concaténer ( h , entrée[0]) , D ) 260 BE OR OR BEO=<266>
84 85
h entrée
Fin Pour M OR M M ORM=<267>