Brevet FR2879861A1 — publié le 20060623

PROCEDE DE COMPRESSION D'IMAGE La présente invention concerne le domaine du traitement d'image. Plus particulièrement, la présente invention a pour objet un procédé de 5 compression d'une image numérique. PRESENTATION GENERALE DE L'ART ANTERIEUR Dans de nombreuses applications, il est nécessaire de réduire la taille io des images numériques qui sont stockées en mémoire, afin de réduire l'espace mémoire occupé. Cette réduction de taille des images numériques peut être réalisée par divers procédés connus de compression. Un procédé connu de compression d'images numériques consiste dans une première étape à effectuer une décomposition de l'image numérique initiale en un ou plusieurs plans, et dans une deuxième étape à effectuer une compression de chaque plan. Dans le cas d'une image numérique couleur, dite image RVB (Rouge Vert Bleu), la première étape est par exemple réalisée, en utilisant une transformation dite LUV, également connue sous le nom de transformation YCrCb, qui permet de décomposer l'image numérique en trois plans indépendants L, U et V. Le plan L est appelé plan luminance et contient toute l'information relative au contraste de l'image numérique initiale, les plans U et V sont appelés plan chrominance U et plan chrominance V et contiennent toute l'information relative à la teinte (composition spectrale). Dans le cas d'une image numérique en noir et blanc, la première étape consiste à transformer l'image numérique initiale en un unique plan luminance L. Un procédé de compression permettant la réalisation de la deuxième étape précitée est connu sous le norn de procédé de compression JPEG (acronyme de l'expression anglo-saxonne Joint Photographic Experts Group ), et a déjà été décrit en vue de sa normalisation, dans un document, référencé CD 10918-1, intitulé "Digital compression and coding of continuoustone still images" et publié par le comité international ISO/IEC JTC s 1/SC2/WG10. Le procédé de compression JPEG appliqué sur chaque plan L, U et V permet d'obtenir une image compressée, dont la taille ainsi que la qualité de l'image après décompression dépendent des paramètres du procédé, et notamment de la matrice de quantification utilisée. io Un but de la présente invention est de proposer un procédé de compression d'une image numérique, qui utilise certaines étapes du procédé de compression JPEG, mais qui permet, à qualité égale, d'obtenir des taux de compression plus importants*que le procédé de compression JPEG classique. PRESENTATION DE L'INVENTION L'invention concerne un procédé de compression d'une image numérique, le procédé comprenant les étapes consistant: à déterminer une pluralité de matrices de coefficients à partir de 20 l'image numérique, puis pour chaque matrice à associer, à un coefficient de valeur non nulle, un code valeur à longueur variable représentant la valeur du coefficient et une magnitude indiquant le nombre de bits du code valeur, à associer, à une succession de coefficients de valeur nulle, un code nombre représentant le nombre de coefficients de valeur nulle successifs et une magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est inférieur strictement à un seuil, à effectuer un codage des magnitudes et des codes nombre en attribuant un mot d'une séquence de mots à chaque valeur de magnitude ou de code nombre en fonction de l'occurrence de cette valeur, les mots de la séquence de mots pouvant être de longueur variable ou de longueur fixe, à obtenir une image numérique compressée. L'étape de codage des magnitudes et des codes nombre permet de diminuer le nombre de bits du fichier coclé relatif à l'image numérique d'entrée. En diminuant la taille du fichier codé relatif à l'image numérique d'entrée, on io diminue l'espace mémoire nécessaire pour stocker ce fichier. Des aspects complémentaires, mais non limitatifs du procédé proposé sont les suivants: - le procédé comprend en outre l'étape consistant à associer, à une succession de coefficients de vapeur nulle, un code binaire de longueur fixe représentant le nombre de coefficients de valeur nulle successifs, la magnitude réservée aux coefficients de valeur nulle et à répéter la magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est supérieur ou égal au seuil, le procédé comprend en outre l'étape consistant à associer, à une succession de coefficients de valeur nulle, une magnitude non utilisée précédemment si le nombre de coefficients de valeur nulle successifs correspond au nombre de coefficients non traités de la matrice de coefficients, - l'étape consistant à effectuer un codage des magnitudes et des codes nombre comprend l'étape consistant à attribuer à chaque valeur de magnitude ou de code nombre un mot parmi la séquence de mots suivante: 1, 001, 010, 011, 0001, 00001, 000001, 000000, l'étape consistant à effectuer un codage des magnitudes et des codes nombre comprend l'étape consistant à attribuer à chaque valeur de magnitude un mot parmi la séquence de mots suivante: 10, 11, 01, 001, 0001, 00001, 000001, 0000100, les mots sont attribués par (longueur croissante aux valeurs de magnitude ou de code nombre par fréquence décroissante, les valeurs de magnitude ou de code nombre les plus fréquentes étant codées avec les mots les plus courts et les valeurs de magnitude ou de code nombre plus rares étant codées avec des mots plus long, l'étape consistant à effectuer un codage des magnitudes et des codes nombre comprend les étapes consistant: io o à choisir entre des première, deuxième et troisième séquences de mots, la séquence qui permet d'obtenir le code compressé le plus court, la première séquence de mots comprenant les mots de longueur variable suivants: 1, 001, 010, 011, 0001, 00001, 000001, 000000, la deuxième séquence de mots comprenant les mots de longueur variable suivants: 10, 11, 01, 001, 0001, 00001, 000001, 000000, et la troisième séquence de mots comprenant des mots de longueur fixe, et o à attribuer à chaque valeur de magnitude ou de code nombre un mot de la séquence de mots choisiie. - les matrices sont des matrices carrées comprenant soixante quatre coefficients (8x8), le seuil est égal à huit et les mots de longueur fixe de la troisième séquence de mots sont des mots de trois bits, L'invention concerne également un système pour la compression d'une image numérique, le système comprenant: des moyens aptes à déterminer une pluralité de matrices de coefficients à partir de l'image numérique, puis pour chaque matrice des moyens aptes à associer, à un coefficient de valeur non nulle, un code valeur à longueur variable représentant la valeur du coefficient et une magnitude indiquant le nombre de bits du code valeur, des moyens aptes à associer, à une succession de coefficients de valeur nulle, un code nombre représentant le nombre de coefficients de valeur nulle successifs et une magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est inférieur strictement à un seuil, des moyens aptes à effectuer un codage des magnitudes et des codes nombre en attribuant un mot d'une séquence de mots à chaque valeur de magnitude ou de code nombre en fonction de l'occurrence de cette valeur, les mots de la séquence de mots pouvant être de longueur io variable ou de longueur fixe, des moyens aptes à obtenir une image numérique compressée. L'invention concerne également un support d'instruction comprenant des instructions permettant la mise en oeuvre du procédé décrit ci-dessus. PRESENTATION DES FIGURES D'autres caractéristiques et avantages de l'invention ressortiront encore de la description qui suit, laquelle est purement illustrative et non limitative et doit être lue en regard des dessins annexés, sur lesquels: La figure 1 illustre des étapes d'un mode de réalisation du procédé de la présente invention; La figure 2 illustre d'autres étapes du mode de réalisation du procédé de la présente invention; La figure 3 illustre une étape de transformation cosinus discrète 25 bidimensionnelle du mode de réalisation du procédé de la présente invention; La figure 4 illustre une étape de quantification du mode de réalisation du procédé de la présente invention; Les figures 5 et 6 illustrent une étape de linéarisation du mode de réalisation du procédé de la présente invention; La figure 7 illustre une étape de codage du mode de réalisation du procédé de la présente linvention. DESCRIPTION En référence à la figure 1, on a illustré les grandes étapes d'un mode de réalisation du procédé de compression d'image numérique selon l'invention qui io permet d'obtenir une image de sortie compressée à partir d'une image d'entrée. Une de ces étapes est connue sous le nom d'étape de Transformation en Cosinus Discret bidimensionnel (étape 1). L'image est décomposée séquentiellement en blocs élémentaires de 8x8 pixels subissant le même traitement. Une transformée en cosinus discrète bidimensionnelle (ou DCT selon l'acronyme de l'expression anglo-saxonne Discret Cosinus Transform ) est réalisée sur chaque bloc élémentaire. En sortie de l'étape de DCT, on obtient des blocs transformés. Une autre de ces étapes est connue sous le nom d'étape de Quantification (étape 2). Le but de cette étape est de supprimer l'information qui n'est pas visuellement significative de chaque bloc transformé par DCT. Les coefficients des blocs transformés par DCT sont quantifiés en association avec une table de quantification de 64 facteurs. Ces facteurs définissent des pas de quantification. En sortie de l'étape de quantification, on obtient des blocs quantifiés. Une autre de ces étapes est connue sous le nom d'étape de Codage (étape 3). Un codage entropique est réalisé sur chaque bloc quantifié. Ce codage utilise les propriétés statistiques des blocs quantifiés. En sortie de cette étape, les blocs codés sont placés dans un fichier. Comme précisé précédemment, lors de l'étape de DCT, l'image numérique est décomposée en blocs élémentaires de 8x8 pixels. Afin d'éviter l'introduction de bandes de bourrage (c'est-à-dire de suites de pixels de valeurs nulles) dans l'image numérique d'entrée lorsque les dimensions de celle-ci ne sont pas des multiples de 8, des formats fixes pour les images numériques d'entrées ont été adoptés. Ces formats fixes sont les suivants: ^ image de 72 x 96 pixels, ^ image de 96 x 120 pixels, et ^ image de 120 x160 pixels. io Nous allons maintenant décrire plus en détail les différentes étapes du mode de réalisation du procédé de compression d'image selon l'invention. En référence à la figure 2, on a illustré des étapes préalables optionnelles à l'étape de DCT illustrée à la figure 1. Ces étapes préalables sont illustrées pour une image couleur comprenant trois plans R, V, B (Rouge, Vert, Bleu). Les pixels de chaque plan sont codés sur huit bits. Un pixel de l'image couleur est obtenu par la concaténation des trois pixels correspondants des plans R, V et B. Une étape préalable optionnelle consiste à effectuer une transformation LUV de l'image numérique initiale pour obtenir des plans luminance L, chrominance U et chrominance V. Ces plans luminance L, chrominance U et chrominance V sont obtenus en effectuant des combinaisons linéaires des intensités de rouge, vert et bleu contenues dans les plans R, V, B de l'image numérique initiale. La transformation LUV est évidement donnée ici à titre d'exemple non limitatif. On pourrait sans pour autant sortir du cadre de l'invention, utiliser une autre transformation connue de l'homme du métier et permettant de décomposer une image numérique initiale en un ou plusieurs plans. Une autre étape préalable à l'étape de DCT consiste à décomposer chaque plan L, U, V en matrices élémentaires de 8x8 pixels. Par exemple, si chaque plan L, U, V présente une taille de 16x16 pixels, alors le plan L sera décomposé en quatre matrices élémentaires L1, L2, L3, L4 de 8x8 pixels, le plan U sera décomposé en quatre matrices élémentaires U1, U2, U3, U4 de 8x8 pixels, et le plan V sera décomposé en quatre matrices élémentaires V1, V2, V3, V4 de 8x8 pixels. Bien entendu, cette décomposition en matrices élémentaires de 8x8 pixels est donnée à titre d'exemple. On peut choisir de décomposer les plans en matrices élémentaires carrés de taille plus petite ou plus importante (4x4 pixels, 16x16 pixels, etc.). Dans le cas de matrices élémentaires de taille plus importante, le temps de traitement à l'étape de DCT sera plus important. Chaque matrice élémentaire obtenue en sortie de l'étape préalable de décomposition va ensuite être traitée selon les étapes décrites dans la suite. Une autre étape préalable à l'étape de DCT consiste à recentrer les valeurs des pixels de chaque matrice élémentaire autour de zéro. Les valeurs des pixels de chaque matrice élémentaire sont codées en binaire sur huit bits. Ces valeurs sont comprises entre 0 et 255. Pour recentrer ces valeurs autour de 0, on soustrait 128 à chacune des valeurs des pixels. Cette étape de recentrage est réalisée pour chaque matrice élémentaire. On a illustré ici les différentes étapes préalables sur une image couleur comprenant trois plans R, V, B (Rouge, Vert, Bleu). Le lecteur aura compris que ces étapes préalables et les étapes suivantes du procédé peuvent également être mises en oeuvre sur une image noir et blanc (dite image à niveau de gris) qui comprend quant à elle un seul plan. Dans le cas d'une image noir et blanc, seules les matrices élémentaires de luminance sont traitées. Une étape de sélection du procédé permet à l'utilisateur de choisir entre un mode couleur (pour les images couleur), et un mode noir et blanc (pour les images noir et blanc). En référence à la figure 3, on a illustré l'étape de transformation cosinus discret (DCT). Cette étape de DCT est connue de l'homme de l'art et ne sera pas décrite en détail. La transformée en cosinus discrète bidimensionnelle prend un ensemble de points d'un domaine spatial et les transforme en une représentation équivalente dans le dornaine fréquentiel. A l'étape de DCT, chaque pixel f(x, y) de la matrice élémentaire f d'entrée est converti en un coefficient de fréquence F(u, v) qui est placé dans une matrice transformée F de sortie. L'étape de DCT permet donc d'obtenir une matrice transformée F de 8x8 coefficients de fréquence à partir de la matrice élémentaire f de 8x8 pixels. La matrice F transformée par DCT présente la propriété de regrouper les coefficients F(u,v) de valeurs les plus élevées dans son coin supérieur io gauche, les valeurs des coefficients devenant d'autant plus faibles au fur et à mesure que l'on s'approche du coin inférieur droit de la matrice F transformée par DCT. Les coefficients situés dans le coin supérieur gauche de la matrice correspondent aux basses fréquences. Ces coefficients contiennent l'information visuellement significative de l'image numérique d'entrée. Cette étape de transformation en cosinus discrète bidimensionnelle est réalisée sur chaque matrice élémentaire de pixels. On passe ensuite à l'étape de quantification. En référence à la figure 4, l'étape de quantification est illustrée. Lors de cette étape, les coefficients les moins importants pour la restitution de l'image sont amoindris en effectuant une division euclidienne de chaque coefficient F(u, v) de la matrice F transformée par DCT par un facteur Q(i, j) correspondant dans une table de quantification Q de 8x8 facteurs. On obtient une matrice quantifiée D dont les coefficients D(i, j) correspondent à la partie entière du résultat de la division. Par exemple, si le coefficient F(3, 1) de la matrice transformée F est égal à 15 et que le facteur correspondant Q(3, 1) dans la table de quantification Q est égal à 4, alors le coefficient D(3, 1) dans la matrice quantifiée D est égal à 3. Les facteurs Q(i, j) de la table de quantification Q sont par exemple donnés par la formule suivante: Q(i, j) = Partie_entière (1 + eF x (1 + i + j)), 2879861 io Où : - Q(i, j) correspond à la valeur du facteur de la ligne i et de la colonne j, - 1/F correspond au facteur de qualité, - e correspond à la fonction exponentielle, - Partie_entière() est une fonction permettant de ne conserver que la partie entière d'un nombre réel. La formule précitée en exemple permet d'obtenir une augmentation rapide des valeurs des éléments de la table de quantification Q au fur et à mesure que l'on s'éloigne du coin supérieur gauche de cette table. En référence aux figures 5 et 6, on a illustré une autre étape du procédé io qui consiste à linéariser chaque matrice quantifiée D (de dimensions 8x8 coefficients) dans une liste 10 de 1 x64 coefficients comprenant une suite de soixante quatre coefficients. Lors de l'étape de linéarisation, on s'arrange pour que les coefficients de valeurs les plus faibles (de la matrice quantifiée D) soient regroupés en fin de liste 10. Pour cela, on utilise une méthode connue de l'homme de l'art appelée méthode de lecture en zigzag 21. Cette étape de linéarisation est réalisée sur chaque matrice quantifiée D. Une autre étape du procédé consiste à coder les coefficients 11 de chaque liste 10. Chaque coefficient 11 de la liste 10 est codé en binaire sur un nombre de bits constants. Ce nombre de bits est égal à huit. Par conséquent, la liste 10 de 1x64 coefficients comprend 8x64=512 bits. L'étape de codage va permettre de réduire le nombre de bits de la liste 10 de 1x64 coefficients. Pour le codage des coefficients des listes 10, on effectue les étapes suivantes. Une étape du codage consiste à effectuer un codage de type Huffman des coefficients 11 de chaque liste 10 de 1x64 coefficients. Comme illustré à la figure 7, on attribue à chaque coefficient 11 de la liste 10 un symbole 30. Ce symbole 30 est différent pour chaque valeur différente de coefficient. Le symbole 30 comprend une magnitude 31 (codée sur trois bits) et un code valeur 32 qui sont concaténés pour former le symbole 30. La magnitude 31 indique le nombre de bits du code valeur 32. Le code valeur 32 est représentatif de la valeur du coefficient auquel il est associé. Le code valeur 32 est un code à longueur variable (en anglais VLC pour variable code length ). Un codage à longueur variable! consiste à associer à une valeur décimale un code binaire dont le nombre de bits dépend de l'occurrence de la valeur décimale dans un ensemble donné. Ainsi les valeurs des coefficients de la liste 10 qui sont les plus fréquentes - c'est-à-dire qui apparaissent le plus souvent dans la liste 10 - sont associées à des codes valeur 32 courts - c'est-à-dire des codes valeur 32 comprenant un petit nombre de bits - tandis que les valeurs de coefficient les plus rares sont associées à de plus longs codes valeur 32. Un tableau donnant le code valeur associé à chaque coefficient en fonction de sa valeur est présenté à titre d'exemple: Valeur Code valeur Magnitude (en décimal) (en décimal) 0 Néant 0 -1,1 0,1 1 -3,-2,2-3 01,00, 10,11 2 -7..-4,4..7 011..000,100..111 3 -15..-8.8..15 0111..0000,1000.. 1111 4 -31..-16.16..31 01111..00000,10000..11111 5 -63..-32,32..63 011111. .000000,100000..111111 6 Le premier bit du code valeur 32 définit le signe du coefficient auquel il est associé. Pour un coefficient inférieur à zéro, le premier bit du code valeur sera égal à 0. Pour un coefficient supérieur à zéro, le premier bit du code valeur qui lui est associé sera égal à 1. Ainsi, à un coefficient de valeur égale à 2 (en décimal), on associe le code valeur 10 (et la magnitude 2 qui indique que le nombre de bits du code valeur est égal à 2). A un coefficient de valeur égale à 3 (en décimal), on associe le code valeur 11 (et la magnitude 2 qui indique que le nombre de bits du code valeur est égal à 2). A un coefficient de valeur égale à -31, on associe le code valeur 01111 (et la magnitude 5 qui indique que le nombre de bits du code valeur est égal à 5). A un coefficient de valeur égale à -30, on associe le code valeur 01110 (et la magnitude 5 qui indique que le nombre de bits du code valeur est égal à 5), et ainsi de suite. A un coefficient de valeur nulle, on n'associe aucun code valeur (néant) et on associe la magnitude 0 (qui indique que le nombre de bits du code valeur est nul). A la fin de cette étape de codage de type Huffman, on obtient une chaîne de symboles 30 associée à la liste, chaque symbole de la chaîne correspondant à un coefficient de la liste. Cette chaîne de symboles sera en moyenne plus petite (en nombre de bits) que la liste 10 de coefficients codés en binaire sur un nombre de bits constants (chaque coefficient étant codé sur 8 1s bits dans la liste 10). Par exemple, si on suppose que la magnitude est codée sur trois bits, le codage de Huffman des coefficients de la portion de liste 31, 1, -6, 2 (codée sur 32 bits), permet d'obtenir en sortie la chaîne de symbole 101 11111, 001 1, 011 010, 010 10 (codée sur 23 bits), où : 101 (5 en décimal) est la magnitude et 11111 est le code valeur attribués au coefficient 31 , 001 (1 en décimal) et 1 sont respectivement la magnitude et le code valeur attribués au coefficient 1 , 011 (3 en décimal) et 010 sont respectivement la magnitude et le code valeur attribués au coefficient -6 , 010 (2 en décimal) et 10 sont respectivement la magnitude et le code valeur attribués au coefficient 2 . Une autre étape consiste à traiter les successions de symboles correspondant aux coefficients de valeur nulle lorsque ces successions comprennent moins de huit symboles. Lors de cette étape, on associe, à une succession de un ou plusieurs symboles correspondant à des coefficients de valeur nulle, un code nombre (représentant le nombre de symboles successifs correspondant à des coefficients de valeur nulle) et une magnitude réservée s aux coefficients de valeur nulle (magnitude 0). Cette étape étant mise en oeuvre uniquement sur les successions de moins de huit symboles correspondant à des coefficients de valeur nulle, le code nombre est compris entre 1 et 7. Une autre étape consiste à effectuer un codage des magnitudes et des 10 codes nombre de la chaîne de symboles. Pour cela, on utilise une des deux séquences de mots à longueur variable suivantes: SI = 1, 001, 010, 011, 0001, 00001, 000001, 000000 , S2 = 10, 11, 01, 001, 0001, 00001, 000001, 000000 . Les inventeurs ont découvert que ces deux séquences de huit mots, ou les séquences équivalentes obtenues en permutant 0 et 1 , étaient les plus performantes pour réaliser le codage à longueur variable d'une donnée pouvant prendre 8 valeurs (comme la magnitude ou le code nombre). Cependant, d'autres séquences de huit mots à longueur variable peuvent être utilisées. Par ailleurs, sur certaines images dépourvues de détail, on peut également utiliser un codage à longueur fixe, c'est-à- dire un codage dans lequel les mots de la séquence de mots SO comprennent tous le même nombre de bits. Pour réaliser le codage des magnitudes et des codes nombre, on choisit parmi les séquences SI et S2 celle qui permet d'obtenir la chaîne de symboles à longueur variable la plus courte (c'est-à-dire celle dont le nombre de bits est le plus petit). On attribue ensuite à chacune des valeurs de magnitude ou de code nombre un mot parmi les huit mots de la séquence choisie. L'attribution d'un mot à une magnitude ou au code nombre de même valeur se fait en fonction de l'occurrence de cette valeur dans les chaînes de symboles. Les mots les plus courts (en nombre de bits) sont attribués aux valeurs de magnitude ou de code nombre les plus fréquentes dans les chaînes de symboles, et ainsi de suite par fréquences décroissantes. Si on a sélectionné la séquence S2, le mot 10 sera par exemple utilisé pour coder la magnitude ou le code nombre de valeur 1 Si cette valeur est fréquente dans les chaînes de symboles, et le mot 000001 pour coder la magnitude ou le code nombre de valeur 6 , Si celle-ci est rare dans les chaînes de symboles. Bien entendu, le lecteur aura compris que l'attribution d'un mot se fait par rapport à une valeur, indépendamment du fait que cette valeur est une valeur de magnitude ou de code nombre: la magnitude de valeur 6 se verra attribuer le même mot que le code nombre de valeur 6. Ainsi, dans une chaîne: Chaque symbole correspondant à un coefficient de valeur non nulle est 1s remplacé par un symbole du type suivant: ICLVar(Mag)ICode Valeur', Où : - CLVar(Mag) représente le mot de la séquence (Si ou S2) attribué à la magnitude Mag, - Code Valeur représente la valeur du coefficient. En ce qui concerne les symboles correspondant à des coefficients de valeur nulle, si le nombre de symboles successifs correspondant à des coefficients de valeur nulle est inférieur à 8, alors la succession de symboles est remplacée par un symbole du type suivant: ICLVar(0)ICLVar(L) I, Où : - CLVar(0) représente le mot de la séquence (Si ou S2) attribué à la magnitude 0, - L est le code nombre représentant le nombre de symboles successifs correspondant à des coefficients de valeur nulle, - CLVar(L) représente le mot de la séquence (SI ou S2) attribué au code nombre L. Une autre étape consiste à traiter les successions de symboles correspondant aux coefficients de valeur nulle lorsque ces successions comprennent plus de huit symboles successifs. Si le nombre de symboles successifs correspondant à des coefficients de valeur nulle est supérieur à huit, alors la succession de symboles est remplacée par un symbole comprenant le mot représentant la magnitude 0 concaténé à ce même mot représentant la magnitude 0 qui est répété comme échappement (pas de séquence de zéros de longueur nulle) et suivi lo d'un code longueur indiquant le nombre de symboles. Le code longueur est codé en binaire sur 6 bits (comme la suite de symboles comprend un maximum de 64 symboles, la séquence de zéro sera au maximum de 64, ce qui peut être codé sur six bits) : ICLVar(0)ICLVar(C-)jCode longueur Où : CLVar(0) représente le mot de la séquence (S1 ou S2) attribué à la magnitude 0, - Code longueur représente le code binaire sur 6 bits correspondant au nombre de symboles successifs. Si la succession de symboles correspondant à des coefficients de valeur nulle s'étend jusqu'à la fin de la chaîne, cette succession de symboles est remplacée par le mot de la séquence choisie (Si ou S2) attribué à la magnitude 7 (cette valeur de magnitude n'étant pas utilisée pour les coefficients non nuls): ICLVar(7)I, Où : CLVar(7) correspond au mot de la séquence attribué à la valeur 7. Lorsque toutes les matrices élémentaires de l'image ont été traitées selon les différentes étapes du procédé décrites précédemment, les chaînes de symboles à longueurs variables obtenues sont placées dans un fichier comprenant un en-tête de fichier. Si le nombre de bits de la suite de bits obtenue par concaténation des chaînes de symboles n'est pas un multiple de huit, des bits de bourrage sont introduits à la fin de la suite de bits. L'en-tête de fichier comprend une première et une deuxième section. La première section comprend seize bits et permet de définir les caractéristiques du codage. La deuxième section comprend 21 bits et permet de définir le dictionnaire de codage des magnitudes. L'affectation des bits de la première section se fait comme suit: - le premier bit permet de définir si l'image compressée est une image noir etblanc ou une image couleur. Si l'image que l'on a compressée est une image lo noir et blanc, ce bit est mis à 0 . Si l'image que l'on a compressée est une image couleur, ce bit est mis à 1 . - les deuxième et troisième bits permettent de définir la taille de l'image. Dans le cas d'une image de taille 72x96 pixels, ces bits sont mis à 0 . Dans le cas d'une image de taille 96x120 pixels, le deuxième bit est mis à 0 et le 1s troisième est mis à 1 . Dans le cas d"une image de taille 120x160 pixels, le deuxième bit est mis à 1 et le troisième est mis à 0 . - les quatrième et cinquième bits permettent de définir la séquence de mots utilisée pour le codage de la magnitude parmi les séquences S1 et S2. Si on a utilisé la première séquence SI pour coder la magnitude, le quatrième bit est mis à 0 et le cinquième bit est mis à 1 . Si on a utilisé la deuxième séquence S2 pour coder la magnitude, le quatrième bit est mis à 1 et le cinquième bit à 0 . Si on n'a pas utilisé de codage à longueur variable pour les magnitudes, les quatrième et cinquième bits sont mis à 0 . - les sixième, septième et huitième bits de la première section permettent de définir le nombre de bits de bourrage ajoutés à la fin de la suite de bits. Ce nombre de bits est codé en binaire, le sixième bit correspondant au bit de poids fort et le huitième correspondant au bit de poids faible. - le neuvième bit n'est pas utilisé (réservé pour un ajout d'information ultérieur). - les bits suivants de la première section (dixième à seizième) permettent de définir un paramètre de qualité qui est fonction d'un taux de compression sélectionné par l'utilisateur lors d'une étape de sélection. Le paramètre de qualité peut varier entre 20 et 100 (80 valeurs codées en binaire sur sept bits). Le dixième bit correspond au bit de poids fort. La deuxième section de l'en-tête est constituée des sept premières valeurs de magnitudes ou de codes nombre (chacune codée en binaire sur trois bits) classées par ordre d'occurrence décroissante et conformément à leur affectation (pour prendre en compte le cas où plusieurs magnitudes ou codes nombre auraient la même occurrence) aux codes à longueur variable. La valeur de magnitude ou de code nombre qui ne figure pas dans les sept premières est affectée au dernier mot (e: 000000 dans le cas des séquences SI et S2). Le fichier final codé a la structure suivante: Première section [16 bits]I Deuxième section[21 bits]I Code Image [x bits]I Bourrage [y bits] Avec: (16+21 +x+y)modulo 8=0ety On obtient une qualité acceptable à partir de 800 octets. II est néanmoins recommandé de réaliser les prises de vue devant un fond uniforme afin de ne pas consommer des bits précieux pour coder des détails sans signification. En résumé, l'étape de codage 3 du procédé de compression d'image, effectuée sur chaque liste 10, comprend les sous étapes suivantes. Une étape consiste à associer aux coefficients de valeur non nulle une magnitude et un code valeur. La magnitude est un code binaire de trois bits indiquant le nombre de bits du code valeur. Le code valeur est un code binaire de longueur variable: JMagICode Valeur'. Une autre étape consiste à associer aux successions de moins de huit coefficients de valeur nulle, la magnitude réservée aux coefficients de valeur nulle (000) et un code nombre. Le code nombre est un code binaire de trois bits indiquant le nombre de coefficients de valeur nulle successifs: io 1000' Code nombre'. Une autre étape consiste à associer aux successions de huit ou plus de huit coefficients de valeur nulle, la magnitude réservée aux coefficients de valeur nulle (répétée deux fois comme échappement) et un code longueur de longueur fixe. Le code longueur est un code binaire de six bits indiquant le nombre de coefficients de valeur nulle successifs: 10001000'Code Longueur. Une autre étape consiste à associer à la dernière succession de coefficients de valeur nulle la magnitude non utilisée précédemment (111). En effet, seul sept des huit valeurs possibles de magnitude sont utilisées: 11111. Une autre étape consiste à coder chaque valeur de magnitude ou de code nombre en attribuant un mot d'une séquence de mots parmi trois séquence SO, SI, S2. SO est une séquence de mots de longueur fixe codés en binaire. SI et S2 sont des séquences de mots de longueur variable codés en binaire. Le codage est réalisé en utilisant chacune de ces séquences. La taille des trois fichiers image obtenus en utilisant chacune de ces trois séquences est estimée et comparée. La séquence de mots qui permet d'obtenir le fichier image compressé de plus petite taille est choisie: - JMag'Code Valeur' devient JCLVar(Mag)'Code Valeur', - I000ICode nombre, devient ICLVar(000)ICLVar(Code nombre), - I000I000ICode Longueur devient ICLVar(000)ICLVar(000)ICode longueur, - 11111 devient ICLVar(111)I. On obtient, en sortie du procédé de compression d'image, un fichier 5 image compressée. Pour décompresser le fichier image compressé, il suffit d'effectuer les étapes du procédé de compression dans le sens inverse. A partir de l'entête du fichier image compressé, on détermine notamment la séquence de mots choisie pour la compression. On détermine également la table de correspondance entre les mots de la séquence et les valeurs de magnitude ou de code nombre. Ensuite, on décompresse les données qui succèdent à l'en-tête de fichier. On considère des séries de bits que l'on fait correspondre aux mots de la séquence de mots. Pour les faire correspondre, on compare les séries de bits aux mots de la séquence par longueur de mot croissante. Par exemple, supposons que l'on a choisi la séquence SI lors de la compression (S2 = 10, 11, 01, 001, 0001, 00001, 000001, 000000 ) et que l'on débute par le premier bit des données. On considère les deux premiers bits des données (car le mot le plus court de séquence S2 est codé sur 2 bits). On compare ces deux premiers bits de données aux premier, deuxième et troisième mots de la séquence S2 (10, 11, et 01). Si les deux premiers bits des données ne correspondent pas à un des trois mots de la séquence, alors on considère le bit suivant des données et on compare les trois premiers bits des données au troisième mot de la séquence et ainsi de suite. Si les deux premiers bits des données correspondent à un des trois mots de la séquence, alors les deux premiers bits des données correspondent à une magnitude dont on détermine la valeur avec la table de correspondance donnée dans l'en-tête de fichier. Si cette valeur correspond à une magnitude de coefficient de valeur non nulle, alors on en déduit le nombre de bits du code valeur qui succède à la magnitude. On se déplace du nombre de bits du code valeur pour traiter le coefficient suivant. Puis on recommence les opérations ci- dessus. Si cette valeur correspond à la magnitude réservée aux coefficients de valeur nulle, on regarde si les deux bits des données suivants correspondent également à la magnitude réservée aux coefficients de valeur nulle. Si tel est le io cas, alors les six bits qui suivent correspondent à un code longueur qui indique le nombre de coefficients de valeur nulle successifs. On se déplace de six bits pour traiter le coefficient suivant. Sinon, les bits qui suivent correspondent à un code nombre qui indique le nombre de coefficients de valeur nulle successifs. On compare les bits suivants des données aux mots de la séquence par longueur de mot croissante (comme précédemment pour la magnitude) afin de déterminer la valeur du code nombre correspondant. On se déplace ensuite du nombre de bits du mot associé au code nombre pour traiter le coefficient suivant. On réalise ces opérations sur l'ensemble des données du fichier 20 compressé, puis on effectue une quantification inverse et une DCT inverse. On obtient alors l'image numérique décompressée. Le mode de réalisation décrit précédemment du procédé de compression d'image selon l'invention peut être mis en oeuvre dans un système de traitement comprenant des moyens de traitement, des moyens mémoire et des moyens d'affichage. Le système de traitement est par exemple un/des ordinateur(s). Les moyens de traitement sont par exemple un/des processeur(s), un/des microcontrôleur(s), un/des micro-ordinateur(s), un/des automate(s) programmable(s), un/des circuit(s) intégré(s) spécifique(s) d'application, d'autres circuits programmables. Les moyens d'affichage permettent l'affichage de l'image compressée. Les moyens d'affichage peuvent être intégrés dans ou séparés du système de traitement. Les moyens d'affichage comprennent par exemple un écran d'ordinateur, un moniteur, un écran plat, un écran plasma ou tout type de système d'affichage connu de l'homme de l'art. Dans un mode de réalisation, le système de traitement inclut un dispositif de lecture, par exemple un lecteur de disquettes ou un lecteur de CD-ROM, pour lire les instructions du procédé de compression d'image selon l'invention d'un support d'instructions, comme une disquette ou un CD-ROM. Dans un autre mode de réalisation, les moyens de traitement exécutent les instructions du procédé de compression d'image stockées dans des micrologiciels. REVENDICATIONS 1. Procédé de compression d'une image numérique, caractérisé en ce qu'il comprend les étapes consistant: s - à déterminer une pluralité de matrices de coefficients à partir de l'image numérique, puis pour chaque matrice à associer, à un coefficient de valeur non nulle, un code valeur (32) à longueur variable représentant la valeur du coefficient et une magnitude (31) indiquant le nombre de bits du code valeur (32), io -à associer, à une succession de coefficients de valeur nulle, un code nombre représentant le nombre de coefficients de valeur nulle successifs et une magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est inférieur strictement à un seuil, à effectuer un codage des magnitudes et des codes nombre en attribuant un mot d'une séquence de mots à chaque valeur de magnitude ou de code nombre en fonction de l'occurrence de cette valeur, les mots de la séquence de mots pouvant être de longueur variable ou de longueur fixe, à obtenir une image numérique compressée. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à associer, à une succession de coefficients de valeur nulle, un code binaire de longueur fixe représentant le nombre de coefficients de valeur nulle successifs, la magnitude réservée au coefficient de valeur nulle et à répéter la magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est supérieur ou égal au seuil. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à associer, à une succession de coefficients de valeur nulle, une magnitude non utilisée précédemment si le nombre de coefficients de valeur nulle successifs correspond au nombre de coefficients non traités de la matrice de coefficients. 4. Procédé selon la revendication 1, caractérisé en ce que l'étape consistant à effectuer un codage des magnitudes (31) et des codes nombre comprend l'étape consistant à attribuer à chaque valeur de magnitude (31) ou de code io nombre un mot parmi la séquence (Si) de mots suivante: 1, 001, 010, 011, 0001, 00001, 000001, 000000. 5. Procédé selon la revendication 1, caractérisé en ce que l'étape consistant à effectuer un codage des magnitudes (31) et des codes nombre comprend l'étape consistant à attribuer à chaque valeur de magnitude un mot parmi la séquence (S2) de mots suivante: 10, 11, 01, 001, 0001, 00001, 000001, 000000. 6. Procédé selon l'une des revendications précédentes, caractérisé en ce que les mots sont attribués par longueur croissante aux valeurs de magnitude (31) ou de code nombre par fréquence décroissante, les valeurs de magnitude (31) ou de code nombre les plus fréquentes étant codées avec les mots les plus courts et les valeurs de magnitude (31) ou de code nombre plus rares étant codées avec des mots plus long. 7. Procédé selon la revendication 1, caractérisé en ce que l'étape consistant à effectuer un codage des magnitudes (31) et des codes nombre comprend les étapes consistant: - à choisir entre des première, deuxième et troisième séquences de mots, la séquence qui permet d'obtenir le code compressé le plus court, la première séquence de mots comprenant les mots de longueur variable suivants: 1, 001, 010, 011, 0001, 00001, 000001, 000000, la deuxième séquence de mots comprenant les mots de longueur variable suivants: 10, 11, 01, 001, 0001, 00001, 000001, 000000, et la troisième séquence de mots comprenant des mots de longueur fixe, et à attribuer à chaque valeur de magnitude ou de code nombre un mot io de la séquence de mots choisie. 8. Procédé selon l'une des revendications précédentes, caractérisé en ce que les matrices sont des matrices carrées comprenant soixante quatre coefficients (8x8), en ce que le seuil est égal à huit et en ce que les mots de is longueur fixe de la troisième séquence de mots sont des mots de trois bits. 9. Système pour la compression d'une image numérique, caractérisé en ce qu'il comprend: - des moyens aptes à déterminer une pluralité de matrices de coefficients à partir de l'image numérique, puis pour chaque matrice des moyens aptes à associer, à un coefficient de valeur non nulle, un code valeur à longueur variable représentant la valeur du coefficient et une magnitude indiquant le nombre de bits du code valeur, des moyens aptes à associer, à une succession de coefficients de valeur nulle, un code nombre représentant le nombre de coefficients de valeur nulle successifs et une magnitude réservée aux coefficients de valeur nulle si le nombre de coefficients de valeur nulle successifs est inférieur strictement à un seuil, des moyens aptes à effectuer un codage des magnitudes et des codes nombre en attribuant un mot d'une séquence de mots à chaque valeur de magnitude ou de code nombre en fonction de l'occurrence de cette valeur, les mots de la séquence de mots pouvant être de longueur variable ou de longueur fixe - des moyens aptes à obtenir une image numérique compressée. 10. Système selon la revendication précédente, caractérisé en ce qu'il comprend en outre des moyens aptes à mettre en oeuvre le procédé selon io l'une des revendications 2 à 8.