Vous êtes sur la page 1sur 25

Compression de donnes

PEREIRA Vincent - LEPRETTE Franck - HACAULT Vincent


Dcembre 2004
Table des matires
1 Introduction 2
2 Gnralits sur la compression 3
2.1 Dnition et intrt de la compression . . . . . . . . . . . . . . . 3
2.1.1 Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Intret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Classication des algorithmes de compression . . . . . . . . . . . 4
2.2.1 Compression symtrique / asymtrique . . . . . . . . . . 4
2.2.2 Compression physique / logique . . . . . . . . . . . . . . . 5
2.2.3 La compression statistique / numrique . . . . . . . . . . 5
2.2.4 La compression sans / avec perte . . . . . . . . . . . . . . 5
2.2.5 Performances et ecacit . . . . . . . . . . . . . . . . . . 6
3 Compression de type statistique : codage de Human 8
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Principe de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Table de frquence dapparition . . . . . . . . . . . . . . . 9
3.2.2 Construction de larbre de Human . . . . . . . . . . . . 10
3.2.3 Compression / Dcompression . . . . . . . . . . . . . . . 13
3.2.4 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 Performances sur lexemple . . . . . . . . . . . . . . . . . 15
3.3.2 Performances gnrales . . . . . . . . . . . . . . . . . . . 15
3.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Compression de type Dictionnaire 17
4.1 Exemples de compressions intuitives de type dictionnaire . . . . . 17
4.1.1 Compression de texte multi-dictionnaires . . . . . . . . . 17
4.1.2 Compression de texte multi-langages . . . . . . . . . . . . 17
4.2 Lalgorithme LZW . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1 Historique des algorithmes LZ** . . . . . . . . . . . . . . 18
4.2.2 Le principe . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.3 Lalgorithme de compression . . . . . . . . . . . . . . . . 18
4.2.4 Lalgorithme de dcompression . . . . . . . . . . . . . . . 21
4.2.5 Ecacit de lalgorithme LZW . . . . . . . . . . . . . . . 22
4.2.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Conclusion 24
1
Chapitre 1
Introduction
La compression des donnes est un vaste sujet qui a fait lobjet de nombreux
ouvrages et articles. Elle donne lieu aujourdhui de nombreuses recherches en
raison des enjeux conomiques. Elle est utilise majoritairement dans les appli-
cations informatiques et elle est une des conditions dexistence du multimdia.
Lutilisation de la compression et sa mise en pratique ncessitent des connais-
sances nombreuses et complexes tels que le calcul intgral, lalgbre linaire, la
gomtrie fractale, la thorie des probabilits Dans cet expos, nous allons
ouvrir un champ de rexion en indiquant tout dabord quelles sont les mthodes
gnrales utilises aujourdhui pour compresser les donnes puis dans un second
temps, nous allons prsenter deux mthodes trs utilises dans la compression
des donnes.
2
Chapitre 2
Gnralits sur la
compression
2.1 Dnition et intrt de la compression
2.1.1 Dnition
La compression consiste rduire la taille physique de blocs dinformations.
Elle est trs utile pour plusieurs applications informatiques.
Les dirents algorithmes de compression sont bass sur 3 critres :
Le taux de compression : cest le rapport de la taille du chier com-
press sur la taille du chier initial.
La qualit de compression : sans ou avec pertes (avec le pourcentage
de perte).
La vitesse de compression et de dcompression.
Un compresseur utilise un algorithme qui sert optimiser les donnes en
fonction du type de donnes compresser ; un dcompresseur est donc nces-
saire pour reconstruire les donnes grce lalgorithme dual de celui utilis pour
la compression.
La mthode de compression dpend du type de donnes compresser car une
image ou un chier audio ne reprsentent pas le mme type de donnes.
2.1.2 Intret
De nos jours, la puissance des processeurs augmente plus vite que les capaci-
ts de stockage, et normment plus vite que la bande passante des rseaux (car
cela imposerait dnormes changements dans les infrastructures de tlcommu-
nication).
Il y a donc un dsquilibre entre le volume des donnes quil est possible de
traiter, de stocker, et de transfrer.
Par consquent, il faut donc rduire la taille des donnes. Pour cela, il faut
exploiter la puissance des processeurs, pour pallier aux insusances des capaci-
ts de stockage en mmoire et des vitesses de transmission sur les rseaux.
3
Exemples
Choisissons une squence vido avec les caractristiques suivantes :
25 images par seconde,
16 millions de couleurs (soit 3 octets par pixel),
Rsolution de 640 x 480.
Sans compression, il faudrait un dbit de 23 Mo/s (25 x 3 x 640 x 480), et
pour donner un ordre dide, cela reprsente un dbit 130 fois plus important
que celui dun lecteur de CD-ROM simple vitesse (150 Ko/s). De plus, si on
souhaite stocker 2 heures de vido, il nous faudrait une unit de stockage de 162
Go (quivalent 34 DVD de 4,7 Go).
Un autre exemple trs courant dutilisation de la compression est pour le
transport dans les rseaux cabls (minitel, internet), et sans l (communication
par satellite, tlphone portable).
Dans le domaine de la compression, il existe plusieurs faons de comparer
les types de compression. Pour cette raison, nous allons voir comment classier
les algorithmes de compression.
2.2 Classication des algorithmes de compression
2.2.1 Compression symtrique / asymtrique
Dans le cas de la compression symtrique, la mme mthode est utilise
pour compresser et dcompresser linformation, il faut donc la mme quantit
de travail pour chacune de ces oprations. Cest ce type de compression qui est
gnralement utilise dans les transmissions de donnes.
La compression asymtrique demande plus de travail pour lune des deux
oprations, la plupart des algorithmes requiert plus de temps de traitement
pour la compression que pour la dcompression. Des algorithmes plus rapides en
compression quen dcompression peuvent tre ncessaires lorsque lon archive
des donnes auxquelles on accde peu souvent (pour des raisons de scurit par
exemple).
Compression de type symtrique.
4
2.2.2 Compression physique / logique
On considre gnralement la compression comme un algorithme capable
de comprimer des donnes dans un minimum de place (compression phy-
sique), mais on peut galement adopter une autre approche et considrer quen
premier lieu un algorithme de compression a pour but de recoder les donnes
dans une reprsentation dirente plus compacte contenant la mme informa-
tion (compression logique).
La distinction entre compression physique et logique se base sur la faon dont les
donnes sont compresses ou plus prcisment comment est-ce que les donnes
sont rarranges.
La compression physique est excute exclusivement sur les informations
contenues dans les donnes. Cette mthode produit typiquement des rsultats
incomprhensibles qui apparemment nont aucun sens. Le rsultat dun bloc de
donnes compresses est plus petit que loriginal car lalgorithme de compression
physique a retir la redondance qui existait entre les donnes elles-mmes.
La compression logique est accomplie travers le processus de substitution
logique qui consiste remplacer un symbole alphabtique, numrique ou binaire
en un autre. Changer "United State of America" en "USA" est un bon exemple
de substitution logique car "USA" est driv directement de linformation conte-
nue dans la chane "United State of America" et garde la mme signication. La
substitution logique ne fonctionne quau niveau du caractre ou plus haut et est
base exclusivement sur linformation contenue lintrieur mme des donnes.
2.2.3 La compression statistique / numrique
On peut encore distinguer les algorithmes qui travaillent au niveau statis-
tique et ceux qui oprent au niveau numrique.
Pour les premiers, la valeur des motifs ne compte pas. Ce sont les probabilits
qui comptent, et le rsultat est inchang par substitution des motifs tandis que
pour les seconds, les valeurs des motifs inuent sur la compression (par exemple
JPEG), et les substitutions sont interdites.
Enn le critre de classication le plus pertinent est base sur la perte des
donnes.
2.2.4 La compression sans / avec perte
Compression sans perte
Les algorithmes de compression sans perte (connu aussi sous le nom de
non destructible, rversible, ou conservative) sont des techniques permettant
une reconstitution exacte de linformation aprs le cycle de compression / d-
compression. Il existe 3 types dalgorithmes de compression sans perte :
Codage statistique :
Le but est de :
Rduire le nombre de bits utiliss pour le codage des caractres fr-
quents.
Augmenter ce nombre pour des caractres plus rares.
5
Exemple
Certaines informations sont plus souvent prsentes que dautres dans les
donnes que lon veut compresser.
Dans un chier HTML par exemple, on trouvera beaucoup de signes < , /
, et >. On va chercher coder les donnes se rptant souvent sur moins
de bits, et les donnes moins frquentes sur plus de bits. On va chercher
largir la rduction des rptitions des groupes doctets plutt que des
octets simples (principe utilis pour les algorithmes de Lempel-Ziv, Zip,
Human ).
Substitution de squences :
Comprime les squences de caractres identiques.
Utilisation dun dictionnaire :
Le but est de :
Rduire le nombre de bits utiliss pour le codage des mots frquents.
Augmenter ce nombre pour des mots plus rares.
Le taux de compression des algorithmes sans perte est en moyenne de lordre
de 40% pour des donnes de type texte. Par contre, ce taux est insusant
pour les donnes de type multimdia. Il faut donc utiliser un nouveau type de
compression pour rsoudre se problme : la compression avec perte.
Compression avec perte
Son principe est bas sur ltude prcise de loeil et de loreille humaine.
Les signaux audio et vido contiennent une part importante de donnes que
loeil et loreille ne peuvent pas percevoir et une part importante de donnes
redondantes.
Les objectifs de la compression avec pertes sont dliminer les donnes non
pertinentes pour ne transmettre que ce qui est perceptible et, comme pour la
compression sans perte, dliminer linformation redondante.
Ce type de compression engendre une dgradation indiscernable loeil (ou
loreille) ou susamment faible, en contrepartie dun taux de compression trs
lev.
Il existe des algorithmes de compression consacrs des usages particuliers, dont
en voici 3 :
Compression du son (Audio MPEG, ADCPM ...).
Compression des images xes (JPEG,...).
Compression des images animes (MPEG, ...).
2.2.5 Performances et ecacit
Nous allons nous intresser une srie dexemples an de montrer le gain de
compression dans des domaines informatiques.
Gain en temps sur les lectures / critures :
Temps pour crire une image de 14Mo : 5s (soit 2,8Mo/s).
Temps pour compresser une image de 14Mo en JPEG : 3,4s, soit 6,5Mo/s,
rsultat : 503Ko (soit 4% de loriginal)
6
Temps pour crire une image JPEG de 503Ko : 0,2s
Temps total compression + criture : 3,6s, soit 1,4s de moins (gain de 24%
en temps et 96% en volume stock sur disque)
Gain sur les temps de transmission :
Temps de transmission. 56Kbps/s dun chier HTML de 30Ko : 5,4s
Temps de compression du chier HTML au format GZIP : 0,05s (soit
600Ko/s), taille compresse : 15Ko (gain de 50% en volume)
Temps de transmission de l HTML compress : 2,7s
Temps total compression /transmission/ dcompression : 2,8s, au lieu de
5,4s, soit un gain de prs de 50% en temps.
Ainsi, nous avons pu voir que les mthodes de compression sont trs utiles et
apportent parfois des rsultats spectaculaires. Sachant le chier compresser,
chaque algorithme a ses avantages et ses inconvnients et il faut donc choisir
lalgorithme en fonction du type de donnes.
7
Chapitre 3
Compression de type
statistique : codage de
Human
3.1 Introduction
Le codage de Human est un algorithme de compression des donnes bas
sur les frquences dapparition des caractres apparaissant dans le document
initial. Il a t dvelopp par un tudiant de la MIT (Massachusetts Institute
of Technology), David A. Human en 1952. Cette technique est largement
utilise car elle est trs ecace et on observe selon le type de donnes des taux
de compression allant de 20% 90% mais plus gnralement entre 30% et 60%.
La dernire partie de cette section traitera des performances.
Le principe de compression est utilis dans le codage dimage TIFF (Tagged
Image Format File) spci par Microsoft Corporation et Aldus Corporation. La
mthode JPEG (Join Photographic Experts Group) utilise aussi la compression
de type Human pour coder les informations dune image. (Elle utilise dailleurs
des tables prdnies).
Ce procd fait partie des mthodes de compression de type dites statistiques.
Cela repose sur le principe sur lattribution de codes plus courts pour des valeurs
frquentes et de codes plus longs pour les valeurs moins frquentes. Cela est
plus ecace que la reprsentation actuelle qui consiste, quant elle, utiliser
une longueur xe pour chaque symbole (exemple : un octet par caractre, code
ASCII).
3.2 Principe de lalgorithme
Lalgorithme de Human utilise une table contenant les frquences dappa-
rition de chaque caractre pour tablir une manire optimale de les reprsenter
par une chane binaire (cela reprend le principe du morse qui tend minimiser le
nombre de symboles utiliser pour les lettres les plus frquemment employes).
On peut dcomposer la procdure en plusieurs parties :
8
Tout dabord, la cration de la table de frquence dapparition des carac-
tres dans le texte initial.
Ensuite la cration dun arbre binaire (usuellement dnomm arbre de
Human) suivant la table prcdemment calcule. (Remarque : on devrait
parler plutt de larborescence de Human.)
Enn coder les symboles en reprsentation binaire optimale.
3.2.1 Table de frquence dapparition
An de construire cette table, il sut simplement de dnombrer le nombre
doccurrences de chaque symbole s puis de calculer la frquence f
s
de chacun
dentre eux grce la formule suivante :
f
s
=
nombre d

occurrences de s
nombre de symboles
Ensuite on trie le tableau en fonction de la frquence dapparition (de faon
croissante) puis suivant le symbole suivant.
Supposons par exemple que nous ayons le texte suivant compos des sym-
boles pris dans le code ASCII :
"Lalgorithme de Human est une mthode qui permet de compresser les don-
nes".
Pour chaque symbole on calcule tout dabord le nombre doccurrences de
chacun puis sa frquence dapparition suivant la formule cite prcdemment.
La table de frquences T trie est (An de simplier lexemple, on a nglig la
casse) :
Symbole Nombre doccurrences Frquence dapparition
c 1 1/76 = 1.32%
g 1 1/76 = 1.32%
q 1 1/76 = 1.32%
1 1/76 = 1.32%
a 2 2/76 = 2.63%
f 2 2/76 = 2.63%
i 2 2/76 = 2.63%
p 2 2/76 = 2.63%
u 3 3/76 = 3.95%
h 3 3/76 = 3.95%
l 3 3/76 = 3.95%
d 4 4/76 = 5.26%
n 4 4/76 = 5.26%
o 4 4/76 = 5, 26%
r 4 4/76 = 5.26%
t 4 4/76 = 5.26%
m 5 5/76 = 6.58%
s 5 5/76 = 5.26%
11 11/76 = 14.47%
e 14 14/76 = 18.42%
9
3.2.2 Construction de larbre de Human
Larbre binaire de Human est la structure de donnes qui va nous per-
mettre dattribuer chaque symbole une reprsentation binaire optimale. An
de construire larbre, on utilise la table de frquences prcdemment construite
quon appelle T et on applique lalgorithme suivant :
Algorithme 1: Construction de larbre
Donnes :
T : la table de frquence
Q : Une le dattente de noeuds de larbre binaire. Chaque
feuille est tiquete avec un symbole et son nombre doccur-
rences. Chaque noeud interne est tiquet avec la somme
des occurrences des feuilles de sa sous arborescence.
o : Une fonction qui chaque noeud de larbre associe
une valeur. Si le noeud est une feuille alors o renvoie le
nombre doccurrences du symbole, autrement o renvoie la
somme des occurences des feuilles de la sous-arborescence
du noeud.
Rsultat :
A : Larbre binaire rsultant
begin
Initialisation de Q tel que :
Q contienne les feuilles reprsentant les symboles de la table T
tant que (Q non vide) faire
Crer un nouveau noeud z dans A tel que :
gauche(z) = x = extraire-min (Q)
droite(z) = y = extraire-min (Q)
o(z) = o(x) + o(y)
Insrer (z,Q)
n
end
De faon informelle, on utilise une le dattente Q dans laquelle on place les
noeuds correspondants au couple [symbole : nombre doccurrences du symbole]
de tous les symboles. Ensuite on extrait de la le dattente les 2 noeuds ayant la
valeur minimale puis on cre un nouveau noeud dans larbre de Human ayant
pour ls les 2 deux slectionns, on rajoute ensuite le noeud nouvellement cre
dans la le dattente , et on ritre jusqu ce que la le soit vide.
Reprenons lexemple prcdent cit et appliquons lalgorithme de construction
de larbre tape par tape.
10
c:1
g:1
q:1
:1
a:2
e:14
[ ]:11
s:5
Q
Initialisation
c:1 g:1
q:1
:1
a:2
[ ]:11
e:14
Q
2
f:2
i:2
2
Etape 1
c:1 g:1 q:1 :1
a:2
e:14
Q
2
2
2
f:2
i:2
p:2
u:3
2
Etape 2
11
80
46
8
26
20
10 10
4
2
5
e:18
d:4
p:2 i:2
s:5
h:3 2
q:1 :1
m:5
u:3
c:1 g:1
[ ]:11
l:3
a:2 f:2
r:4 t:4 n:4 o:4
8 8
16
4
7
18
34
5
Q
vide
Etape finale
1
1
1
1
1
1
1
1 1
1 1
1
1
1
1
1
1
1
1
0
0
0
0
0 0
0
0 0
0
0
0
0
0
0
0
0 0
0
Larborescence de Human nalement construite, on tiquette les arcs de la
faon suivante :
Les arcs reliant un noeud son ls gauche sont tiquets par 0.
Les arcs reliant un noeud a son ls droit sont tiquets par 1.
De cette manire, chaque feuille reprsentant un symbole peut tre rednie par
un nombre binaire correspondant au chemin entre la racine et la feuille de lar-
borescence. Ainsi, les symboles les plus utiliss ont une reprsentation binaire
moins importante (en terme de taille) que les symboles les moins utiliss. Ceci
permet de reprsenter chaque symbole de faon optimale et permet de raliser
une compression des donnes ecacement.
Si on reprend notre exemple, on obtient la table de correspondance suivante :
12
Symbole Reprsentation binaire Taille(en bits) Gain(en bits)
c 100000 6 2
g 100001 6 2
q 101000 6 2
101001 6 2
a 01000 5 3
f 01001 5 3
i 11000 5 3
p 11001 5 3
u 10001 5 3
h 10101 5 3
l 0101 4 4
d 1101 4 4
n 0000 4 4
o 0001 4 4
r 0010 4 4
t 0011 4 4
m 1001 4 4
s 1011 4 4
011 3 5
e 111 3 5
De cette manire, notre phrase exemple devient :
"Lalgorithme de Human est une mthode qui permet de compresser les don-
nes"
l = 0101
= 101001
a = 01000
g = 100001
...
Message compress = 0101101001010000101100001 etc...
( noter que le message compress est une suite binaire de bits alors que le
message original est une suite de symboles qui peut, comme nous lavons vu en
cours, tre ramene une suite de bits).
3.2.3 Compression / Dcompression
Compression :
Pour la compression des donnes, on applique lalgorithme de Human
comme indiqu prcdemment an de calculer larbre binaire de Human.
Ensuite, lorsquon dsire transmettre des donnes un destinataire, lex-
pditeur met un chier contenant 2 parties :
Un entte : Celui ci contient la taille originale du chier, larbre binaire
de Human calcul prcdemment (Cette structure de donnes peut tre
aisment reprsenter par un tableau simple).
Les donnes : Chaque symbole des donnes originales est substitu par
sa reprsentation binaire correspondante.
13
Taille Arbre de Huffman
Entete Donnes compresses
Message transmettre compress
Decompression :
Lors de la rception dun message, le destinataire rcupre dans lentte
larbre de Human et substitue chaque suite de bits correspondant un
chemin dans larborescence de Human par le symbole quivalent.On re-
marque quil ne peut pas avoir dambigut sur linterprtation dune s-
quence de bits cause de la structure intrinsque de larborescence.
3.2.4 Remarques
Dans notre exemple nous avons appliqu lalgorithme sur un symbole mais
on peut amliorer de faon signicative lecacit en lappliquant sur une
suite de symboles (par exemple 2 ou 3 etc..). Par contre la taille de larbre
binaire de Human ainsi que celle de lentte pour transmettre des donnes
sont signicativement plus importantes. Il faut aussi considrer le temps
de traitement qui est plus long.
Lalgorithme de Human nest pas proprement parler un algorithme
de compression rserv aux rseaux (et aux couches basses en particulier)
puisque ceci est ralis au niveau applicatif ; nanmoins, du au fait de len-
capsulation des couches, la propagation du message compress se ralise
jusque dans les couches les plus basses.
La mthode de Human possde linconvnient de devoir analyser statis-
tiquement le message original ce qui peut prendre relativement du temps.
De ce fait, on utilise parfois des tables statistiques prdnies ce qui vite
danalyser le texte original au pralable. Cest ce quon appelle des tables
statiques alors que les autres sont habituellement dnommes dynamiques.
3.3 Performances
Lintrt de la compression est de pouvoir rduire au maximum la taille
des informations originales, comme nous lavions indiqu en premire partie.
Cette mesure peut-tre eectue par le taux de compression qui est dni par
la formule suivante :
= 1
Taille compressee
Taille originale
Par ailleurs, on peut aussi utiliser lentropie permet de connatre le nombre
minimum de bits ncessaires au codage dun chier. On rappelle que la formule
de lentropie est la suivante :
E =
1

N
(P
k
log
2
(P
k
))
14
o P
k
est la frquence dapparition du k-ime symbole parmi les n possibles.
Analysons les performances de lalgorithme de Human grce au taux de com-
pression puis avec lentropie sur notre exemple tout dabord puis nous gnra-
liserons.
3.3.1 Performances sur lexemple
Taux de compression
"Lalgorithme de Human est une mthode qui permet de compresser les don-
nes"
Calculons la taille originale du message en bits : Le message contient 76 sym-
boles et chaque symbole peut tre reprsent par le code ASCII quivalent sur
8 bits.
Taille originale = 76 8 = 608 bits
Calculons prsent la taille du message compress (il sut de sommer la taille
de la reprsentation binaire de chaque symbole), on obtient :
Taille compressee = 300 bits
On peut donc a prsent calcul le taux de compression et on obtient :
= 1
Taille compressee
Taille originale
=
300
608
= 0, 5066
Le taux de compression dans notre exemple est proche de 50% ce qui est rela-
tivement trs bon.
Entropie
E =
1

N
(P
k
log
2
(P
k
))
E =

(
1
76
log
2
1
76
) + (
1
76
log
2
1
76
) + + (
11
76
log
2
11
76
) + (
14
76
log
2
14
76
)

E = 3.92
Ce qui signie quil faut au minimum 3.92 76 = 297.92 bits pour coder la
chane. Avec 300 bits grce la mthode de Human on est trs proche de
loptimalit.
3.3.2 Performances gnrales
Les performances sont dpendantes de la frquence dapparition des sym-
boles dans le message original, par consquent elles dpendent galement du
type de chier que nous dsirons compresser. En eet, les chiers de type excu-
table par exemple contiennent, de facon gnrale, moins de redondances quun
chier de type BMP (bitmap pour les images). De cette remarque, on en dduit
que le taux de compression sera en moyenne meilleur pour les chiers o les
redondances sont fortes.
Des tudes ont dj t ralises an de dterminer les taux de compression,
voici un aperu de ce que ces dernires nous montrent :
15
Type de fichier Taux de compression
Texte 49.5%
Bitmap (image) 50%
Wave (audio) 50%
xecutable 20%
3.4 Conclusion
Lalgorithme de Human est un procd largement rpandu et qui se rvle
tre un algorithme performant en moyenne. Il est le plus reprsentatif des algo-
rithmes de compression dit de type statistique : il en existe nanmoins dautres
tels que le RLE(Run Length Encoding), ou bien VLC (Variable Length Code)
dnomm souvent codage entropique. Hormis tout ces avantages, Human pr-
sente linconvnient dtre relativement ancien et dautres algorithmes plus r-
cent reposant sur dautres principes tels que les algorithmes de compression
dictionnaire (exemple : LZW) arrivent a des taux de compression suprieurs en
moyenne ceux que proposent lencodage de Human.
16
Chapitre 4
Compression de type
Dictionnaire
Lalgorithme de Human a longtemps domin le monde de la compression, et
cest en 1978 o sont apparues les mthodes de compression de Abraham Lempel
et Jacob Ziv, mthodes dites de type dictionnaire aussi appels algorithmes
substitution de facteurs.
4.1 Exemples de compressions intuitives de type
dictionnaire
4.1.1 Compression de texte multi-dictionnaires
Cette mthode utilise un dictionnaire pour chaque taille de mot. Lide est
de remplacer un mot par la taille de celui ci et son index dans le dictionnaire.
Une telle compression entrane des gains trs signicatifs.
Mais cette technique nest pas utilise car elle ncessite des astuces pour reprer
les conjugaisons, les pluriels ou encore les majuscules. De plus elle ncessite
quun dictionnaire soit prsent pour compresser et pour dcompresser, ce qui
reprsente une contrainte en espace mmoire.
4.1.2 Compression de texte multi-langages
Le principe dune mthode de compression de texte multi-langages est de
remplacer certains mots du dictionnaire par leur traduction dans une autre
langue, de faon diminuer la longueur de la squence de mots dans une phrase.
On peut ainsi obtenir de bons taux de compression.
En eet si nous prenons une phrase franaise telle que nous mangeons, elle
pourrait tre remplace par we eat, qui est une traduction franco-anglaise et
qui permet la fois un dcodage simple et un gain en taille(7 caractres dans
ce cas).
Nanmoins lutilisation dune telle mthode ne peut fonctionner que sil nexiste
aucune hsitation sur linterprtation, telle que les phrases interdpendance
syntaxesmantique (par exemple La petite brise la glace).
17
4.2 Lalgorithme LZW
4.2.1 Historique des algorithmes LZ**
Cest en 1977 que Jacob Ziv et Abraham Lempel fournissent une technique
de compression dirente de lalgorithme de Human, et capable de donner de
meilleurs taux de compression. Ils mettent ainsi en place lalgorithme LZ77.
Puis vient LZSS, version amlior de LZ77 par Storer et Szymanski puisque la
recherche des squences dans le dictionnaire est rduite logarithmiquement.
Enn vient lalgorithme LZ78, plus connu sous le nom LZW, amlioration faite
par Terry Welch en 1984 de LZSS de par le fait que les squences sont ranges
dans une arborescence. Il porte le nom de ses 3 inventeurs : Lempel, Ziv et Welch.
4.2.2 Le principe
Le principe est fond sur le fait quune squence de caractres peut appa-
ratre plusieurs fois dans un chier.
Lalgorithme LZW de compression consiste mettre la place des squences,
les adresses des de ces squences dun dictionnaire gnr la vole.
Cest un algorithme de compression nettement plus performant en moyenne que
les algorithmes statistiques puisquil permet dobtenir des gains plus levs sur
la majorit des chiers.
Lalgorithme LZW se distingue des mthodes statistiques pour plusieurs raisons :
Le chier comprim ne stocke pas le dictionnaire, ce dernier est automa-
tiquement gnr lors de la dcompression. Il nexiste donc pas de table
dentte.
Contrairement aux mthodes statistiques qui utilisent la probabilit de
prsence sur un ensemble de taille xe de symboles, lalgorithme LZW
reprsente un algorithme dapprentissage, puisque les squences rpti-
tives de symboles sont dans un premier temps dtectes puis compresses
seulement lors de leurs prochaines occurrences. Le taux de compression
est dpendant de la taille du chier. Plus la taille est importante, et plus
le taux de compression lest aussi.
Il permet le compactage la vole, puisquil ny a pas lire le chier au
pralable, il compresse les squences de symboles au fur et mesure.
4.2.3 Lalgorithme de compression
Le principe de lalgorithme LZW de compression
Lobjectif de lalgorithme de compression LZW est de construire un diction-
naire o chaque squence sera dsigne par une adresse dans celui ci. De plus
chaque squence ne sy trouvant pas y est rajoute. Au nal, on se retrouve
avec une suite dentiers, des adresses pointant vers une squence contenue dans
le dictionnaire.
Le dictionnaire est donc un tableau dans lequel sont ranges des squences de
symboles de taille variable, repres par leurs adresses (leur position dans le
tableau). La taille de ce dictionnaire nest pas xe et les premires adresses de 0
255 du dictionnaire contiennent les codes ASCII. Les squences ont donc des
18
adresses suprieures 255.
Voici lalgorithme de compression :
Algorithme 2: Lalgorithme LZW de compression
Donnes :
Le dictionnaire des symboles rencontrs : Dico
Le chier compresser : Fichier
Rsultat :
Le chier compresser : Fichier
dbut
s=premier octet du chier
tant que le chier nest pas sa n
t=octet suivant
u=concatnation(s,t)
si (u appartient Dico) s=u
sinon
ajouter(u) dans Dico
crire adresse de s
s=t
n si
n tant que
crire adresse de s
n
Exemple dutilisation de lalgorithme LZW de compression
A laide de lalgorithme LZW, nous voulons compresser la squence suivante :
SISI-ET-ISIS
On lit donc le premier caractre soit S. Puis on lit le suivant : I. On forme
la squence u=s+t soit SI, puisque celle ci nest pas prsente dans le dic-
tionnaire, on lajoute dans le dictionnaire. Cette squence aura ladresse 256,
premire squence situe dans le dictionnaire aprs la table ASCII. Enn on
attribue ladresse de s (valeur ASCII de S) dans le chier soit 83 ou (1010011
en binaire). On continue ensuite avec le caractre suivant.
La compression eective a lieu lorsque quon rencontrera pour la seconde fois
une paire (SI par exemple) dj prsente dans le dictionnaire. Dans ce cas on
mettra ladresse de la squence SI et non ladresse de la squence S et de
la squence I, on ajoutera par la suite dans le dictionnaire la squence de 3
caractres (soit SIS dans notre exemple).
19
Voici un tableau rsumant les oprations eectues sur lexemple lors du
droulement de lalgorithme LZW de compression :
Phase 1 Phase 2 Phase 3 phase 4 Phase 5 Phase 6
Valeur de s S I S SI - E
Valeur de t I S I - E T
Valeur de u SI IS SI SI- -E ET
u appartient au Dico ? Non Non Oui Non Non Non
Ajout dans le Dico de SI IS SI- -E ET
Ecrire adresse de S soit 83 I soit 73 SI soit 256 - soit 45 E soit 69
Phase 7 Phase 8 Phase 9 phase 10 Phase 11 Phase 12
Valeur de s T - I IS I IS
Valeur de t - I S I S
Valeur de u T- -I IS ISI IS
u appartient au Dico ? Non Non Oui Non Oui
Ajout dans le Dico de T- -I ISI
Ecrire adresse de T soit 84 - soit 45 IS soit 257 IS soit 257
Voici le dictionnaire rsultant de lalgorithme :
Adresse Squence
0..255 ASCII
256 SI
257 IS
258 SI-
259 -E
260 ET
261 T-
262 -I
263 ISI
Enn voici la suite dadresse contenu dans le chier compress :
83.73.256.45.69.84.45.257.257
On peut ajouter que les adresses ne sont pas de taille maximale ds le dpart
de lalgorithme. Elles sont incrmentes d1 bit ds que lon atteint une nouvelle
puissance de 2.
Dans notre exemple lorsquon obtient une adresse crire de taille plus grande
que 255, les adresses sont incrmentes d1 bit.
Plusieurs mthodes sont possibles pour permettre de prvenir le dcompresseur
du changement de la taille des adresses.
Premirement, lutilisation dun code spcial est ncessaire qui a pour adresse
par exemple 255 et signie que les adresses seront incrmentes de 1 bits partir
de sa lecture. Ainsi le dcompresseur est prvenu lors de la lecture dun telle
20
code et sait alors que le nombre de bits lire est incrment (dans ce cas ci soit
9 bits). Ce processus fonctionne si lon condamne certaines adresses du diction-
naire (255, 511,1023 ...,) en ny plaant pas de squences doctets.
Remarque : Un problme se pose, cest la faon dont on peut direncier la
vraie valeur 255 de lindicateur daugmentation de bits. Il sut pour rsoudre
ce problme dmettre ladresse 255 sur 8 bits suivi immdiatement du code
255 mais sur 9 bits soit 011111111.
Une autre mthode, moins lgante, qui utilise une entte pour informer lal-
gorithme de dcompression des positions o dans le chier lon augmenter la
taille des adresses.
Le code SP peut ne pas tre le seul code de communication avec lalgorithme
de dcompression. Dautres codes peuvent par exemple servir vider des dic-
tionnaires priodiquement, crer dautres dictionnaires : il ny a pas de limites.
4.2.4 Lalgorithme de dcompression
Le principe de lalgorithme LZW de dcompression
Lalgorithme de dcompression LZW reconstruit le dictionnaire au fur et
mesure de la lecture du chier compress. Son processus est trs proche de
lalgorithme de compression.
On commence par lire les codes du chier en partant dune taille de 8 bits.
Puis suivant la mthode utilise, lorsque le dcompresseur rencontre un code
spcial il augmente la taille de son tampon pour lire les adresses. Il continue
lire les adresses jusqu la n du chier et il inscrit la squence correspondant
ladresse dans le chier dcompresser.
Voici lalgorithme de dcompression :
Algorithme 3: Lalgorithme LZW de dcompression
Donnes :
Le dictionnaire des symboles rencontrs : Dico
Le chier dcompresser : Fichier
Rsultat :
Le chier dcompresser : Fichier
dbut
a=Squence(premire adresse contenu dans le chier)
crire a
tant que le chier nest pas sa n
b=adresse suivante
si (b appartient Dico) s=Squence(b)
sinon s=concatnation(a,t)
n si
crire squence(s)
t=s[0]
ajouter(Squence(a)+t) dans Dico
a=b
n tantque
n
21
Exemple dutilisation de lalgorithme LZW de dcompression
A laide de lalgorithme LZW, nous voulons dcompresser la squence sui-
vante : 83.73.256.45.69.84.45.257.257
On lit donc la premire adresse soit 83. On crit la squence associe cette
adresse du dictionnaire. Ensuite on lit ladresse suivante. On sassure que ladresse
lue appartient au dictionnaire et que ce nest pas un code spcial de contrle, en-
suite on crit la squence associe cette adresse. On ajoute dans le dictionnaire
la concatnation de lancienne adresse lue et la premire lettre de la squence.
On continue ensuite avec les adresses suivantes jusqu la n du chier.
Remarque : nous ne nous proccuperons pas de la taille des adresses inscrites
dans le chier dcompresser.
Voici un tableau rsumant les oprations eectues sur lexemple lors du drou-
lement de lalgorithme LZW de compression :
Phase 1 Phase 2 Phase 3 phase 4
Valeur de a S=Squence(83) I=Squence(73) SI=Squence(256) -=Squence(45)
Valeur de b 73 256 45 69
b appartient au Dico ? Oui Oui Oui Oui
Valeur de s I=Squence(73) SI=Squence(256) -=Squence(45) E=Squence(69)
Valeur de t I S - E
Ajout dans le Dico de Si IS SI- -E
Ecrire squence S et I SI - E
Phase 5 Phase 6 Phase 7 phase 8
Valeur de a S=Squence(69) I=Squence(84) SI=Squence(45) -=Squence(257)
Valeur de b 84 45 257 257
b appartient au Dico ? Oui Oui Oui Oui
Valeur de s T=Squence(84) -=Squence(45) -=Squence(45) IS=Squence(257)
Valeur de t T - I I
Ajout dans le Dico de ET T- -I ISI
Ecrire squence T - IS IS
Le dictionnaire gnr par lalgorithme de dcompression est bien videm-
ment le mme que celui gnr par lalgorithme de compression. (cf le diction-
naire produit prcdemment par lalgorithme de compression.) Nous retrouvons
donc notre phrase de dpart (SISI-ET-ISIS), et nous pouvons aussi remarquer
que lalgorithme de dcompression est nettement plus rapide que lalgorithme
de compression. Dans notre exemple seulement 8 phases ont t ncessaires pour
dcompresser le chier alors que la compression a en ncessit 12. Lalgorithme
de dcompression est en moyenne 3 10 fois plus rapide que celui de la com-
pression.
4.2.5 Ecacit de lalgorithme LZW
La phrase SISI-ET-ISIS est code sur 96 bits (12*8 bits (dans le code AS-
CII)). Aprs utilisation de lalgorithme LZW de compression, le chier compress
22
possde une taille de 79 bits (2*8+7*9), donc on a ici un taux de compression
de lordre de
= 1
79
96
0.18 18%.
En gnral lorsque la taille du chier nest pas trop petite, le taux de compres-
sion est suprieur celui obtenu par une mthode statistique. On peut rajouter
que lalgorithme LZW est nettement plus rapide quun algorithme de type sta-
tistique en terme de traitement.
On peut noter quil est possible de compresser un chier dj compress aupa-
ravant par un algorithme de type statistique ou linverse.
Variante de lalgorithme LZW
Il existe des variantes des compressions LZ :
LZP : Algorithme qui se base sur la rptition de phrases entires.
LHA, LZS, LZX, LZH : Algorithmes quasiment identiques, encore drivs
du LZ77. Il nest employ que pour lutilitaire Lharc, trs rpandu au
Japon, mais de moins en moins utilis dans le Monde.
4.2.6 Conclusion
Lalgorithme LZW est aujourdhui considr comme la mthode de compres-
sion la plus ecace et une des plus connues. Elle est relativemnt rapide ce qui
a rendu lutilisation de la compression possible sur les disques durs de faon
transparente. Cette mthode est aussi utilise dans le format .gif, mais encore
dans les compresseurs tels que ZIP, ARJ.
Nanmoins elle tait peu utilise car elle tait brevete par la socit Unisys
jusquen juillet 2004 (8 Juillet 2004) o le brevet a expir. Par consquent, cette
dernire ne peut plus prsent rclamer des droits sur lutilisation du format
gif par exemple car celui ci reposait sur lalgorithme LZW.
23
Chapitre 5
Conclusion
La compression des donnes est appele prendre un rle encore plus impor-
tant en raison du dveloppement des rseaux et du multimdia. Son importance
est surtout due au dcalage qui existe entre les possibilits matrielles des dispo-
sitifs que nous utilisons (dbits sur Internet, sur Numris et sur les divers cbles,
capacit des mmoires de masse ) et les besoins quexpriment les utilisateurs
(visiophonie, vido plein cran, transfert de quantits dinformation toujours
plus importantes dans des dlais toujours plus brefs). Quand ce dcalage nexiste
pas, ce qui est rare, la compression permet de toutes faons des conomies. Les
mthodes dj utilises couramment sont ecaces et sophistiques (Human,
LZW, JPEG) et utilisent des thories assez complexes, les mthodes mergentes
sont prometteuses (fractales, ondelettes) mais nous sommes loin davoir puis
toutes les pistes de recherche. Les mthodes du futur sauront sans doute sadap-
ter la nature des donnes compresser et utiliseront lintelligence articielle
mais on est dans le droit de se poser la question suivante : La compression sera-
t-elle utile dans le futur alors que les contraintes sur les ressources deviennent
de moins en moins importantes ?
24

Vous aimerez peut-être aussi