of 37
8/7/2019 Les formats de compression dimage
1/37
Institut Universitaire de Technologie de ToursDpartement Gnie lectrique et Informatique Industrielle
Mr. Brault
Mme. Dougherty
Les formats de compression d'imageLes formats de compression d'imageLes formats de compression d'imageLes formats de compression d'image
Promotion 2002-2004
MICHOT Julien
2me Anne, groupe B1
8/7/2019 Les formats de compression dimage
2/37
Institut Universitaire de Technologie de ToursDpartement Gnie lectrique et Informatique Industrielle
Mr. BraultMme. Dougherty
Les formats de compression dimageLes formats de compression dimageLes formats de compression dimageLes formats de compression dimage
Promotion 2002-2004
MICHOT Julien
2me Anne, groupe B1
8/7/2019 Les formats de compression dimage
3/37
Sommaire
INTRODUCTION
I. CARACTERISTIQUES DUNE IMAGE..................................................................51. GENERALITES ..............................................................................................................5
2. LE CODAGE DE LA COULEUR ........................................................................................7
3. DIFFERENTES FORMES DIMAGES...............................................................................10
II. CODAGES ET COMPRESSIONS DUNE IMAGE ..........................................11
1. LE FORMAT RLE .......................................................................................................11
2. LA COMPRESSION RL.................................................................................................12
3. LE CODAGE DE HUFFMAN ..........................................................................................13
4. LA COMPRESSION LZW ............................................................................................14
5. LE MODE DE COMPRESSION JPEG..............................................................................17
III. LES METHODES DE COMPRESSION RECENTES.......................................21
1. LA COMPRESSION FRACTALE .....................................................................................21
2. LA COMPRESSION PAR ONDELETTES ..........................................................................23
CONCLUSION
RESUME ............................................................................................................................26
TABLE DES ILLUSTRATIONS .....................................................................................27
BIBLIOGRAPHIE.............................................................................................................28
ANNEXES ..........................................................................................................................29
8/7/2019 Les formats de compression dimage
4/37
4
Introduction
Cest avec lapparition des ordinateurs, et surtout avec Internet, que les images sont
devenues omniprsentes et prpondrantes. En effet, quoi de plus prcis quune image ? Il
faudrait plusieurs pages de texte pour dcrire une simple photographie, ou un schmaCependant, si dans la rapidit dinformation limage dtrne facilement le texte, celle-ci
devient vite lourde de donnes, donc excessivement longue transmettre et traiter. Voil
pourquoi depuis quelques annes, les centres de recherche en informatique dpensent de
nombreuses heures sur des algorithmes de compression. Afin de limiter la taille, ou le poids,
dune image, nous devons la compresser, cest--dire liminer les informations inintressantes
ou redondantes. Il existe de nos jours plus dune vingtaine de formats de compression,
spcifiquement dans la compression dimage (.gif, .jpeg, .bmp), ayant chacun leur propremthode de codage, ou cumulant plusieurs algorithmes, mais tous sont complmentaires.
tant donn la nature de vulgarisation de ce rapport, ainsi que la limitation du nombre de page
quil nous est impos, nous nexpliquerons que succinctement quelques diffrentes mthodes
de compression, en dlaissant lapprofondissement mathmatique des codages.
Nous prsenterons dans un premier temps les caractristiques dune image, en tant
quentit informatique, puis nous analyserons les principes de codage et de compression
dune image, avec quelques exemples de format. Enfin, nous tudierons les deux futures mthodes de compression les plus prometteuses : la compression par fractale et par ondelette.
8/7/2019 Les formats de compression dimage
5/37
5
I. Caractristiques dune imagePour comprendre comment fonctionne la compression dimage, nous devons tout dabord
savoir ce quest une image, quelles sont les diffrentes reprsentations informatiques, par
quels moyen peut-on rduire la taille des fichiers, comment reprsenter les couleurs bref
autant de choses quil est ncessaire de dtailler dans une premire partie.
1. Gnralits
a. Notion de pixel
En informatique, et ce pour des raisons de gain de place, une image est compose dun
ensemble de points, appels pixel (abrviation de PICTure Element). Ces pixels sont
regroups en lignes et en colonnes afin de former un espace deux dimensions. Chaque point
sera reprsent par ses coordonnes (X,Y), avec X laxe orient de gauche droite, et Y laxe
orient de haut en bas.
Figure 1. Pixels
b. Reprsentation de la couleurEn plus de ses coordonnes planaires, un pixel se caractrise par sa pondration, appele
aussi profondeur de codage, qui reprsente sa couleur ou son intensit. Cette valeur peut tre
code sur un nombre n diffrent de bits (ou octet) selon les mthodes de codage de la couleur
utilises. Les standards les plus rpandus sont n=1 bit (noir ou blanc), n=4 (16 couleurs ou 16
niveaux de gris), n=8 bits (256 couleurs ou 256 niveaux de gris) Les diffrents codages de
la couleur seront voqus dans la partie I.2.On appelle la palette de couleur, lensemble des couleurs que peut contenir une image. Il
est frquent de voir des images qui nutilisent jamais certaines couleurs, il devient ds lors
intressant de limiter la palette de couleur en ne slectionnant que la ou les couleurs utilises
rellement par limage. Il suffit pour cela, dattribuer un nombre la couleur, et de copier la
correspondance chiffre-couleur dans lentte de limage (utilise lors du dcodage).
c. Taille et dfinition dune image
8/7/2019 Les formats de compression dimage
6/37
6
Pour connatre la dfinition (en octets) d'une image, il est ncessaire de compter le nombre
de pixels que contient l'image, cela revient calculer le nombre de cases du tableau, soit la
hauteur de celui-ci que multiplie sa largeur. La taille (ou poids) de l'image est alors le nombre
de pixels que multiplie la taille de chacun de ces lments. Les dfinitions les plus rpandues
sont 640 x 480, 600 x 800, 1024 x 768 pixelsPrenons lexemple dune image 1024 x 768, dont la couleur est code sur 24 bits (1 octet
pour les nuances de rouge, 1 pour le bleu et 1 octet pour le vert, codage True color ou RGB)
- Nombre de pixels :
1024 x 768 = 786432 pixels
- Poids de limage :
786432 x 3 = 2359296 octets
- soit une image de 2359296 / 1024 = 2304 Ko, ou 2304 / 1024 = 2,25 Mo, ce qui est assezconsquent, surtout lorsquon veut transmettre limage
d. Deux types de compression
Lenjeu de la recherche sur la compression dimage est de trouver un moyen de diminuer
la taille dune image, tout en essayant de limiter la dgradation due la compression.
Il existe deux grandes familles dalgorithme de compression : la non-destructrice et la
destructrice.
La premire restitue une image totalement identique l'original, il ny a donc aucune perte
dinformation. Cette famille dalgorithme est essentielle dans nos ordinateurs, la totalit des
programmes d'archivage sont btis sur cette technique de compression sans perte
d'information. Le principe courant de ces programmes est de rduire les squences
dinformation redondantes.
La mthode destructrice dlivre aprs compression une image diffrente, elle contient
beaucoup moins dinformation que loriginal, certains dtails auront t limins lors du
codage. Cette modification est plus ou moins visible, selon le degr de compression. Lattrait
de cette famille est quelle peut obtenir un rendement formidablement grand. Cependant, on
ne peut utiliser ce genre de compression que pour des sons, vidos et images, mais pas sur des
fichiers ou sur du texte puisque ceux-ci ne doivent subir aucune dgradation.
On appelle ratio le rapport entre la taille dune image non compresse et la taille de la
mme image, mais compresse. Le taux de compression tant linverse du ratio, un ratio de
n : 1 est quivalent un taux den
1 . Ainsi, avec une image de 2 Mgaoctets non compresse, et
8/7/2019 Les formats de compression dimage
7/37
7
avec un algorithme de ratio 4 : 1 (ou par quivalence, avec un taux de compression de4
1),
nous devrions obtenir une image compresse de taille 0,5 Mo ( 5,04
12 = ) .
.
2. Le codage de la couleur
Pour reprsenter sur un priphrique externe, un cran par exemple, la couleur dun pixel,
nous avons besoin de codifier la couleur sur un ou plusieurs octets. En effet, la lumire est une
onde, et la couleur varie en fonction de la longueur de cette onde. Comme tout signal
analogique, nous avons besoin de numriser cette donne. Nous allons donc parcourir les
codages de couleur les plus rpandus, qui se diffrencient par leur mode de reprsentation de
la couleur.- Le codage RGB1 correspond la faon dont les couleurs sont codes informatiquement,
ou plus exactement la manire dont les tubes cathodiques des crans d'ordinateurs
reprsentent les couleurs. Ce codage rserve un octet pour chaque couleurs (Rouge, Bleu et
Vert). Aussi, nous obtenons 256 intensits de rouge (28), 256 intensits de vert et 256
intensits de bleu, soient 16 777 216 possibilits thoriques de couleurs diffrentes, c'est--
dire plus que ne peut en discerner lil humain (environ 2 millions). Cependant, cette valeur
n'est que thorique car elle dpend fortement du matriel d'affichage utilis.Etant donn que le codage RGB repose sur trois composantes proposant la mme gamme
de valeur, on le reprsente gnralement graphiquement par un cube dont chacun des axes
correspond une couleur primaire :
Figure 2. Reprsentation graphique du codage RGB
- Le codage TSL2 (ou HSL), invent grce aux travaux du peintre Albert H.Munsell , est
un modle de reprsentation dit "naturel", c'est--dire proche de la perception physiologique
1Rouge, Vert, Bleu ou en anglais :Red, Green, Blue 2Teinte, Saturation, Luminance ou en anglais : Hue, Saturation, Luminance
8/7/2019 Les formats de compression dimage
8/37
8
de la couleur par lil humain. Le modle RGB aussi adapt soit-il pour la reprsentation
informatique de la couleur ou bien l'affichage sur les priphriques de sortie, ne permet pas de
slectionner facilement une couleur. En effet, le rglage de la couleur en RGB dans les outils
informatiques se fait gnralement l'aide de trois glisseurs ou bien de trois cases avec les
valeurs relatives de chacune des composantes primaires, or l'claircissement d'une couleurdemande d'augmenter proportionnellement les valeurs respectives de chacune des
composantes. Ainsi le modle HSL a-t-il t mis au point afin de pallier cette lacune du
modle RGB.
Nous avons donc vu que le code HSL dcompose une couleur en trois critres
physiologiques :
- La teinte correspond la couleur de base (T-shirt mauve ou orange)
- La saturation, dcrivant la puret de la couleur, c'est--dire son caractre vif ou terne(T-shirt neuf ou dlav)
- La luminance, indiquant la brillance de la couleur, c'est--dire son aspect clair ou
sombre (T-shirt au soleil ou l'ombre)
Voici une reprsentation graphique du modle HSL, dans lequel la teinte est reprsente
par un cercle chromatique, la luminance et la saturation par deux axes :
Figure 3. Reprsentation graphique du codage HSL
- Le codage CMYK3 dcompose les couleurs en trois couleurs (Cyan, Magenta et jaune).
Ce codage ralise ensuite le mme procd que le codage RGB. La lettre K dsigne le terme
Noir pur, cette dernire a t ajoute car pour raliser du noir, on devait additionner le Cyan,
le Magenta et le jaune, ce qui ntait pas conomique
3Cyan, Magenta, Yellow, Noir pur
8/7/2019 Les formats de compression dimage
9/37
9
- Le codage CIE 4 utilise la Chromaticitet la Luminace. Puisque les couleurs peuvent tre
perues diffremment selon les individus et quelles peuvent tre affiches diffremment
selon les priphriques d'affichage, la commission internationale de lclairage a dcid de
crer un nouveau code dont les critres sont bass sur la perception de la couleur par lil
humain, donc indpendants du priphrique utilis.Voici le diagramme de chromaticit de ce codage CIE (Y : luminance, et x : chromaticit):
Figure 4. Reprsentation graphique du codage CIE
- Le codage YUV 5 est utilis dans les standards PAL6 et SECAM7. Ce codage a t conu
pour tre reconnu par les tlvisions en noir et blanc, qui convertissaient alors les couleurs en
un dgrad de gris.
Relations en fonction du codage RGB :
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.147 R - 0.289 G + 0.463 B = 0.492 ( B Y )
V = 0.615 R -0.515 G -0.100 B = 0.877 ( B Y )
- Enfin, il existe un autre codage, le codage YIQ 8, utilis dans le standard vido NTSC
(Etats-Unis et Japon).
Relations :
4Commission Internationale de l'Eclairage5
Luminance et Chrominance
6
Phase Alternation Line7Squentiel Couleur avec Mmoire
8Luminance Interpolation et Quadrature
8/7/2019 Les formats de compression dimage
10/37
10
Y = 0.299 R + 0.587 G + 0.114 B
I = 0.596 R - 0.275 G - 0.321 B
Q = 0.212 R - 0.523 G + 0.311 B
3. Diffrentes formes dimages
Nous avons vu auparavant quune image tait constitue dun ensemble de points, nomms
pixels, de position et de couleur diffrente. Cest ce quon appelle une image du type
bitmap , ou en franais tableau de donnes binaires .
Cependant, il existe une autre forme dimage, appele image vectorielle. Les images
vectorielles sont des reprsentations gomtriques (cercle, rectangle, droite, etc.). Cette
proprit spcifique aux images vectorielles, nous permet de coder une image entire en
formules mathmatiques (exemple : un cercle est dfini par son centre et son rayon, le
rectangle lui peut tre dtermin par ses deux points extremums). C'est le processeur qui
sera ensuite charg de "traduire" ces formes en informations interprtables par la carte
graphique.
Le grand avantage des images vectorielles est le suivant : puisque ces images sont
constitues dentits mathmatiques, il est possible de leur appliquer des transformations
gomtriques. Lorsquon applique un grossissement sur une image du type bitmap, on
saperoit que limage nest plus nette, et selon le degr de grossissement, on peut observer
les pixels, surtout sur les contours des objets (cf. figure 5). Avec les images vectorielles, la
prcision ne dpend pas du facteur dagrandissement.
image vectorielle image bitmap
Figure 5. Comparaison d'un grossissement dune image vectorielle et dune image Bitmap
Les images vectorielles, appeles aussi Cliparts permettent donc de dfinir une image
8/7/2019 Les formats de compression dimage
11/37
11
avec trs peu dinformation, do le gain de place. En comparaison, une image vectorielle de
1m sur 1m a le mme poids quune image du type Bitmap de taille 0,1mm sur 0,1mm. De
plus, contrairement au Bitmap, il est trs facile de modifier limage, par exemple une couleur
ou une forme. Ces grandes qualits de compression et de maniabilit de ces images ont
intress les programmeurs, et notamment sur Internet. Un langage danimation, le Flash (dela socit Macromedia), utilise comme de nombreux programmes de CAO9 et de cration
3D10, la reprsentation vectorielle. Cependant, ce format ne convient pas pour des images trop
complexes, comme des photographies par exemple aussi, dautres algorithmes ont t
invents.
II. Codages et compressions dune image1. Le format RLE11
Le principe de compression de RLE est assez simple mettre en uvre. Il repose sur le fait
que dans une image, il existe de nombreuses rptitions dun mme pixel, ou dune mme
squence de pixel, tous juxtaposs. Ainsi, au lieu de coder chaque pixel dune image, le RLE
propose de coder dune part le nombre de rptitions, et dautre part la squence ou loctet
rpter. Lorsquil sagit dune rptition de squence, on ajoute entre le nombre de rptitions
et la squence, un octet reprsentant le nombre doctets de la squence. (cf. tableau 1) Si la
taille de celle-ci est impaire, alors on ajoute un octet nul (00) la fin.
10 10 10 10 10 est cod 05 100A 0A 0A 0A 0A 0A 0A 0A 0A 0A est cod 0A 0A
23 65 55 34 22 est cod 00 05 23 65 34 22 0010 10 89 23 est cod 00 04 10 10 89 23
Tableau 1. Exemple de codage du format RLE
En plus de chaque pixel, le code RLE doit aussi coder un saut de ligne (sur deux octets :
00 00), et la fin de limage (sur deux octets aussi : 00 01). Ce codage prsente une autre
particularit puisquil peut aussi coder le dplacement du pointer (lors du traitement de
9
Conception assist par ordinateur10 3 dimensions11 Run Length Encoding
8/7/2019 Les formats de compression dimage
12/37
12
limage), et ainsi omettre volontairement des pixels. La syntaxe est la suivante : 00 02 XX
YY, avec XX le nombre de pixel sur une ligne et YY le nombre de pixel sur une colonne (en
hexadcimale). Les icnes de Windows sont codes en RLE, ceci explique pourquoi certaines
icnes sont transparentes certains endroits.
Ce systme de compression est assez bon dans certain cas (images monochromes ou256 couleurs), mais il savre trs coteux pour des images dont la couleur est code sur 16
ou 24 bits Cette mthode est nanmoins largement utilis, dans les formats (BMP, PCX,
TIFF, ICO,..). Il est noter quil existe plusieurs variantes de ce codage, certains types
encodent limage en dcelant des squences redondantes selon les lignes, les colonnes, ou
mme en zigzag (cf. figure 6) .
Figure 6. linarisation en ligne, en colonne et en zig-zag
2. La compression RL12La compression RL est une variante de la compression RLE. Au lieu de coder la rptition
dune mme squence sur une ligne, comme le fait le codage vu prcdemment, la
compression RL utilise ce quon dsigne par codage par zone. Le procd est simple : le
programme tente de dterminer dans toute limage des rectangles dont les pixels sont
identiques. Ainsi, il suffira de coder le nombre de rptitions du rectangle raliser lors de la
dcompression, les deux points extremums (P1, P2) de chaque rectangle, et enfin la squence
du rectangle. (cf. figure 7)
12 Run Length
8/7/2019 Les formats de compression dimage
13/37
13
P1x P2x
P1y
P2y
- Rectangle 1 (P1,P2)- Rectangle 2 (P3,P4)-
P3y
P4y
P3x P4x
0 1 2 3 4 5 6 7 8
0
1
2
34
5
x
y
Figure 7 . Exemple dimage au format RL
La difficult majeure de ce mode de compression est de trouver des rectangles identiques
dans limage. Les algorithmes actuels sont rcursifs, cest--dire quils partent dune taille de
rectangle n x m, avec n et m maximum, puis ils font tendre n et m vers 1 (1 pixel). Le
problme est que cette manire de procder est excessivement coteuse en temps, lors de la
compression, mais aussi lors de la dcompression puisquil faut redessiner (presque)
compltement limage.
3. Le codage de HuffmanEn 1952, Huffman inventa une nouvelle mthode de compression appele compression
arbre. Le principe est simple, une image est forme par de nombreux caractres diffrents,
mais certains reviennent plus souvent que dautres. Aussi, lalgorithme de huffman tablit un
arbre contenant les signes, les symboles les plus frquents, ainsi que leur frquence
dapparition. Puis, chaque caractre est assign un code. Le signe le plus souvent utilis,
plac la base de l'arbre, reoit le code le plus court. Le caractre le moins frquent aura doncle plus long code binaire. Par consquent, la suite finale des mots cods sur des longueurs
variables (petite pour les symboles courants et longs pour les mots peu frquents), sera
mathmatiquement plus petite quavec un codage sans compression, donc sur des mots de
taille standard.
Exemple darbre
8/7/2019 Les formats de compression dimage
14/37
14
- Source du fichier image :
7B 33 46 EE 4F 90 33 7B 1C D3 33 46 EE 7B..
- Arbre :
Squence Frquence Code attribu
7B 3 033 46 EE 2 1
Tableau 2. Exemple d'arbre
Lors de la compression, lalgorithme crira le tableau des quivalences Code-Squence(cf.
tableau 2), le fichier contiendra donc non plus les squences binaires de limage, mais les
diffrents codes attribus par le programme de compression. Pour dcompresser, il suffira de
remplacer tous les codes par les squences quivalentes (prsentent dans lentte du fichier).Cette mthode de codage donne de bon taux de compression, principalement sur des
images monochromes, pour les fax par exemple, mais il est aussi utilis dans la compression
JPEG, et ceux, pour tous les types dimage.
4. La compression LZW 13a) Introduction
Le systme de compression dimage le plus utilis travers le monde reste la compression
LZW (acronyme de ses inventeurs Lempel-Ziv-Welch). Cet algorithme (cf. Annexe n1 p 29)
utilise, comme la compression de Huffman vue prcdemment, un tableau, un dictionnaire
pour raliser une compression du type non-destructrice. Contrairement au codage prcdent,
la compression LZW nencode pas dans le fichier le dictionnaire, celui-ci sera reconstruit lors
de la dcompression. Le LZW est un driv du codage LZ. Les concepteurs, Abraham
Lempel et Jakob Ziv utilisaient principalement le principe de compression LZ dans un autre
format, nomm LZ77, ddi aux programmes d'archivage. Les formats ZIP, ARJ et LHA
basent leur compression sur cet algorithme. En 1978 ils crrent le compresseur LZ78
spcialis dans la compression d'images et de fichiers binaires. Puis en 1984, Terry Welch
modifia le format LZ78 pour pouvoir lutiliser dans les contrleurs de disques durs, le format
LZW est n.
Pour comprendre plus aisment le principe de compression, nous allons tudier le code
LZW dans sa forme initiale (il existe plusieurs variantes), au travers dun exemple.
13 Lempel, Ziz et Welch
8/7/2019 Les formats de compression dimage
15/37
15
b) Etude dun exemple de compressionPrenons la squence suivante : AIDE TOI LE CIEL T AIDERA (squence non
hexadcimale, mais ASCII, afin de mieux comprendre le procd de codage).
Nous pouvons remarquer que cette squence contient quelques redondances (lettres
colories) :AIDE TOI LE_CIEL_T AIDERA
Afin de mieux comprendre le principe de compression utilisant un dictionnaire, la figure ci-
dessous montre chaque tape ce quil ce passe dans le fichier compress, dans le
dictionnaire, et dans la mmoire tampon (ou buffer) du programme.
Figure 8. Principe de compression dictionnaire (LZW)
Au dbut de la compression, le dictionnaire est initialis, et contient les 256 codes ASCII,
cest--dire quil renferme dj les valeurs : A B C Ainsi, lalgorithme ajoutera ses propres
squences partir de ladresse de la case 256.
Pour dceler les redondances de la squence, le programme lit squentiellement chaque
octet un par un, et le place dans une mmoire tampon. Cet algorithme de compression
fonctionne de manire itrative. Au dpart, le programme met un caractre dans le buffer puis,
si cette valeur est dj contenue dans le dictionnaire, le programme met deux caractres dans
8/7/2019 Les formats de compression dimage
16/37
16
le buffer. Ainsi, chaque fois que le buffer contient une valeur connue (exemple : tapes 12,
18, 21, 23), lalgorithme rajoute un caractre (exemple : tapes 19, 22, 24).. Ds que la valeur
nest pas dj compacte dans le dictionnaire, le programme excute plusieurs tches : il
ajoute premirement cette valeur la fin du tableau, il recopie dans le fichier ladresse de la
dernire squence connue, et enfin, il recharge la mmoire tampon avec deux caractres. Il estimportant de noter quentre chaque itration, le programme ncrit rien, do le gain de place
(exemple : tapes 18, 21, 23).
c) Etude dtaille de lexempleLors de la premire tape, lalgorithme lit dans le fichier non-compress, le caractre A,
et lajoute dans la mmoire tampon. Comme le dictionnaire possde dj tout le code ASCII,
lalgorithme ajoute le caractre suivant, ce qui donne la valeur AI dans le buffer. Puisque le
dictionnaire ne contient pas cette valeur, le programme lajoute en fin de table, inscritladresse de la valeur prcdemment rpertorie (donc ladresse de A, soit 65), et recharge le
buffer du caractre suivant : D (avec le caractre prcdent :I). Lalgorithme procde de la
mme manire ensuite.
Nous pouvons remarquer qu ltape 12, le programme crit un mot spcial SP. Cette
valeur (1111 1111)2 a une signification bien prcise, elle indique un changement de codage.
En effet, avant ltape 12, les adresses retransmises dans le fichier compress taient codes
sur 8 bits, mais pour coder des adresses suprieures 255, il faut non plus 8, mais 9 bits. Cette
information est capitale pour le dcompresseur. Ce principe nous donne ainsi la possibilit de
pouvoir agrandir infiniment le nombre de bits des adresses du dictionnaire, sans pour autant
coder les premires cases avec des bits inutiles.
Voici une rcapitulation des diffrents lments du dictionnaire la fin de la compression
de la squence (figure 9).
8/7/2019 Les formats de compression dimage
17/37
17
Figure 9. Constitution du dictionnaire aprs compression
d) ConclusionCe type de compression possde de nombreux avantages. Le principal tant la
reconstruction du dictionnaire pendant la dcompression, ce qui permet de ne pas le coder
dans le ficher. Les formats les plus rpandus utilisent en plus de leur propre algorithme, cette
mthode de compression (notamment les formats GIF, TIFF).
Cette mthode de compression peut obtenir des ratios suprieurs 2 : 1, et ce, sans aucune
altration de limage.
5. Le mode de compression JPEG14Le problme majeur de tous les codages prcdents tait que ces mthodes de compression
ne dlivraient de bon taux de compression que pour des images cibles, cest--dire que pour
des images vectorielles ou pour des images monochromes bref, pas pour des photographies,
ou toute autre image o les dtails sont nombreux. Ce pourquoi, en 1982, une runion entre
un groupe dexperts en photographie et lITU-T abouti sur la cration du JPEG (comit
conjoint d'experts de la photographie).
14 Joint Photographic Expert Group
8/7/2019 Les formats de compression dimage
18/37
18
A la diffrence du codage LZW, la compression JPEG est une compression avec pertes, ou
destructrice, et qui par consquent peut obtenir des ratios de 20 : 1 25 : 1, sans perte notable
de qualit.
a) Principe de compressionLe principe de compression du JPEG est constitu de plusieurs tapes :
- la prparation- la transformation- la quantification- lencodage
Prenons lexemple suivant : une image 640x480 RGB 24 bits par pixel.
La premire tape consiste transformer le codage de la couleur RGB, de limage
bitmap de dpart, en un codage YIQ, avec les combinaisons linaires vues dans la partie I.2 :Y = 0.299 R + 0.587 G + 0.114 B
I = 0.596 R - 0.275 G - 0.321 B
Q = 0.212 R - 0.523 G + 0.311 B
Mais pour gagner un peu de place, on arrondit gnralement les coefficients de la
luminance Y et de la chrominance (I et Q), pour obtenir :
Y = 0.3 R + 0.59 G + 0.11 B
I = 0.6 R - 0.28 G - 0.32 B
Q = 0.21 R - 0.52 G + 0.31 B
Les rsultats sont ensuite regroups en matrice 640x480. Nous obtenons donc trois
matrices de taille 640x480 reprsentant la luminance et la chrominance (2 matrices). Une des
astuces du code JPEG est dliminer les variations de la chrominance entre deux pixels. En
effet, lil de ltre humain nest que peu sensible ces minuscules variations. Aussi,
lalgorithme rtrcit la taille des matrices de I et Q, en effectuant la moyenne des deux
composantes de la chrominance, dans des carrs de 2x2 pixels. Nous obtenons alors des
matrices de chrominance de 320x240.
La deuxime action est ce quon appelle la transformation, ou DCT15. Lalgorithme de
compression dcoupe premirement les matrices en blocs de 8x8 pixels, et leur applique
ensuite la fonction DCT. Cette fonction DCT est une transformation en srie (Fourier), qui
dlivre une reprsentation non plus spatiale, mais dans le domaine frquentiel. En effet, la
ligne et la colonne de la matrice reprsentent les axes X et Y dans le domaine spatial, et la
valeur dune case particulire reprsente la valeur de Z. Nous raisonnons donc en 3
15 Discrete Cosinus Transform
8/7/2019 Les formats de compression dimage
19/37
19
dimensions. La transformation de la matrice donne une nouvelle matrice contenant cette fois-
ci, les diffrentes puissances spectrales pour chaque frquence. Llment (0,0) reprsente la
valeur moyenne du signal.
Pour mieux comprendre, tudions ce quil ce passe dans la premire ligne dune matrice
8x8.- La variation de couleur nous donne ce signal :
- la transformation DCT en somme de fonctions sinusodales nous donne ceci :
Figure 10. Fonctions sinusodales et la somme de celles-ci
- Ainsi, la premire case de la matrice correspond une frquence particulire (la plus
petite : en rouge), dont lamplitude est dtermine par la valeur de cette case, et plus on
sloigne de la premire case, plus les frquences sont leves et plus les amplitudes sont
rduites.
- En appliquant ces transformations en deux dimensions, nous obtenons une matrice carre.
La quantification rside dans le faite que lalgorithme attribue chaque frquence,
chaque cellule de la matrice 8x8 pixels, un coefficient de perte. Lalgorithme annulera ou
diminuera les hautes frquences qui, reprsentent les plus petits dtails de limage.
Lattnuation de lamplitude des diffrentes frquences est dtermine par le ratio demand
par lutilisateur.
8/7/2019 Les formats de compression dimage
20/37
20
1 1 2 4 8 16 32 64
1 1 2 4 8 16 32 64
2 2 2 4 8 16 32 64
4 4 4 4 8 16 32 648 8 8 8 8 16 32 64
16 16 16 16 16 16 32 64
32 32 32 32 32 32 32 64
64 64 64 64 64 64 64 64
Tableau 3. exemple de coefficient d'attnuation
Cet exemple nous montre que les hautes frquences sont attnues de 64, alors quelamplitude des basses frquences (valeur moyenne de limage) nest pas modifie
(coefficient de 1). Chaque cellule sera donc divise (et arrondit) par le coefficient de la case
correspondante de la matrice de coefficients.
Enfin, la matrice obtenue est linarise en zigzag, selon le codage RLE (cf. chapitre
II.1), et est compresse avec la mthode de Huffman (cf. chapitre II.3).
8/7/2019 Les formats de compression dimage
21/37
21
Figure 11. Comparaison figures compresses en JPEG - figures non compresses
La figure 11 montre deux images codes en jpeg ( gauche), selon un ratio moyen, et
grossie plusieurs fois. Les images positionnes droite sont les mmes images que celles de
gauche, mais sans compression.
Avec le grossissement de limage, nous pouvons apercevoir les blocs de 8x8 pixels traitspar lalgorithme du jpeg, dans la premire image, et qui ne se retrouvent pas dans limage de
droite. De plus, dans la deuxime image de gauche, les bordures de lobjet sont moins nettes
que celles prsentent dans limage de droite. Le JPEG limine donc les plus petits dtails de
limage, mais il tend aussi mlanger le fond de limage avec les bordures. Ainsi, cette
compression altre dangereusement les textes, et les transforme en une simple tche sur le
fond.
La compression JPEG permet nanmoins dobtenir de trs bon taux de compression,surtout pour des images complexes. Il est not quil existe une variante du codage JPEG
sans aucune perte, le lostless16, qui est principalement utilis dans limagerie mdicale, et qui
possde un ratio de 2 : 1, au maximum.
III. Les mthodes de compression rcentes1. La compression fractale
Dans les annes 1950, un mathmaticien nomm benot Mandelbrot, dcouvrit ce quon
appelle aujourdhui, le fractales. La reprsentation graphique des solutions dlivres par un
algorithme spcifique (cf. annexe n2 p 34), donne une image constitue de rptitions
infinies dune mme forme, dun mme motif. (cf. figure 12)
16 Sans Perte
8/7/2019 Les formats de compression dimage
22/37
22
Figure 12. Fractale du type Julia
Puisquune image fractale est une rptition dun motif plus ou moins rtrci, plus ou
moins transform (translation, rotation, homothties), Barnsley et lide de rechercher
dans nimporte quelle image, des formes similaires. Ainsi, au lieu de coder toute limage, la
compression fractale nencode plus que le ou les motifs, ainsi que les transformations
raliser.
1 : motif de base
2 : translation du motif de
x=a et y=b, rduction de lataille de 1/3, et rotation du
motif de 45.
3 : translation du motif de
x=c et y=d, rduction de la
taille de 1/2, et rotation du
motif de 100.
Tableau 4. Exemple de compression fractale
1
3
2
a
b
c
d
8/7/2019 Les formats de compression dimage
23/37
23
En 1988, on annonait des taux de compression allant jusqu 1/10 000. Mais ce taux de
compression fabuleux a t ralis en 100 heures de travail, avec un ordinateur biprocesseur
(donc deux processeurs), et toute une quipe de chercheurs. Aujourdhui, et malgr lavance
considrable des microprocesseurs, la compression fractale peut compter sur des taux allant
de 1/4 1/100, pour des temps raisonnables.
2. La compression par ondelettesIl y a quelques mois encore, les chercheurs travaillaient llaboration dun nouveau
format, le JPEG 2000, utilisant une nouvelle et prometteuse mthode de compression, appele
compression par ondelettes.
La thorie des ondelettes a t invente par le mathmaticien hongrois Alfred Haar dans les
annes 1910. Une ondelette est une transformation de fonction, comme Laplace ou Fourier,
qui oscille principalement dans un intervalle restreint.
Figure 13. Reprsentation d'une sinusode et d'une ondelette
Nous pouvons voir sur la figure 13 que, contrairement la fonction Cosinus (en vert),
londelette Chapeau Mexicain possde une amplitude variable, et est quasiment nulle en
dehors de lintervalle [-4,4]. Cette variation trs locale de la fonction permet nanmoins de
savoir prcisment ce qui ce passe en nimporte quel endroit du signal original (non
transform).Contrairement au format JPEG, qui dcompose une image en blocs de 8x8 pixels, la
compression JPEG 2000 transforme chaque ligne horizontale en un signal, qui sera ensuite
transform en somme dondelettes. En effet, la variation de couleur et dintensit de chaque
pixel dune ligne peut tre assimil la variation de deux signaux. Chaque signal sera ensuite
directement transform en une srie dondelettes, rptes en diffrents endroits, et
diffrentes chelles, pour que la somme dcrive le plus exactement le signal original (cf.
figure 14). Lalgorithme liminera les variations les plus infimes pour compresser encore
davantage limage.
8/7/2019 Les formats de compression dimage
24/37
24
Figure 14. Exemple de fonctions ondelette et leur somme
Aujourdhui, le format JPEG 2000 attend dtre officiellement valid par lOrganisation
Internationale de Normalisation (ISO), pour se voir enfin utilis dans tous les logiciels
dimagerie. Une variante de ce format a aussi vu le jour, le MJP2 (Motion JPEG 2000). Celui-
ci utilise aussi la compression par ondelettes, mais pour des images en mouvement cest--
dire pour la vido numrique.
8/7/2019 Les formats de compression dimage
25/37
25
Conclusion
En somme, nous avons vu quil existait de nombreuses manires de coder, de reprsenter,
de compresser des images. Il existe une multitude de formats pour compenser la diversit des
images, diffrentes par leur dimension, leur nombre de couleur, leur mthode dereprsentation (vectorielle et bitmap). Chaque format est complmentaire des autres.
Aujourdhui, avec la considrable avance technologique, les algorithmes se permettent de
raliser de nombreux calculs pour compresser et dcompresser une image. Les ratios devenant
de plus en plus grand, sans pertes significative et relle de la qualit de limage.
Les dernires mthodes de compression (fractale et ondelette) sont particulirement
prometteuses. Elles montrent la ncessit dassocier la programmation informatique, les
mathmatiques. Lavenir de la compression ne pourra soprer quau travers dalgorithmesmathmatiques, et les progrs de la recherche mathmatique entraneront indubitablement une
avance dans la compression dimages et de fichiers.
8/7/2019 Les formats de compression dimage
26/37
26
Rsum
En informatique, une image du type bitmap est reprsente par un tableau en deux
dimensions, dont les valeurs contenues dans les cases (ou pixel) caractrisent la couleur du
pixel. Tandis quune image du type vectorielle est reprsente par des quationsmathmatiques du style z=f(x,y), avec z la couleur et x,y les composantes spatiales.
Il existe plusieurs codages pour symboliser la couleur, le plus connu tant le RGB (ou
RVB : Rouge, Vert, Bleu), qui code une couleur selon ses trois composantes rouge, bleu et
vert, ou le codage YUV utilis par les formats PAL et SECAM et qui code la couleur selon la
luminance et la chrominance.
On distingue deux types de compression, la compression non destructrice qui, ne modifie
en rien la qualit de limage, et la compression dite destructrice qui elle limine les plusinsignifiantes donnes, comme notamment un changement rapide de chrominance entre deux
pixels. Certains algorithmes (comme la compression de Huffman et LZW) ralisent un arbre
ou un dictionnaire afin dy ranger les redondances les plus frquentes dans limage. Dautres
se chargent de reprer les formes qui se reproduisent comme le codage par fractale ou RLE.
Afin, un autre format, le JPEG, dcoupe limage en bloc de 8x8 pixels pour le JPEG et en
lignes pour le JPEG 2000, puis ralise une transformation mathmatique et change la
variation de couleur en somme de fonctions sinusodales pour lun et en somme dondelettespour lautre.
Environ 237 mots
8/7/2019 Les formats de compression dimage
27/37
27
Table des illustrations
Figures :
Figure 1. Pixels ...........................................................................................................................5
Figure 2. Reprsentation graphique du codage RGB................................................................7
Figure 3. Reprsentation graphique du codage HSL..................................................................8
Figure 4. Reprsentation graphique du codage CIE...................................................................9
Figure 5. Comparaison d'un grossissement dune image vectorielle et dune image Bitmap.. 10
Figure 6. linarisation en ligne, en colonne et en zig-zag ........................................................12
Figure 7 . Exemple dimage au format RLE ............................................................................13
Figure 8. Principe de compression dictionnaire (LZW) ........................................................15Figure 9. Constitution du dictionnaire aprs compression .......................................................17
Figure 10. Fonctions sinusodales et la somme de celles-ci.....................................................19
Figure 11. Comparaison figures compresses en JPEG - figures non compresses.................21
Figure 12. Fractale du type Julia ............................................................................................22
Figure 13. Reprsentation d'une sinusode et d'une ondelette..................................................23
Figure 14. Exemple de fonctions ondelette et leur somme.......................................................24
Tableaux :
Tableau 1. Exemple de codage du format RLE........................................................................11
Tableau 2. Exemple d'arbre .....................................................................................................14
Tableau 3. Exemple de coefficient d'attnuation......................................................................20
Tableau 4. Exemple de compression fractale...........................................................................22
8/7/2019 Les formats de compression dimage
28/37
28
Bibliographie
- uvres et revues :- Dictionnaire Encyclopdique Larousse, Larousse, 2002.
- Matthieu Crocq, Science et vie , page 92 95, N1016 Mai 2002.
- sites Internet :- Piscart et Olivier Van Muysewinkel, Compression d'une image - Norme JPEG ,
, consult le 20/09/2003.
- Les compressions format par format ,
http://membres.lycos.fr/compressions/formats.html, consult le 20/09/2003.
- Ces logiciels qui transforment vos fichiers en liliputiens ,
http://www.fmv.ulg.ac.be/jlc/img/others/comp.html, consult le 20/09/2003.- Dmonstration du JPEG 2000 ,
http://www.cmla.ens-cachan.fr/Utilisateurs/ymeyer/jpeg2000Demo/jpeg2Dem.html, consult
le 20/09/2003.
- Yannick Pinson, La compression par ondelette , http://www.image-etc.com/faq/wavelet/index.htm, consult le 20/09/2003.
- Jean-Franois Pillou , Compression dimage ,
http://www.commentcamarche.net/video/compimg.php3, consult le 20/09/2003.- Jacques WEISS, Introduction au codage des images en sous-bandes ,
http://www.supelec-rennes.fr/ren/perso/jweiss/wavelet/intro.htm, consult le 20/09/2003.
- Stphane Desplanques et Philippe MERLE, La compression dimage : algorithme
LZW , http://www-ensimag.imag.fr/cours/Exposes.Reseaux/Compression/page5.html,
consult le 20/09/2003.
- Mark Nelson, LZW , http://dogma.net/markn/articles/lzw/lzw.htm, consult le
20/09/2003.- Julien Michot, Galeries de fractales , http://www.fractals.fr.fm, consult le
20/09/2003.
8/7/2019 Les formats de compression dimage
29/37
29
Annexe 1
Exemple dalgorithme en C de compression LZW/********************************************************************
**** Copyright (c) 1989 Mark R. Nelson
**
** LZW data compression/expansion demonstration program.
**
** April 13, 1989
**
*****************************************************************************/
#include
#define BITS 12 /* Setting the number of bits to 12, 13*/
#define HASHING_SHIFT BITS-8 /* or 14 affects several constants. */
#define MAX_VALUE (1
8/7/2019 Les formats de compression dimage
30/37
30
else
{
printf("Input file name? ");
scanf("%s",input_file_name);
}
input_file=fopen(input_file_name,"rb");
lzw_file=fopen("test.lzw","wb");
if (input_file==NULL || lzw_file==NULL)
{
printf("Fatal error opening files.\n");
exit();
};
/*
** Compress the file.
*/
compress(input_file,lzw_file);
fclose(input_file);
fclose(lzw_file);
free(code_value);
/*
** Now open the files for the expansion.
*/
lzw_file=fopen("test.lzw","rb");
output_file=fopen("test.out","wb");if (lzw_file==NULL || output_file==NULL)
{
printf("Fatal error opening files.\n");
exit();
};
/*
** Expand the file.
*/
expand(lzw_file,output_file);
fclose(lzw_file);
fclose(output_file);
free(prefix_code);
free(append_character);
}
/*
** This is the compression routine. The code should be a fairly close
** match to the algorithm accompanying the article.
**
*/
compress(FILE *input,FILE *output)
{
unsigned int next_code;
unsigned int character;
unsigned int string_code;
unsigned int index;
int i;
next_code=256; /* Next code is the next available string code*/
for (i=0;i
8/7/2019 Les formats de compression dimage
31/37
31
printf("*");
}
index=find_match(string_code,character);/* See if the string is in */
if (code_value[index] != -1) /* the table. If it is, */
string_code=code_value[index]; /* get the code value. If */
else /* the string is not in the*/
{ /* table, try to add it. */
if (next_code
8/7/2019 Les formats de compression dimage
32/37
32
next_code=256; /* This is the next available code to define */
counter=0; /* Counter is used as a pacifier. */
printf("Expanding...\n");
old_code=input_code(input); /* Read in the first code, initialize the */
character=old_code; /* character variable, and send the first */
putc(old_code,output); /* code to the output file */
/*
** This is the main expansion loop. It reads in characters from the LZW file
** until it sees the special code used to inidicate the end of the data.
*/
while ((new_code=input_code(input)) != (MAX_VALUE))
{
if (++counter==1000) /* This section of code prints out */
{ /* an asterisk every 1000 characters */
counter=0; /* It is just a pacifier. */
printf("*");
}
/*
** This code checks for the special STRING+CHARACTER+STRING+CHARACTER+STRING
** case which generates an undefined code. It handles it by decoding
** the last code, and adding a single character to the end of the decode string.
*/if (new_code>=next_code)
{
*decode_stack=character;
string=decode_string(decode_stack+1,old_code);
}
/*
** Otherwise we do a straight decode of the new code.
*/
else
string=decode_string(decode_stack,new_code);
/*
** Now we output the decoded string in reverse order.
*/
character=*string;
while (string >= decode_stack)
putc(*string--,output);
/*
** Finally, if possible, add a new code to the string table.
*/
if (next_code 255)
{
*buffer++ = append_character[code];code=prefix_code[code];
if (i++>=4094)
{
8/7/2019 Les formats de compression dimage
33/37
33
printf("Fatal error during code expansion.\n");
exit();
}
}
*buffer=code;
return(buffer);
}
/*
** The following two routines are used to output variable length
** codes. They are written strictly for clarity, and are not
** particularyl efficient.
*/
input_code(FILE *input)
{
unsigned int return_value;
static int input_bit_count=0;
static unsigned long input_bit_buffer=0L;
while (input_bit_count (32-BITS);
input_bit_buffer 24,output);
output_bit_buffer
8/7/2019 Les formats de compression dimage
34/37
34
Annexe 2
Exemple de programme en C de ralisation de fracales
/*****************************************************************************
FRACTALES
Auteur: Michot Julien
Cr le 06-04-03
Disponible sur www.fractals.fr.fm ou sur www.cppfrance.com
Julia :
z=z*z+complex(0.3,-0.3)
Mandelbrot :
z=z*z+pixel
*****************************************************************************/
#include
#include
#include
#include
#include
#define MANDELBROT z=z*z+pixel
#define JULIA z=z*z+complex(0.3,-0.3) //ou (-.1,-.7)
#define ITERATION 50
#define MAX_VALUE 128
#define ADRESSE "C:\\TCLITE\\BGI" // metre l'adresse du dossier BGI de votre compilateur
void Initialise(void);
void Couleur(complex z,long int x, long int y,int o);
void Parametres(float Choix[]);
void main(void)
{
float Choix[6];
double i,j;float Xmin,Xmax,Ymin,Ymax,Type,colorr;
long int x,y;
8/7/2019 Les formats de compression dimage
35/37
35
int stop=1,o,teste;
long int val;
int iter=1;
int iter_max=ITERATION;
int cblanc=0;
float bailout=MAX_VALUE;complex z=complex(0,0);
complex pixel=complex(0,0);
Initialise();
restorecrtmode();
do
{
z=complex(0,0);
Parametres(Choix);
Xmin=Choix[0];
Xmax=Choix[1];
Ymin=Choix[2];
Ymax=Choix[3];
Type=Choix[4];
colorr=Choix[5];
setgraphmode(getgraphmode());
if ( Choix[4]==1) o=100;
else { o=1; bailout=1;}
stop=1;
outtextxy(0,0,"Please press a key...");
getch();
for(i=Xmin;i
8/7/2019 Les formats de compression dimage
36/37
36
if( Choix[4] ==2 ) JULIA;
else MANDELBROT;
if( norm(z)>bailout || kbhit() ){ stop=0; cblanc=1;}
if( norm(z)
8/7/2019 Les formats de compression dimage
37/37
int
Tab[]={WHITE,YELLOW,LIGHTCYAN,CYAN,LIGHTBLUE,BLUE,LIGHTMAGENTA,MAGENTA,LIGH
TRED,RED,LIGHTGREEN,GREEN,BROWN,LIGHTGRAY,DARKGRAY};
for (i=0;i