Accueil > Dossiers > Compression d'image

FORMATS GIF ET JPEG

Qu'allez vous apprendre dans ce dossier ?

Ce dossier a pour but de vous renseigner sur les formats les plus utilisés que sont le GIF et le JPEG. Il vous expliquera aussi leurs compressions qui sont le DCT, le LZW et celle de Huffman.


Un petit mot de vocabulaire...

Afin de vous permettre de comprendre le mieux possible cet article, voici deux mots de vocabulaire importants concernant les méthodes de compression : la compression symétrique et la compression asymétrique. La compression symétrique désigne une méthode de compression et de décompression de l'image identique, qui demandera donc le même temps pour compresser que pour décompresser (on parle de "symétrie" car d'un point de vue assez imagé, la symétrie de la compression nous donnera une décompression parfait). La compression asymétrique désigne une méthode de compression et de décompression de l'image dont une partie du traitement (soit la compression, soit la décompression) est beaucoup plus longue que l'autre : par exemple, si en compressant un fichier vous mettez trois minutes et que pour le décompresser vous mettez une dizaine de secondes, on parle de compression asymétrique.


Les fichiers JPEG

D'où vient l'abréviation ?

Le nom JPEG est l'abréviation de "Joint Photographic Expert Group" en faisant référence a ce groupe d'expert ayant établit la norme JPEG en 1991. Ce groupe vient de l'association des groupes de normalisation CCITT et ISO.

Où utiliser la compression JPEG ?

La compression utilisée dans les fichiers JPEG est une compression dite "destructrice" car elle baisse la qualité de l'image et détruit de façon irréparable certains pixels. Cependant, la destruction est prévue pour être adaptée à l'oeil : vous ne verrez pas cet effet de destruction a moins que la qualité soit volontairement mise très bas ou que vous disposiez d'une grosse loupe... Cette compression destructrice est donc idéale pour les voix de l'internet puisque les images sont principalement destinée à être vue, par contre il ne faut surtout pas l'utiliser pour l'imprimerie !

Comment fonctionne la compression JPEG ?

Avant de parler de la compression du JPEG, il est nécessaire de savoir qu'elle est destinée à l'oeil humain et que celui-ci est plus sensible à la l'intensité de la lumière qu'aux couleurs. Le JPEG fonctionne donc en donnant plus d'importantes à l'intensité de la lumière qu'aux couleurs : les informations concernant la couleur sont codées sur un espace moins important grâce à l'unification des couleurs par bloc de points afin de diminuer l'information (vous avez dû voir en effectuant un zoom sur un image compressée en JPEG qu'il y a des blocs qui la compose).

Pour se compresser, le JPEG se base surtout sur la méthode de compression DCT (se rapporter à la partie concernant le DCT pour de plus amples informations). Dans la plupart des cas, après avoir effectué la compression DCT (qui est une compression "destructrice"), il y a une compression de Huffman (se rapporter à la partie concernant la compression de Huffman pour de plus amples informations) qui n'est pas destructrice ou l'utilisation de compression arithmétiques qui remplacement la compression de Huffman pour avoir une meilleure qualité.

Quelles sont les étapes de préparation d'une image JPEG ?

Il y en a cinq : préparation de l'image, application de la compression DCT, quantification (pour atténuer les hautes fréquences), remplacement des blocs résultats de la compression DCT par leur différence avec l'élément correspondant du bloc précédent (permettant d'avoir de plus petits nombres qui prennent donc moins de place), linéarisation des blocs (pour regrouper les éléments les moins importants en fin de liste de la linéarisation). Vous pouvez consulter avec explications détaillées et croquis ces étapes à l'adresse suivante : http://iphilgood.chez.tiscali.fr/Codage/Compressionjpeg.htm.

A ne pas faire !

Si vous travaillez avec une image, travaillez la dans des extensions d'images non compressées puis enregistrez sous une extension d'image non compressée (si vous pensez travailler à nouveau sur l'image) et une extension d'image compressée (uniquement pour la version finale). Vous ne devez surtout pas enregistrer une image en JPEG puis travailler dessus et enregistrer votre travail en JPEG : la compression JPEG étant destrutrice, vous perdrez beaucoup trop de données ! A noter aussi, comme déjà dit, que cette compression est destinée surtout à l'internet mais qu'il ne faut pas s'en servir en imprimerie.

Résumé des points forts et points faibles...

Le JPEG est à utiliser pour la circulation d'image de plus de 256 couleurs sur Internet.
Il ne faut pas utiliser le JPEG pour :
- Enregistrer un travail en cours sur lequel on reviendra travailler
- Imprimer
- Les images de 256 couleurs ou moins


Les fichiers GIF

D'où vient l'abréviation ?

Le nom GIF est l'abréviation de "Graphics Interchange Format", c'est un format mit au point par CompuServe (service en ligne datant de 1976).

Où utiliser la compression GIF ?

La compression GIF n'est pas destructrice quand elle est sélectionnée pour avoir le même nombre de couleurs que l'image d'origine (avec un maximum de 256 couleurs) ; cependant si des images de plus de 256 couleurs sont enregistrées en GIF, alors leur nombre de couleur maximal sera ramené à 256 couleurs. A noter que l'on entend par le fait de cette destruction pour nombre supérieur de couleur, une qualité égale mais un nombre de couleur moindre : le GIF conserve toute la qualité des images mais pour une palette de 1 à 256 couleurs.

Cette palette maximale de 256 couleurs nous oblige donc à n'utiliser le GIF que dans le cadre d'Internet et pour des images ayant de 1 à 256 couleurs (boutons, textes, bannières...). A noter aussi que :
- cette compression dans sa version 89a permet de garder la transparence des images
- les images en "GIF animés" ne sont que des images en GIF mises à la suite les unes des autres

Comment fonctionne la compression GIF ?

Le GIF code chaque point sur un octet puis utilise l'algorithme de compression LZW (se repporter à la partie concernant le LZW pour de plus amples informations) qui est non destructeur mais qui a le problème d'être sous un brevet. Le GIF exploite en toute illégalité cet algorithme de compression LZW que "Unisys" espère rentabiliser depuis 1995.

A ne pas faire !

Le LZW étant sous une sorte de copyright, il faudra payer pour vendre un produit exploitant cet algorithme de décompression ; le prix a payer est variable mais reste de l'ordre de 5000$. Cependant, vous pouvez utiliser le GIF comme bon vous semble sur internet même s'il est illégal car il est utilisé de façon majeure par des millions de site et c'est une quête impossible pour Unisys d'espérer faire payer chacun des sites qui utilise le GIF.

Résumé des points forts et points faibles...

Le GIF est à utiliser pour la circulation d'images de 1 à 256 couleurs sur Internet.
Il ne faut pas utiliser le GIF pour :
- Imprimer
- Les images avec plus de 256 couleurs
- Des utilisations dans un produit destiné à la vente (en raison des droits à payer)


La Compression de Huffman

Où est-elle utilisée ?

Dans la compression des images TIFF et parfois JPEG.

Comment fonctionne cette compression ?


Photographie de David Huffman

L'algorithme de la compression a été développé par David Huffman en 1952, il consiste à coder les valeurs qui reviennent souvent sur peu de bits et à coder les valeurs plus rares sur davantage de bits. En codant les valeurs rares sur des bits très long, il y a une augmentation de la place occupée au lieu d'une compression, mais on gagne beaucoup de place sur le codage des valeurs fréquentes : il y a une augmentation d'un côté et une très forte diminution de l'autre.

L'algorithme se décompose en deux phases :
- On lit l'ensemble des données que l'on veut compresser et on compte le nombre de fois qu'une information apparaît. On batit au fur et à mesure une table qui est ordonnée avec un ordre décroissant des fréquences d'apparitions de chaque information.
- On prend les deux éléments de la table ayant les plus petites fréquences et on les assemble à l'aide d'un arbre binaire. A l'élément résultant de cet assemblage on associe une fréquence calculée par l'addition des fréquences des deux éléments ayant été assemblés (par exemple si la fréquence d'un élément est 0,5 et celle de l'autre est 0,25 alors la fréquence associée est 0,5 + 0,25 = 0,75). Ensuite, on reclasse l'élément dans la table en éliminant les deux éléments qui ont été utilisé pour son assemblage.

Y a t-il des particularités utilisables dans la compression de Huffman ?

Oui : un code ne peut pas être le début d'un autre. On peut donc lire le fichier bit à bit en utilisant l'en-tête pour reconstruire l'arbre et, donc, le décompresser.

A quoi sert l'en-tête pour décompresser ? Quels sont ses effets ?

L'en-tête donne la clé de décodage des octects nécessaire à la décompression. Cependant, dans les petits fichiers cet en-tête est trop gros et le fichier "compressé" devient donc plus gros que le fichier non compressé : le gain de compression est négatif.

Problèmes avec les gros fichiers

Pour les gros fichiers, il y a un gain réel de compression mais le temps utilisé pour lire l'ensemble des données et faire la table peut parfois être assez important. Cependant, on peut accélérer l'écriture des tables en utilisant des tables qui existent déjà ! En limitant l'utilisation à de la compression de texte uniquement, on peut utiliser une table pour l'Alphabet déjà existante ; en voici une, prise sur le site Alpha*Beta :

Lettre

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z

Français

0.1732
0.0690
0.0068
0.0339
0.1428
0.0095
0.0098
0.0048
0.0614
0.0024
0.0006
0.0467
0.0222
0.0650
0.0464
0.0261
0.0104
0.0572
0.0624
0.0580
0.0461
0.0104
0.0005
0.0035
0.0018
0.0006

Anglais

0.1859
0.0642
0.0127
0.0317
0.1031
0.0208
0.0152
0.0467
0.0575
0.0008
0.0049
0.0321
0.0198
0.0574
0.0632
0.0152
0.0008
0.0484
0.0514
0.0796
0.0228
0.0083
0.0175
0.0013
0.0164
0.0005



La compression LZW

Où est-elle utilisée ?

Dans la compression des images GIF et TIFF, les fichiers avec l'extension .Z et .gzip sous Unix, les fichiers ayant l'extension .zip sous Windows.

A qui appartient cet algorithme ?

Cet algorithme n'est pas libre de droit, il est déposé sous brevet par Unisys Corporation sous le numéro U.S. Patent 4,558,302. Cette société fait payer l'exploitable de cette compression depuis 1995.

A ne pas confondre...

L'algorithme de compression de LZW est différent de celui de LZ77 et LZ78 ; les trois font partis de la même famille, mais LZW est sous licence d'Unisys. LZ77 a été développé en 1977 par Abraham Lempel et Jakob Ziv (d'où les initiales L et Z) ; ce compresseur est connu pour être utilisé dans PKZIP, ARJ et LHA et le format d'image PNG. Alors que LZ77 est spécialisé dans les données textuelles, LZ78 est efficace pour les images.

En 1984, alors qu'il travaillait chez Unisys, Terry Welch modifia LZ78 pour l'implémenter dans des contrôleurs de disques. Il rajouta donc l'initiale de son nom à celle de Lempel et Ziv pour donner l'algorithme Lempel Ziv Welch : LZW.

Comment fonctionne cette compression ?

L'information a compresser est découpée en plusieurs chaînes d'octects, chacune de ces chaînes est comparée à un dictionnaire : si elle est déjà dans le dictionnaire, alors on lui attribue la valeur chiffrée qu'elle a dans ce dictionnaire, et si elle n'y ai pas on la rajoute dans le dictionnaire en attribuant une nouvelle valeur chiffrée (la nouvelle valeur attribuée étant le nombre entier qui se positionne après la plus grande valeur du dictionnaire). Imaginons un dictionnaire qui, à l'initialisation, contienne uniquement "a" et y attribut donc la valeur 1 : si une chaîne de caractère différente de "a" est rencontrée, alors cette chaîne sera inscrite dans le dictionnaire et aura la valeur 2 ; si une nouvelle chaîne est rencontrée, elle sera inscrite dans le dictionnaire et aura la valeur "3", etc. etc.

Comment le format GIF et TIFF préparent-ils leurs données pour la compression LZW ?

Le format TIFF effectue une concaténation de points puis soumet les données à la compression LZW, le principal problème survient si l'image ne possède pas un nombre pair de points.

Le format GIF code chaque point sur un octet puis soumet la suite d'octets à la compression LZW. Le fait que, généralement, le dictionnaire soit initialisé avec les 256 valeurs de la table ASCII explique le maximum de 256 couleurs codées par le format GIF.


La compression DCT

Signification

La DCT est une transformée semblage à la FTT, elle est l'abréviation de "Discrete Cosine Transform", ce qui donne en français une "Transformée de Cosinus Discrète".

Où est-elle utilisée ?

Dans la compression des images JPEG.

Comment fonctionne cette compression ?

Le niveau de connaissances mathématiques étant assez élevés pour comprendre la compression DCT, nous allons juste énoncer le principe : vous pouvez cependant vous rendre sur cette page pour de plus amples informations http://iphilgood.chez.tiscali.fr/Codage/Compressionjpeg.htm. La DCT convertie les données d'une image en petites matrices, ou en "blocs" si vous préferez.