Les formats de compression d’image

download Les formats de compression d’image

of 37

Transcript of Les formats de compression d’image

  • 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