Brevet FR2716587A1 — publié le 19950825

La présente invention concerne le domaine de la compression des images. Plus particulièrement, elle concerne la compression d'images palettisées, à l'aide d'un codeur entropique, ainsi que d'un codeur entropique parallèle. De façon générale, la compression d'images s'applique à des images numérisées. Pour numériser une image, on échantillonne l'image en divers points de celle-ci, ces points étant généralement appelés des pixels. Chaque pixel contient un emplacement à l'intérieur de l'image et une couleur propre à ce pixel. Une image choisie à titre d'exemple sera représentée par une matrice bidimensionnelle de 1 024 sur 768 pixels, o chaque pixel peut prendre une valeur définie sur 24 bits. Chaque valeur de pixel peut représenter une couleur différente, ce qui permet de représenter l'image en utilisant un nombre quelconque de couleurs prises parmi 224, soit 16 777 216, couleurs possibles. Dans de nombreuses applications, chaque valeur de pixel est associée à une couleur particulière présente dans l'image au moment de la numérisation de l'image. Avec un tel système, la couleur d'un pixel donné peut être déterminée par la valeur du pixel. Dans d'autres applications, l'image numérique est une image palettisée. Dans une image palettisée, la valeur de chaque pixel n'est pas associée de manière fixe à une couleur, mais est un pointeur appliqué à une rubrique d'une table constituant une palette de couleurs. Lorsqu'une image palettisée doit être affichée, on trouve la couleur d'un pixel en utilisant la valeur du pixel comme index dans la table formant une palette de couleurs qui maintient la relation entre chaque valeur de pixel et la couleur attribuée à cette valeur de pixel. La palettisation est la sélection de quelques couleurs parmi l'ensemble de toutes les couleurs possibles, par exemple 256 (28) parmi 16 777 216 (224) couleurs, et un procédé permettant de remplacer une couleur quelconque par une couleur prise parmi les quelques couleurs sélectionnées. De ce fait, une image palettisée peut être mémorisée de façon efficace sous la forme d'un grand bloc de mémorisation de codes qui indique (toujours selon le même exemple), pour chacun des 256 index, la description, en couleur de 24 bits, des couleurs sélectionnées, suivie de l'index de 8 bits de chaque pixel de l'image. Ainsi, on réalise un gain de place en décrivant complètement les couleurs sélectionnée une seule fois et en signalant chaque pixel par un simple index dans le grand bloc de mémorisation de codes. La compression d'images est importante pour de nombreuses applications d'imagerie en raison de la quantité de données nécessaires pour représenter une image. Dans l'exemple précédent, 24x 1 024 x 768, soit 18 874 368 bits (2359296 octets) sont nécessaires pour représenter une seule image non comprimée, ou bien 8 x 1 024 x 768 (6 291 456) bits dans le cas d'une image palettisée. La compression est encore plus nécessaire en télévision, car celle-ci demande un train continu d'images apparaissant avec une fréquence d'image élevée, par exemple 30 images par seconde. Non seulement la compression économise la mémoire de stockage des images, mais en outre elle permet un transfert efficace des images sur des canaux à largeur de bande limitée. Naturellement, dans les applications concernant ces images animées, il faut pouvoir décomprimer les images suffisamment vite pour qu'on puisse les afficher avec la fréquence d'image. Alors que la compression peut être effectuée à l'avance, ce type d'application impose souvent une décompression en temps réel. Dans les modes de réalisation o la compression est effectuée à l'avance, le signal d'entrée appliqué au décompresseur est un bloc de données comprimées qui peut être stocké dans un dispositif de mémorisation et décomprimé à tout moment après la compression. Une mesure du bon fonctionnement de la compression est donnée par le taux de compression. Le taux de compression est le rapport du volume des données non comprimées à celui des données comprimées. Une autre mesure de la qualité de la compression est donnée par la rapidité avec laquelle les données peuvent être comprimées et décomprimées. Dans de nombreuses applications, la vitesse de compression est moins importante que la vitesse de décompression, car la compression ne doit pas nécessairement être effectuée en temps réel. Souvent, le taux de compression est d'autant meilleur qu'on connaît mieux le caractère des données. Des images numériques normales sont généralement le résultat de la quantification de formes d'onde, de sorte qu'elles conservent un grand nombre des caractéristiques du signal original, du fait de l'existence d'une continuité relative des valeurs de couleur des pixels. Avec des images palettisées, cette continuité n'est ordinairement pas présente, et ne peut pas être directement utilisée pour améliorer le taux de compression. Avec des images palettisées, la différence de couleur entre deux valeurs de pixel ne peut pas nécessairement être déduite des valeurs des pixels, puisque les valeurs des pixels ne représentent pas les couleurs des pixels. Au lieu de cela, elles ne représentent que des index dans la table des codes des valeurs de couleur, c'est-à-dire la table constituant la palette des couleurs. On peut généraliser le problème posé par la compression d'images palettisées au problème de la compression d'une séquence de symboles d'entrée dans lequel chaque symbole d'entrée est un symbole appartenant à un alphabet de M symboles. Y. Chin, et al., "Lossy Compression of Palettized Images", ICASSP- 93, vol. V, p. 325-328, décrit un exemple de compression d'images palettisées avec pertes. Alors qu'une compression avec pertes amène généralement de meilleurs taux de compression, de nombreuses applications ne peuvent pas tolérer la distorsion résultant d'une compression avec pertes, et exige donc une compression sans pertes. Avec une compression sans pertes, le signal est comprimé en un signal comprimé qui peut être décomprimé de façon à reconstituer exactement le signal original à partir du signal comprimé, de sorte qu'aucune distorsion n'est introduite. Sur la base de ce qui vient d'être énoncé, on peut constater la nécessité d'un procédé et d'un appareil perfectionnés permettant de comprimer et de décomprimer des images palettisées. Une compression améliorée des images palettisées est obtenue grâce à l'invention, qui permet de comprimer efficacement des images et de les décomprimer rapidement. Dans un mode de réalisation de l'invention, les symboles d'entrée sont des symboles appartenant à un alphabet de M symboles et sont mis sous forme binaire, c'est-à-dire "binarisés", en fonction d'un modèle de contexte des données d'entrée, o on choisit la "binarisation" pour obtenir une bonne compression à l'aide d'un codeur binaire. Un codeur convertit les symboles d'entrée en mots de code, tandis qu'un décodeur reconvertit les mots de code en les symboles d'entrée. La binarisation particulière est déterminée à partir d'une table de réindexation qui met en correspondance chaque symbole d'entrée avec un certain nombre de valeurs binaires. Cette mise en correspondance est déterminée à partir des images (à comprimer), et, typiquement, elle est transmise au titre de bits auxiliaires avec les images comprinmees. Un procédé permettant de créer la mise en correspondance (ou cartographie) de la table de réindexation consiste à attribuer un index à un seul symbole d'entrée à la fois. L'index attribué à un symbole d'entrée est une fonction des bits de l'index, de la distribution des symboles d'entrée, des contextes des symboles d'entrée, et des symboles et des index qui ont déjà été attribués. Pour un symbole d'entrée particulier, on attribue, à partir des index non attribués restants, un index qui assure d'une entropie "binaire" partielle minimale, étant donné les index déjà attribués et les symboles d'entrée auxquels ces index ont été attribués. Alors que ce procédé peut ne pas réussir à donner la plus petite entropie binaire globale possible pour un groupe donné de distributions de symboles et de contextes, elle assure un bon minimum "local" au prix d'une quantité raisonnable de calcul. La donnée d'entrée réindexée passe ensuite dans un générateur de modèles de contextes, un module d'estimation de probabilités et un générateur de bits, dont le signal de sortie est constitué par la donnée comprimée. On utilise le processus inverse pour décomprimer la donnée. Si nécessaire, on fait passer la table de réindexation du compresseur au décompresseur sous forme de bits auxiliaires. La table de réindexation n'est pas nécessaire lorsqu'elle est fixée au préalable. Selon un autre aspect de l'invention, des modèles de contextes, qui utilisent une petite quantité de mémoire tout en produisant une bonne compression pour des images palettisées, sont produits par un générateur de modèles de contextes. Selon un autre aspect de l'invention, la compression et la décompression sont effectuées en parallèle, et la donnée d'entrée appliquée au compresseur est mise en tampon et réarrangée de façon qu'il soit formé un espace entre un bit qui est en train d'être codé et les bits qui déterminent le contexte et le codage du bit en cours de codage. On prévoit que l'espace présent entre un bit et ses bits de contexte soit suffisant pour amener un retard tel que les bits de contexte seront complètement décodés lorsque le décompresseur arrivera sur le bit dont le décodage dépend des bits de contexte. Le décompresseur comporte un moyen permettant d'effectuer le réarrangement inverse de façon que la donnée de sortie du décompresseur soit la même que la donnée d'entrée appliquée au compresseur. Dans certains modes de réalisation, les données de sortie des compresseurs parallèles empruntent un unique canal de télécommunications avec le très petit nombre de bits auxiliaires nécessaire pour séparer les voies dans les différents décompresseurs parallèles. Dans des modes de réalisation particuliers, les symboles d'entrée sont choisis dans un alphabet de 256 symboles, le processus de réindexation est effectué par un ordinateur numérique programmé de facçon appropriée, le processus de compression est effectué en dehors du temps réel, et le processus de décompression est effectué en temps réel. Avec 256 symboles d'entrée, la table de réindexation occupe 256 octets. Dans un mode de réalisation particulier, la table de réindexation s'appuie sur les distributions de probabilités de symboles d'entrée portant sur un certain groupe d'images ou de parties d'image, et une nouvelle table de réindexation est transmise du compresseur au décompresseur pour chaque groupe d'images ou de parties d'image. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleure compréhension de ses particularités et avantages; elle s'appuie sur les dessins annexés, parmi lesquels: la figure 1 est un schéma fonctionnel d'un système de compression de données, montrant un compresseur et un décompresseur; la figure 2 est un schéma fonctionnel du compresseur représenté sur la figure; la figure 3 est un schéma fonctionnel du décompresseur représenté sur la figure 1; la figure 4 est une vue détaillée d'une mémoire contenant une table de probabilités de compartiments de contextes; la figure 5 est un schéma fonctionnel d'un système de compression de données comportant un réindexeur servant à réindexer des symboles appartenant à un alphabet de M symboles, selon une table de réindexation; la figure 6 est un schéma fonctionnel d'un optimiseur d'index qui produit une table de réindexation à partir du contenu d'un bloc de données à comprimer; la figure 7 est un organigramme montrant le processus suivi par un optimiseur d'index pour déterminer une table de réindexation appropriée; la figure 8 montre les illustrations de divers modèles de contextes mis en oeuvre par les générateurs de modèles de contextes des figures 2 et 3; la figure 9 est un schéma fonctionnel d'un système de compression en parallèle; la figure 10 est un schéma fonctionnel d'un système de compression en parallèle utilisant un unique canal; la figure 11 est un schéma fonctionnel illustrant le fonctionnement d'un tampon de réarrangement; la figure 12 est une représentation logique d'un enregistrement faisant apparaître un état de contexte; et les figures 13(a) et 13(b) sont des diagrammes temporels d'un codeur du type chevauchement, ou pipeline, qui peut traiter plus d'un symbole à la fois. La description présentée ci-après se divise en plusieurs sections. La première section décrit le codage entropique. La deuxième section décrit l'utilisation de la réindexation pour améliorer la compression lors de l'emploi du codage entropique. La troisième section décrit comment une modélisation des contextes peut améliorer les performances du codage entropique grâce à une estimation plus précises des probabilités des symboles. On peut utiliser la modélisation des contextes avec ou sans réindexation. La quatrième section décrit comment on utilise des compresseurs et des décompresseurs parallèles pour améliorer les taux de compression des données. Enfin, la cinquième section décrit comment on utilise la mise en tampon pour faciliter les mises en oeuvre parallèles tout en maintenant une causalité permettant de décomprimer les données en parallèle. Codage entropique Dans le domaine de la compression des données, on connaît des moyens de codage dits entropiques. Un moyen de codage entropique qui code des symboles d'entrée en mots de code de sortie est un processus sans pertes, c'est-à- dire que les symboles d'entrée originaux peuvent être extraits à partir des seuls mots de sortie. Le moyen de codage entropique est ainsi appelé parce qu'il vise à procurer un taux de compression qui est proche de la limite supérieure théorique imposée par l'entropie des symboles d'entrée. Un codeur et un décodeur sont conçus de façon que le décodeur soit l'inverse du codeur. L'expression "moyen de codage" fait référence à un appareil qui est un codeur ou un décodeur, ou bien les deux. On ne donnera pas tous les détails sur le moyen de codage entropique, car seulement certains d'entre eux se rapportent à l'invention. Dans un codeur entropique, les symboles d'entrée sont lus à partir d'un signal d'entrée, et un ou plusieurs symboles d'entrée agissent sur le signal de sortie que forme un mot de code. Le ou les symboles d'entrée particuliers et les combinaisons particulières de mots de code de sortie sont imposés par le code employé. Dans un système optimisé, le code employé est choisi sur la base de la distribution des probabilités des symboles d'entrée. Dans un codeur entropique adaptatif, le code utilisé peut varier avec le distribution des probabilités. Si l'on a une bonne estimation de la distribution des probabilités, ou si on la connaît exactement, et si on utilise des codes qui sont optimisés pour cette distribution de probabilités, on obtiendra une bonne compression. Si les symboles d'entrée sont des bits (c'est-à-dire qu'un symbole est 0 ou bien 1), le codeur est un codeur entropique binaire. Les codeurs entropiques binaires sont préférés à d'autres codeurs entropiques lorsque la simplicité du matériel employé est importante. Dans le brevet des Etats-Unis d'Amérique n' 5 381 145 qui a été cédé à la demanderesse, il est décrit un moyen de codage dit "moyen de codage ABS", auquel on fera allusion dans la présente demande (et auquel on pourra éventuellement se reporter), qui est un moyen de codage entropique binaire. Dans un codeur entropique binaire, des symboles d'entrée sont fournis à un générateur de bits, qui accepte comme signal d'entrée un ou plusieurs bits et délivre en sortie un mot de code pour les bits d'entrée qu'il a accepté. Si le générateur de bits reçoit une indication de la distribution des probabilités de présence de "0" et "1" dans le train de bits d'entrée, il peut utiliser cette information pour sélectionner le code approprié à utiliser. Selon une autre possibilité, le générateur de bits pourrait simplement se voir informé du code devant être utilisé, cette information étant déterminée par un module d'estimation de probabilités. Les codes pourront changer lorsque le générateur de bits déterminera que les mots de code de sortie sont, en moyenne, trop longs ou trop courts pour la distribution de probabilités réelle des symboles d'entrée. Pour plus de détails, on pourra se reporter au moyen de codage ABS du brevet des EUA cité ci-dessus. Il est important que la distribution de probabilités des "0" et des "1" soit estimée de façon correcte. Si l'on utilise un codeur entropique binaire, les valeurs des pixels d'une image à comprimer, qui sont des symboles provenant d'un alphabet à M symboles, o M est supérieur à 2, doivent être d'abord mis sous forme binaire (binarisés). Il peut arriver, dans certains cas, que la binarisation (mise sous forme binaire) particulière choisie affecte l'entropie du train de bits appliqué à l'entrée du codeur entropique binaire et, comme expliqué ci-dessus, c'est l'entropie qui fixe la limite du degré auquel la compression du train de bits d'entrée est effectuée par un générateur de bits. Dans la mesure o la distinction pourrait ne pas être claire, on indique que l'expression "symbole d'entrée de pixel" ou "symbole de pixel" est utilisée pour désigner un élément des données à comprimer avant que celui-ci ait été mis sous forme binaire, lequel est un signal d'entrée appliqué à un compresseur, et l'expression "symbole d'entrée binaire" est utilisée pour désigner un symbole d'entrée qui est appliquée à l'entrée d'un générateur de bits d'un codeur entropique binaire. Dans le cas de données d'images non palettisées, les symboles de pixels peuvent être mis sous forme binaire en fonction de l'information de couleur qui est contenue dans la valeur des pixels. Par exemple, on suppose qu'une valeur de pixel peut prendre l'une de 256 valeurs et que la valeur prise indique la couleur des pixels. Dans ce cas, si des couleurs semblables sont représentées par des valeurs à 8 bits semblables, on peut supposer en toute sécurité que 00001100 et 00001101 ont des couleurs se ressemblant plus que 00001100 et 11111111. Dans un certain nombre d'exemples discutés ici, M vaut 256 et les symboles contenus dans l'alphabet à M symboles sont représentés par des formes binaires à K bits, o K=8. Il faut comprendre que d'autres valeurs de M et K sont possibles y compris des valeurs de M qui ne sont même pas des puissances deux, la seule limitation étant K 2 log2M. On revient à l'exemple précédent, puisque, dans une image typique, des pixels adjacents ont souvent des couleurs semblables, on peut réduire le nombre de bits nécessaires pour exprimer chaque pixel représentant chaque pixel par la différence des valeurs de couleur des pixels entre le pixel et un pixel voisin. Ce prétraitement des données conduit généralement à une meilleure compression, puisque le nombre de bits nécessaires pour représenter des valeurs est lié à l'entropie du groupe de valeurs. Toutefois, dans le cas de pixels d'une image palettisée, aucune relation particulière entre deux couleurs ne peut être tirée de la corrélation entre les bits de ces représentations à 8 bits. Par exemple, dans une image palettisée, 00001100 et 00001101 pourraient avoir une couleur différente, tandis que 00001100 et 11111111 pourraient être des couleurs presque identiques. Ceci dépend entièrement de la palette. Ainsi, on peut améliorer la compression d'images palettisée en faisant une estimation précise sur la distribution de probabilités du train de bits, et en sélectionnant la binarisation des symboles de pixels d'entrée qui fournit un train de bits de faible entropie à un générateur de bits. Les solutions au premier problème sont discutées dans la section ci-après intitulée "modélisation des contextes", tandis que les solutions au deuxième problème sont discutées dans la section ci- après intitulée "réindexation". Décompreso Pour qu'un décompresseur décode correctement des symboles d'entrée à partir de mots de code de sortie, le décompresseur a besoin de savoir quel code a été utilisé pour les mots de code, et pour quels mots de code il a été utilisé, à moins que le codeur ne soit un codeur adaptatif et n'utilise un code fixe. Puisque les bits auxiliaires des données de transmission indiquant le code diminueraient l'efficacité de la compression, le décompresseur doit être en mesure d'extraire, des mots de code eux-mêmes, une indication des codes utilisés. Ceci est possible si le code utilisé sur un symbole d'entrée binaire donné est déterminé par une estimation des probabilités qui ne dépend que des bits qui ont déjà été codés en mots de code. Si ceci est vrai, le décompresseur, en utilisant une boucle de réaction et en mémorisant l'information relative aux symboles d'entrée tels qu'ils ont été reconstitués, peut déterminer quel code a été utilisé à partir de la seule information des données qui ont déjà été décodées. Modélisation des contextes Plus les estimations de probabilités sont précises et mieux les codes employés sont adaptés aux données comprimées. Une manière d'affiner les estimations de probabilités consiste à maintenir des estimations de probabilités pour des contextes multiples. Dans cette description, on utilise l'expression "contexte d'un pixel d'entrée" pour désigner le ou les pixels se trouvant dans une relation définie avec le pixel d'entrée. Par exemple, dans un modèle de contexte, le contexte du pixel d'entrée est déterminé par le pixel se trouvant au-dessus du pixel d'entrée. En ce qui concerne la détermination du contexte d'un bit du train de bits appliqué à l'entrée d'un générateur de bits, le contexte est fourni par les pixels et, ou bien, les bits se trouvant dans une relation définie avec le bit d'entrée. Cette relation est déterminée par le modèle de contexte. La figure 8 est une représentation graphique de cinq modèles de contextes. Dans chaque modèle, un pointeur P indique la position de bit du bit d'entrée courant appliqué au générateur de bits du symbole d'entrée courant auquel le contexte s'applique. Dans tous les contextes présentés, le contexte est obtenu à partir d'un certain sous-groupe des bits du symbole d'entrée courant, de la position de bit indiquée par P et des bits du symbole relatif au pixel de l'image se trouvant au-dessus du pixel relatif au symbole d'entrée courant, lequel sera appelé le symbole "supérieur". Il faut comprendre que d'autres pixels, par exemple le pixel situé à la gauche du pixel courant, ou d'autres modèles de contextes, non représentés pourraient fonctionner tout aussi bien. Chaque modèle de contexte précise comment le contexte est déterminé, et le nombre de contextes possibles peut être facilement calculé. Pour chaque modèle de contexte, une estimation de probabilités est maintenue, et cette estimation de probabilités est utilisée lorsqu'un symbole possédant ce contexte apparaît. L'expression "compartiment de contexte" est souvent utilisé pour indiquer dans quel contexte un symbole se trouve. On se reporte à la figure 8. Le modèle de contexte (a) est un modèle de contexte par position de bit. Dans ce modèle, le seul contexte est la position du bit, qui demande K compartiments de contextes. Lorsque K=8, ceci constitue un nombre raisonnable de compartiments de contextes. Le modèle de contexte (b) est un modèle de contexte par plan de bits, ainsi nommé parce qu'il y a un groupe de M contextes pour chaque plan de bits. Ainsi, il y a M x K contextes (soit 2 048 dans le cas o M=256, K=8). Une caractéristique qu'il faut noter est que les contextes du pixel courant sont, dans les modèles (a) et (b), indépendants des bits utilisés pour représenter le pixel courant. Un modèle de contexte (c) est un modèle de contexte 'qui dépend des bits", o le contexte est déterminé par la position de bit du bit courant et les bits antérieurs du symbole courant. Dans ce modèle, il y a 2K - 1 contextes (1 contexte lorsque P se trouve au premier bit, 2 contextes pour le bit suivant, etc.). Pour K=8, ce modèle fournit 255 contextes. On note que le contexte d'un bit ne repose sur les valeurs de bits non encore codés, de sorte que le décodeur n'a pas besoin des bits non décodés pour déterminer comment décoder un bit (la figure 8 suppose une séquence de traitements allant du haut vers le bas et de la gauche vers la droite). Le modèle de contexte (d) est un bon modèle de contexte, qui tient compte de tous les bits du pixel "supérieur" et des bits du pixel d'entrée qui sont antérieurs au bit courant. Ce modèle de contexte, dit premier contexte dépendant des bits de Markov, combine des informations des modèles (b) et (c) et ceci donne M x (2K - 1) contextes. Alors que ce modèle de contexte peut donner une division fine des contextes, la mémoire nécessaire au stockage des valeurs des contextes peut se révéler prohibitive dans la mise en oeuvre matériel d'un compresseur ou d'un décompresseur. Pour M=256 et K=8, ce modèle demande 65 280 contextes. Si chaque contexte demande 8 bits de mémoire, ce modèle de contexte a besoin d'une mémoire de 64K dans ce seul but. Toutefois, un avantage de ce modèle de contexte par rapport aux modèles (a) et (b) est que le fonctionnement d'un compresseur utilisant ce modèle est bon quelle que soit la binarisation utilisée, puisque les bits antérieurs du pixel courant sont utilisés pour déterminer les contextes. Le modèle de contexte (e) est un modèle de contexte mixte, qui est considéré comme un bon compromis entre les exigences en matière de mémoire et la qualité du modèle de contexte. Dans ce modèle, le contexte est donné par les P-1 bits antérieurs du symbole d'entrée courant et les K-(P-1) derniers bits du symbole "supérieur". Ceci demande 2K contextes par position de bit (2 048 contextes pour K=8). Le modèle de contexte est généralement fixe entre le compresseur et le décompresseur, mais rien n'empêche le compresseur et le décompresseur de changer de modèles de contextes pour autant qu'ils soient d'accord sur le modèle de contexte qui est utilisé à tout moment. Si l'on admet le changement des modèles de contextes, il faut qu'un mécanisme existe pour assurer que les modèles de contextes sont les mêmes, par exemple des bits auxiliaires destinés au canal de communications indiquant le modèle de contexte courant. La discussion précédente concernant le codage entropique et la modélisation des complexes fait fonction de base aux explications du système de compression de données présenté sur les figures, qu'on va maintenant décrire. Sur la figure 1, est présenté un mode de réalisation d'un système de compression de données 100 selon l'invention, qui permet de comprimer des données comportant des symboles d'un alphabet à M symboles et qui contient un compresseur 102, un canal 104 et un décompresseur 106. A l'entrée du compresseur 102, est appliqué un train de symboles de pixels d'entrée représentant chacun une valeur de pixel d'une image, mais d'autres types de données pourraient être utilisés. Les symboles de pixels d'entrée sont convertis en mots de code comprimés par le compresseurs 102 et sont transmis via le canal 104 au décompresseur 106. A partir des seuls mots de code reçus, et éventuellement de la connaissance du fonctionnement du compresseur 102 et d'une table de réindexation, (s'il en est utilisé une), le décompresseur 106 reconstitueles symboles d'entrée originaux ou leurs équivalents. Dans certains cas, les symboles d'entrée originaux ont été traduits d'une première forme de représentation à une forme de représentation réindexée, et le système de compression de données manipule les symboles décomprimés sans réellement effectuer l'inversion de la réindexation. Un avantage de l'invention est l'obtention de taux de compression accrus pour des symboles d'entrée qui sont des valeurs de pixels d'une image palettisée. Ainsi, la compression réalisée selon l'invention se révèle utile à chaque fois que le canal 104 présente une largeur de bande limitée. Des exemples de canal 104 comprennent un canal de communications tel qu'il en existe entre une mémoire d'image et un dispositif d'affichage, ou entre un dispositif de mémorisation et un dispositif utilisant une image mémorisée. Le canal 104 peut également représenter le transfert de données comprimées sous la forme de dispositifs dotés d'une mémoire, par exemple des cartouches de jeux, qui sont comprimées en un certain lieu et sont transférées en un autre lieu o elles sont décomprimées. Dans ce dernier cas, la limitation du canal 104 en largeur de bande se révèle être une limitation portant sur la quantité de mémoire disponible dans le dispositif de mémorisation. On se reporte à la figure 2, qui montre que le compresseur 102 comporte un générateur de modèles de contextes 108(1), un module d'estimation de probabilités (PEM) 110(1), un générateur de bits 112(1), une mémoire de contextes 114(1), et une mémoire de probabilités de compartiments de contextes 116(1). On utilise des nombres entre parenthèses pour distinguer des numéros de référence identiques employés à la fois dans le compresseur 102 et le décompresseur 106. Les éléments pouvant s'appliquer de façon générale à l'un ou l'autre du compresseur 102 et du décompresseur 106 sont désignés par des numéros de référence dépourvus de ce nombre entre parenthèses. Alors que l'invention est décrite en liaison avec un compresseur particulier 102 représenté sur la figure 2, d'autres compresseurs pourraient fonctionner tout aussi bien. Par exemple, tous les compresseurs ne demandent pas un couplage entre le PEM 110 et le générateur de bits 112, et le PEM 110 peut s'appuyer sur des données autres que celles fournies par le générateur de bits 112 pour mettre à jour ses estimations de probabilités. Le générateur de modèles de contextes 108(1) est connecté à l'entrée du compresseur 102 et reçoit dont les symboles de pixels d'entrée. S'il a été utilisé un réindexeur, le signal d'entrée appliqué au compresseur 102 est un train de symboles de pixels d'entrée réindexés. Le générateur de modèles de contextes 108(1) comporte deux sorties, une sortie "identification" (ID) de compartiment de contexte et une sortie "décision" dont les signaux sont respectivement fournis aux entrées du PEM 110(1). Si l'on suppose que le signal d'entrée est mis sous la forme binaire d'un symbole de K bits, alors le générateur de modèles de contextes 108(1) délivre K "décisions" binaires par symbole de pixel d'entrée. Pour chaque décision, le générateur de modèles de contextes 108(1) délivre également un identificateur de compartiment de contexte. Le générateur de modèles de contextes 108(1) est également connecté à une mémoire de symboles ou de bits antérieurs 114(1) afin d'adresser des éléments de données à cette dernière et d'y lire ou d'y écrire en liaison avec l'apparition de symboles dans le train d'entrée, comme cela est nécessaire pour déterminer le contexte du symbole de pixel d'entrée qui est présenté à son entrée. La disposition particulière des éléments de données dans la mémoire 114(1) dépend du modèle de contexte. Le PEM 110(1) reçoit les deux signaux d'entrée que lui fournit le générateur de modèles de contextes 108(1) et envoie deux signaux de sortie au générateur de bits 112(1), à savoir un signal de sortie de "classe de probabilité (Pclass)" et un signal de sortie "résultat". Le PEM 110(1) est également connecté à une mémoire 116(1) (table de probabilités de compartiments de contextes) afin d'adresser des éléments de données à cette dernière et de lire et modifier des valeurs de ces éléments de données, et au générateur de bits 112(1) afin de recevoir un signal de mise à jour de la table. Pour chaque signal d'entrée de décision appliqué au PEM 110(1), le PEM 110(1) délivre un bit de résultat et un signal Pclass. Le bit de résultat dépend du bit d'entrée de décision et d'un symbole de bit le plus probable (MPS) pour le compartiment de contexte associé au bit d'entrée de décision. Le bit de résultat indique si le bit d'entrée de décision est ou non le MPS. L'opposé du MPS (qui est 0 ou 1, puisque le générateur de bits code des symboles binaires) est le symbole le moins probable (L/S). Un générateur de bits 112(1) reçoit un train de bits de résultat et leurs signaux Pclass associés. Ainsi, le générateur de bits 112(1) reçoit K bits de résultat et un signal Pclass associé pour chaque symbole de pixel appliqué à l'entrée du générateur de modèles de contextes 108(1). A partir de ces deux trains d'entrée, le générateur de bits 112(1) produit un train de mots de code comprimés, comme expliqué en liaison avec le codeur ABS du brevet des EUA n 5 381 145 cité ci- dessus. Avec un générateur de bits conçu de façon appropriée, le train de bits de résultat peut être reconstitué à partir des mots de code de sortie, et les mots de code comprennent moins de bits que le train de bits d'entrée. La valeur Pclass sert à sélectionner un code devant être utilisé pour coder le train de bits. Selon une autre possibilité, le PEM 110(1) peut mémoriser la distribution de probabilités du MPS et du LPS pour chaque contexte et fournir cette probabilité au générateur de bits. Comme indiqué dans le brevet des EUA n' 5 381 145 cité ci-dessus, certains codes binaires sont optimisés pour des probabilités particulières de symboles (des "0" et des "1") du train d'entrée. Par exemple, si des "0" et des "1" sont également susceptibles d'être présents à l'entrée d'un générateur de bits, alors un code optimal est un code sans compression, c'est-à-dire qui donne un bit de sortie pour chaque bit d'entrée. Le caractère optimal d'un code est déterminé par le degré d'étroitesse avec lequel la longueur moyenne des mots de code approche l'entropie théorique des bits d'entrée. Puisque le compresseur 102 agit sur un symbole de pixel à un certain moment et que le PEM 110 et le générateur de bits 112 agissent sur un bit de ce pixel à un certain moment, les concepts de pixel 'courant" et de bit "courant' ont une signification, et sont utilisés dans la description suivante pour expliquer le fonctionnement du compresseur 102 et du décompresseur 106. Toutefois, il faut comprendre que, dans un compresseur complexe, les symboles peuvent être plusieurs en même temps à faire l'objet d'une action, mais le concept de symbole "courant" reste néanmoins applicable. Il faut également comprendre que des éléments peuvent agir suivant un mode de chevauchement, ou pipeline, de sorte que le symbole courant valable à un stade peut être différent du symbole courant valable à un autre stade. Dans une opération de compression, le compresseur 102 accepte chaque symbole de pixel d'entrée à son tour et délivre un train de mots de code, même s'il ne délivre pas nécessairement un mot de code pour un nombre fixe de symboles d'entrée. Lors du traitement d'un symbole de pixel, ce symbole est mis sous forme binaire et la binarisation est appliquée à l'entrée du générateur de modèles de contextes 108(1). Le générateur de modèles de contextes 108(1) évalue la binarisation à raison d'un bit à la fois en délivrant chaque bit sur la sortie de "décision" du générateur de modèles en même temps qu'un signal ID de compartiment de contexte qui identifie le contexte du bit. Par exemple, si le modèle de contexte utilisé est le modèle de contexte par position du bit, le signal ID de compartiment de contexte indique la position du bit à l'intérieur de la binarisation du symbole de pixel d'entrée. Pour le contexte par position de bit, il suffit de mémoriser un pointeur dirigé sur le bit courant, et, pour d'autres modèles de contextes, chaque pixel qui affecte le contexte d'un autre pixel est mémorisé dans la mémoire 114. Si le modèle de contexte comporte le pixel situé au-dessus du pixel courant, il est alors suffisant de mémoriser une rangée de pixels dans la mémoire 114. Lorsque les symboles d'entrée représentent les couleurs des pixels suivant un ensemble bidimensionnel de pixels formant une image, l'ordre de balayage n'est pas aussi important que pour un bloc de texte, o le contexte est généralement produit par les lettres voisines d'une lettre courante. Toutefois, à simple titre d'exemple, cette discussion suppose que l'ensemble bidimensionnel est balayé dans le compresseur 102 suivant un ordre prédéterminé, par exemple de la rangée supérieure à la rangée inférieure, et de la gauche vers la droite dans chaque rangée. Avec un tel ordre de balayage, le pixel situé au-dessus du pixel courant peut être utilisé pour le contexte, puisque le pixel "supérieur" sera déjà décodé au moment o il sera nécessaire de fournir le contexte permettant le décodage du pixel courant, et puisque, dans une image typique, le pixel situé directement au- dessus du pixel courant est souvent indicatif d'une couleur qui est susceptible d'être appariée à celle du pixel courant. 1l n'y a rien de particulier à propos du pixel de contexte qui est le pixel situé au-dessus du pixel courant, et, alors que de nombreux modèles de contextes sont possibles, une décompression sans pertes réussie utilisant simplement le train de données comprimées demande que le modèle de contexte du bit courant ne fasse pas intervenir de bits ou de symboles qui n'ont pas été décodés au moment o doit être effectué le décodage du bit courant. Quelques exemples vont clarifier ce point. Si le modèle de contexte est celui d'un contexte par "position de bit", le contexte du bit courant est la position du bit à l'intérieur du pixel d'entrée courant, et l'identification ID de ce contexte représente le contexte courant qui, dans le cas de symboles binarisés à K bits, fournit K contextes. Toutefois, si le contexte du bit courant détermine le code utilisé pour coder ce bit, il faut que le contexte soit connu avant le décodage pour que le bit puisse être décodé de manière correcte. Ainsi, l'ordre des traitements doit assurer que le contexte du bit courant est connu avant le décodage du bit. Pour chaque bit délivré par le générateur de modèles de contextes via son signal de sortie de décision, le PEM 110(1) reçoit la décision et l'identification de compartiment de contexte se rapportant à cette décision. A partir de cette décision, le MPS relatif au compartiment de contexte de la décision, le PEM 110(1) délivre un bit de résultat et son signal Pclass associé. On va indiquer ci- après comment on détermine le MPS et la valeur Pclass. La valeur Pclass est une estimation du degré de probabilité que le MPS soit dans le train de bits délivré par le générateur de modèles de contextes 108(1) sur la ligne du signal de décision. Alors que la distribution des probabilités du MPS et du LPS dans les données d'entrée peut être déterminée avec exactitude par balayage de toutes les données d'entrée, la compression ne doit pas dépendre de la distribution de probabilités totale, puisque celle-ci ne sera pas disponible pour le décompresseur avant le décodage des mots de code. Par conséquent, on utilise une estimation qui ne dépend que des bits précédemment codés. Comme expliqué dans le brevet des EUA n' 5 381 145 cité ci-dessus, le générateur de bits 112(1) utilise la valeur Pclass pour déterminer quel code il faut utiliser pour coder le train de bits de "résultat". Puisqu'un code est optimisé sur un intervalle de distributions de probabilités, Pclass définit un intervalle de valeurs de probabilités, d'o son nom de classe de probabilités. Ces valeurs de classe de probabilités sont mémorisées, à raison d'une par contexte, dans la mémoire 116. La mémoire 116 mémorise également le MPS pour chaque contexte. La figure 4 montre la configuration de la mémoire 116. Initialement, la valeur Pclass de chaque contexte est une valeur qui indique que la probabilité du MPS est de 50 % (et celle du LPS est de 50 % aussi), et le MPS peut être arbitrairement choisi entre 0 et 1. Comme enseigné dans le brevet des EUA n 5 381 145 cité ci-dessus, un procédé de compression de données dans un codeur entropique consiste à utiliser un code qui réduit les longues suites du MPS à un mot de code indiquant la longueur de la suite. Le train original est reconstitué par délivrance d'un nombre de bits de MPS indiqué par le mot de code, suivi par le LPS, sauf lorsqu'une suite de bits du MPS plus longue qu'une suite maximale est partagée en plus d'un mot de code. Après qu'un mot de code a été délivré, le générateur de bits 112(1) signale au PEM 110(1) si la suite maximale de bits du MPS est ou non survenue. Cette indication est placée sur la ligne de signal "mise à jour de la table". Si la longueur de la suite maximale a été rencontrée, le générateur de bits 112(1) signale au PEM 110(1) de mettre à jour la table des Pclass pour indiquer que le MPS est plus probable que cela n'avait antérieurement été estimé. Si la longueur maximale de suite n'a pas été rencontrée, le Pclass varie pour indiquer que le MPS est moins probable que cela n'avait été antérieurement estimé. La décompression est exactement l'inverse du processus de la compression: les mots de code sont décodés en le train de bits de "résultat", le train de bits de sortie est converti en le train de bits de "décision" et est assemblé en symboles de pixels, qui sont alors délivrés. Comme on peut le voir sur la figure 3, le décompresseur 106 comporte un générateur de modèles de contextes 108(2), un PEM 110(2), un générateur de bits 112(2), une mémoire 114(2) de symboles ou bits précédemment constituée, et une mémoire 116(2) contenant une table de probabilités de compartiments de contextes. L'interconnexion des modules dans le décompresseur 106 se fait à l'inverse de ce qui avait lieu dans le compresseur 102 pour le train de bits, mais dans le même sens pour l'information concernant le train de bits, si bien qu'il est formé deux boucles de réaction. Une première boucle de réaction détermine le code employé pour coder un mot de code. Le fait de savoir les codes employés permet au générateur de bits 112(2) de décoder le train de bits. Les codes utilisés sont déterminés par la valeur Pclass fournie par le PEM 110(2). La valeur Pclass, comme pour le PEM 110(1), est déterminée par le contexte et les signaux présents sur la ligne de mise à jour de la table. Le contexte est déterminé à partir d'informations relatives aux bits et aux pixels antérieurs qui ont été mémorisées dans la mémoire 114(2). La boucle de réaction présente un certain retard, qui peut être mesuré en nombre de bits. Le retard peut varier selon les mots de code reçus, et, pour la plupart des modes de réalisation, le retard peut être chapeauté à un maximum. Si le retard maximum est de X bits, alors le contexte du bit courant ne doit pas dépendre des X bits qui ont précédé le bit courant dans le train de bits de décision. Ceci assure que le bit courant peut être décodé à partir des informations qui ont déjà été traitées par le décompresseur 106. Cette exigence pose des problèmes particuliers, que l'invention résout, lorsque les données doivent être décomprimées en parallèle. Réindexation Comme discuté ci-dessus, les codeurs entropiques binaires peuvent comprimer des données jusqu'à une limite théorique. On peut utiliser n'importe quelle binarisation de données palettisées pour afficher une image aussi facilement que n'importe quelle autre (en changeant la table de la palette des couleurs), mais toutefois, il arrive que certaines binarisations fournissent, pour certains modèles de contextes, une entropie inférieure que pour d'autres. Cet avantage peut être obtenu par adjonction d'un réindexeur du côté avant du compresseur 102, o le réindexeur sélectionne une binarisation qui fournit une entropie basse pour les données à comprimer. L'inverse du réindexeur, c'est-à-dire un désindexeur, peut être placé à la sortie du décompresseur 106, ou bien la définition de la palette des couleurs peut être modifiée pour tenir compte du changement positionnel d'alphabet résultant de la réindexation. Dans certains modes de réalisation, la table de réindexation peut même être fixée avant la décompression et être mémorisée aussi bien dans le compresseur que dans le décompresseur. La figure 5 montre un système 158 de compression de données avec réindexation, qui comporte un réindexeur 160 connecté à l'entrée du compresseur 102, une table de réindexation 162, qui est une table de dimension 2 x M, et, éventuellement, un désindexeur 164. Une ligne de signal 166 est indiquée qui montre le transfert de la table de réindexation dans le décompresseur 106, dans le cas o la réindexation n'est pas fixe. Puisque la table de réindexation 162 a une dimension qui n'est que de 2 x M, sa transmission en même temps que les données comprimées n'introduit pas une quantité importante de bits auxiliaires. Etant donné qu'une table de réindexation particulière 162, le fonctionnement du réindexeur 160 et celui du désindexeur 164 sont directs. Le réindexeur 160 adresse la table 162 à l'aide d'un symbole de pixel qui lui est fourni en entrée, et il lit la valeur de réindexation correspondante. Cette valeur est délivrée à l'entrée du compresseur contextuel 102 au titre du symbole binarisé. Les valeurs de réindexation contenues dans la table 162 sont telles que l'opération est réversible, c'est-à-dire que, pour n'importe quelle valeur de réindexation donnée, il n'existe qu'une seule rubrique dans la table de réindexation 162. Par conséquent, lorsque le signal de sortie du décompresseur 106, qui est identique au signal d'entrée du compresseur 102, plus le retard du système de compression, est appliqué au désindexeur 164, s'il en est utilisé un, le désindexeur 164 effectue la transformation inverse et délivre l'index qui contient le symbole de pixel original. Comme mentionné ci-dessus, si le symbole original réel n'est pas nécessaire, et qu'on peut utiliser une forme binaire connue, le désindexeur 164 n'est pas nécessaire. La figure 6 est un schéma fonctionnel d'un générateur 200 de table de réindexation, que l'on utilise pour produire les valeurs de réindexation contenues dans la table 162 à partir d'un bloc de données d'entrée. Le générateur 200 peut être mis en oeuvre sous la forme d'un dispositif matériel spécialement conçu, ou sous celle d'un ordinateur numérique programmé de façon approprié. L'utilisation d'un ordinateur numérique du type universel est souvent moins coûteuse, en particulier pour les compressions globales, même si ce moyen tend à être plus lent qu'un dispositif matériel spécialement conçu. Heureusement, la plupart des applications permettent d'effectuer la compression à l'avance plutôt qu'en temps réel. Au générateur 200, est appliqué un bloc de symboles de pixels. Ce bloc peut être formé par la totalité des images à comprimer ou par un certain sous- ensemble échantillonné des images, ou même par des parties d'images. Toutefois, lorsque la compression peut ne pas être effectuée en temps réel, ce n'est généralement pas un problème d'utiliser comme signal d'entrée du générateur 200 l'ensemble total des données. Dans certains modes de réalisation, les données d'image sont groupées en blocs de 16 ou 256 images et une table de réindexation est produite pour chaque bloc d'images. Comme on peut le voir sur la figure 6, le générateur 200 comporte un module 204 de fixation d'ordre, un accumulateur 206 de distributions de probabilités conditionnelles, une table 208 de probabilités conditionnelles destinée à contenir des valeurs de Pc(Si) o i et c varient respectivement de 0 à M-1 et de 0 à N-l, Pc(Si) étant la probabilité qu'un symbole d'entrée Si apparaisse dans un contexte Cc, une table 209 de probabilités de contextes destinée à contenir des valeurs de P(Cc), o c varie de 0 à N-t, P(Cc) étant la probabilité que le contexte Cc se produise dans le bloc de données d'entrée, un minimiseur d'entropie vorace 210 qui est couplé à l'entrée de la table de réindexation 162, une table 212 de probabilités conditionnelles partielles ("table PCP") destinée à contenir des valeurs de PCP(c), o c varie de 0 à N-1, PCP(c) étant la probabilité conditionnelle partielle du contexte Cc, comme expliqué ci-après, une table 212 de probabilités positionnelles partielles ("table PPCP") destinée à contenir des valeurs de PPCP(k,c), o k et c varient respectivement de 1 à K et de 0 à N-1, PPCP(c) étant la probabilité conditionnelle positionnelle partielle du contexte Cc et de la position de bit k, comme expliqué ci-après, et une table d'entropie binaire partielle 216 destinée à contenir des valeurs de PBE(j), o j varie de 1 à M-1, comme expliqué ci-après. L'utilisation des diverses tables deviendra plus clairement compréhensible après lecture de la description accompagnant l'organigramme de la figure 7. Le générateur 200 fonctionne de la manière suivante. Le module de fixation d'ordre 204 convertit chaque symbole du bloc de données 202 en un symbole ordonné Si o i varie de 0 à M-1. Puisque l'action de la table de réindexation 162 est le remise en ordre des symboles, l'ordre particulier qui est utilisé a moins d'importance que le fonctionnement du reste du système. Dans un mode de réalisation possible, les symboles du bloc de données 202 sont déjà mémorisés sous forme de valeurs binaires à K bits (K 2 log2M), auquel cas le module 202 n'est pas nécessaire. Selon un autre mode de réalisation, S est attribué au symbole de pixel le plus fréquent dans le bloc de données 202, S1 est attribué au symbole qui, mis à part le précédent, est le plus fréquent, et ainsi de suite, jusqu'à SM_- 1, qui est rapporté au symbole de pixel le moins fréquent. Il s'agit là de ce que l'on appelle souvent la distribution de fréquences de symboles d'ordre zéro, soit sans contexte. Si on utilise le module 204, celui-ci lit des symboles de pixels dans le bloc de données 202 et transmet la représentation binaire des symboles ordonnés à l'accumulateur 206, lequel accumule des probabilités dans les tables 208 et 209. Le minimiseur d'entropie 210 lit alors le contenu des tables 208 et 209, lit et écrit des valeurs dans les tables 212, 214 et 216, de façon à produire son propre signal de sortie principal, qui devient le contenu de la table 162. Dans certains modes de réalisation, le minimiseur 210 conserve une table interne des index de la table 162 qui ont été attribués, et, dans d'autres modes de réalisation, le minimiseur 210 détermine les index qui ont été attribués en allant les chercher dans le tableau 162. On comprendra mieux le fonctionnement du générateur de table de réindexation en se reportant, en même temps qu'à la figure 6, à l'organigramme présenté sur la figure 7. L'organigramme fait apparaître des blocs 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326 et 328. Le bloc 300 désigne le début d'un processus de production d'une table de réindexation à partir d'un bloc de données. Les opérations des blocs 302 et 306 sont typiquement effectuées par l'accumulateur 206, l'opération du bloc 304 par le module 204, le reste étant typiquement effectué par le minimiseur d'entropie 210. L'organigramme suit l'ordre des numéros de blocs pour aller du bloc 302 au bloc 328 et, à partir du bloc 328, il est mis fin au processus ou bien un couplage est effectué sur le bloc 316, comme indiqué ci-dessous. Dans le bloc 302, l'accumulateur 206 efface les tables 208 et 209. Dans le bloc 304, le modèle 204, s'il en est utilisé un, ordonne les symboles d'entrée suivants So à SM_1, et, dans le bloc 306, l'accumulateur 206 peuple les tables 208 et 209. Une fois peuplée, la table 208 contient une rubrique pour chaque combinaison d'un contexte et d'un symbole d'entrée, o une rubrique (c, i) de la table 208 indique la probabilité que le symbole Si se produise étant donné le contexte Cc. Une fois peuplée, la table 209 contient une rubrique pour chaque contexte, o une rubrique c de la table 209 indique la probabilité que le contexte Cc se produise indépendamment du symbole. Il y a M valeurs possibles pour i, et les contextes sont {Co....., C.n_}, étant donné qu'il y a N contextes possibles. Ainsi, la table 208 contient M x N rubriques et la table 209 contient M rubriques. Selon un mode de réalisation, le contexte est le symbole se rapportant au pixel situé au-dessus du pixel à partir duquel Si a été pris, auquel cas N=M. Dans d'autres modes de réalisation, le contexte est le symbole se rapportant au pixel situé à gauche (N=M), ou bien le contexte est donné par deux symboles (N=M2). Toutefois, le fait d'utiliser un contexte à deux symboles nécessiterait M2 contextes pour chaque symbole d'entrée et, par conséquent, les tables 208 et 209 seraient très grandes pour la plupart des valeurs de M. Selon d'autres modes de réalisation, le nombre des contextes est inférieur à M. Par exemple, si tous les symboles possibles sont regroupés en moins de M groupes, et que le contexte relatif à un pixcl du contexte est le groupe qui contient le pixel situé au-dessus du pixel du contexte, alors, il y aura moins que M contextes. Par exemple, si tous les symboles sont regroupés en moins de M groupes, et que le contexte relatif à un pixel de contexte est le groupe qui contient le pixel situé au-dessus du pixel du contexte, il y aura alors moins de M contextes. Par exemple, si tous les symboles sont regroupés en groupes de quatre symboles chacun, N vaudra M/4. Naturellement, pour que cette réduction du nombre des contextes soit utile, il faut faire appel à un moyen intelligent de regrouper les symboles. Dans le bloc 308, le minimiseur 210 positionne à zéro une variable de boucle, soit i, et initialise la table de réindexation 162, la table 212 PCP(i) et la table 214 de PPCP (k, c). Alors que le bloc 308 est indiqué après le bloc 306, l'ordre pourrait être inversé, puisqu'aucune des deux opérations ne dépend du résultat de l'autre. La table de réindexation 162 s'initialise par indication, au moyen de drapeaux ou d'autres moyens connus, du fait que toutes les rubriques de la table 162 sont vides et qu'aucun index n'y est affecté. La table de PCP s'initialise par positionnement de PCP(c)=0 pour tous les c, et la table de PPCP s'initialise par positionnement de PPCP(k,c)--=0 pour tous les k et les c. Dans le bloc 310, le minimiseur 210 affecte l'index 0 à S0, et met à jour la table de réindexation en conséquence. Dans le bloc 312, le minimiseur 210 met à jour la table des PCP(c) pour l'index So ajouté, en faisant PCP(c)=Pc(SO) pour chaque c. Dans le bloc 314, le minimiseur 210 met à jour la table des PPCP(c) pour l'index SO ajouté, en faisant PPCP(k,c)=Pc(So) pour chaque paire (c, k) dans laquelle le kème bit de la représentation à base 2 de l'index attribué est 1. Cette opération n'est pas nécessaire lorsque le premier index attribué est 0, puisqu'aucun des bits de l'index n'est 1, mais cette opération est nécessaire lorsqu'un index non nul est attribué en premier. Dans le bloc 316, le minimiseur 210 incrémente i, ce qui, au prempassage dans le bloc 316, donne i=1. Le traitement passant par les blocs 316 à 328 se répète pour chaque i, entre 0 et M-1, ce qui a pour effet d'affecter un index de la table de réindexation à un symbole à chaque passage. Naturellement, la boucle finale, o i=M-1, n'est pas réellement nécessaire, puisque, à ce moment, il ne reste qu'un seul index à affecter à SM_1. Dans le bloc 318, le table de PCP est mise à jour pour le symbole Si, selon la condition PCP(c)=PCP(c)+Pc(S). Après cette opération, étant donné le contexte Cc et l'alphabet de symboles A'={S0,....Si}, la probabilité que le symbole reçu soit dans l'alphabet A' est PCP(c), c'est- à-dire la cème rubrique de la table de PCP. Dans le bloc 320, une valeur d'entropie binaire partielle (PBE) est produite pour chaque index non attribué. Les index non attribués (qui se montent à M-i à ce moment) sont trouvés dans la table 162 ou sont remémorisés de façon interne par le minimiseur 210. L'entropie binaire partielle relative à un index j et à un symbole Si, soit PBE(j, Si), est exprimée dans les équations 1 à 3, étant donné que les index 0 à i-1 ont déjà été attribués. PBE (j Si) = [P (Cc) H (PA',c.kj,sl) ] (1) CEC k-i [ PC (s)+ ( P(Si) 3. ckj,5l ( )= ()SEA')bk(z (s))=PbkJ) -P (2) LI P (s) ] (Si) s EA', H (P) = -p (X) 1og2 (x) (3) xEP o A' est l'alphabet des i symboles déjà attribués, H(P) est l'entropie de la distribution de probabilités P et bk(X) est la valeur du kème bit d'une représentation à base 2 de x, tandis que r(s) est le valeur de réindexation associée au symbole s. Dans le bloc 322, le minimiseur 210 sélectionne la valeur minimale de PBE(j,Si) entre toutes les valeurs à calculer et fixe une variable X égale au j de cette valeur minimale. Dans le bloc 324, le minimiseur 210 affecte X à la valeur de réindexation relative à Si, et indique l'affectation dans la table 162. Dans le bloc 326, le minimiseur 210 met à jour la table de PPCP(c, k) pour Si et X, selon la relation PPCP(c, k)=PPCP(c, k)+PC(S0) pour tous les c et tous les k o bk(X)=l. Apres cette opération, étant donné le contexte Cc et l'alphabet A'={S, ....Si}, la probabilité que le kème bit d'une valeur de réindexation associée à un symbole reçu soit 1 et que le symbole reçu soit dans l'alphabet A', cst PPCP(c,k). Dans le bloc 328, le minimiseur 210 vérifie si deux ou plus de deux valeurs de réindexation n'ont pas été affectées. Cest le cas si i=M-2, ou moins, dans ce bloc, ce qui signifie que M-1 index ont été affectés. Le dernier index est affecté à SM-1. Le dénominateur de l'équation (2) est PCP(c), qui est mis à jour dans le bloc 318 par addition de Pc(Si) à chaque fois qu'un symbole Si est ajouté dans l'alphabet A'. Le numérateur de l'équation (2) est PPCP(k, c) comme ce devrait être si j était l'index associé à Si. Puisque la valeur mise à jour de PPCP(k, c) dépend de l'affectation particulière de l'index j à Si, alors PPCP(k, c) est mis à jour après la sélection de X=j, faite dans le bloc 326. Naturellement, puisque H est une fonction d'entropie binaire, l'équation (2) ne doit être calculée que pour [5=0 ou 1, puisque P(0)+P(1) =1. De plus, puisque H est une entropie binaire, l'équation (3) se simplifie en réalité en: H(X) = -x * log2x - (1-x) * log2(1-x). Le résultat final du processus présenté sur la figure 7 est l'affectation des valeurs de réindexation dans la table de réindexation 162, qui est utilisée par le réindexeur 160 pour réindexer des symboles de pixels d'entrée sous une forme binaire donnant généralement une meilleure compression que si la réindexation n'avait pas été effectuée. Traitement parallèle Les sections ci-dessus présentées indiquent comment améliorer les taux de compression en utilisant un codage adaptatif, des modèles de contextes et une réindexation. Dans un décompresseur, le codage adaptatif et la modélisation des contextes demandent des boucles de réaction, puisque la façon dont un bit est décodé à partir d'un train de mots de code dépend de l'information concernant les bits et les symboles antérieurement décodés. S'il faut que le décompresseur décode rapidement le train de mots de code en temps réel, il faut faire appel à un traitement parallèle pour obtenir un plus grand débit. On présente ci-après la mise en oeuvre d'un semblable traitement en parallèle. Si on utilise le modèle de contexte par position de bit (voir le modèle (a) de la figure 8), chaque bit d'une valeur de pixel est traité par l'un de huit codeurs parallèles, chaque codeur étant spécialement conçu pour une position de bit. Avec une telle disposition, le contexte du bit est connu du codeur, puisque la position de bit est le seul contexte et que la position de bit est connu du codeur, car il s'agit d'une donnée constante pour un codeur donné. Toutefois, lorsqu'on utilise d'autres modèles de contextes pour améliorer la compression, la mise en parallèle du système de codage n'est pas aussi simple. Par exemple, on va expliquer le cas du modèle (c) présenté sur la figure 8, c'est-à-dire le modèle de contexte dépendant des bits. Si chaque bit d'un pixel est envoyé à un codeur distinct, les bits ne peuvent pas être décodées en parallèle, puisque les bits situés à gauche d'un bit en cours de décodage doivent être décodés en premier de manière à fournir le contexte nécessaire qui est associé au bit en train d'être décodé. L'utilisation de certains modèles de contextes impose donc des contraintes au traitement en parallèle. Selon un aspect de l'invention, pour permettre l'utilisation d'un modèle de contexte préféré et autoriser néanmoins un traitement parallèle dans un codeur à l'aide de ce modèle de contexte, il est prévu un unique tampon de réordonnement. Les figures 9 et 10 montrent comment un tampon de réordonnement et son inverse, un tampon de désordonnement, sont couplés à des codeurs parallèles et la figure 11 montre de façon plus détaillée le fonctionnement du tampon de réordonnement. Etant donné un modèle de contexte préféré, deux contrainte sont imposées à un codeur parallèle. Tout d'abord, si les étages doivent être respectivement indépendamment, alors, parmi le groupe de bits traités au cours d'un unique cycle parallèle, aucun des bits ne doit affecter le contexte des autres bits. En deuxième lieu, si la donnée de contexte doit être mise à jour après que chaque bit a été traité, il ne doit pas y avoir deux bits du groupe de bits traités qui partagent un même contexte. La figure 12 illustre un enregistrement de contexte typique contenant une donnée de contexte qui peut être mise à jour lorsqu'un bit ayant un contexte donné est traité. Cet enregistrement peut être une seule ligne d'une table telle que la mémoire 116 représentée sur la figure 4. Sur la figure 9, un système de compression en parallèle 400 selon l'invention est présenté, qui comporte un tampon de réordonnement 402, un démultiplexeur 404, N étages parallèles 406(0,...,N-1), un multiplexeur 408 et un tampon de désordonnement 410. Le système 400 peut être utilisé avec ou sans réindexation. Chaque étage 406 comprend un compresseur 412, identique au compresseur 102, un canal 414, et un décompresseur 416, identique au décompresseur 106. La figure 10 montre une autre configuration, 450, dans laquelle un entrelaceur 452 est utilisé pour combiner le trafic de canaux 414(0,....N1) sur un unique canal 454, tandis qu'un désentrelaceur 456 est utilisé pour re-séparer le trafic du canal unique 454 en les canaux distincts relatifs aux étages respectifs. On se reporte de nouveau à la figure 9. Le train de symboles appliqué à l'entrée du système 400 est mis en mémoire par le tampon de réordonnement 404. Le tampon de réordonnement 404 reçoit un train de bits à K bits par symbole (K=8 sur la figure 8), comme expliqué en détail ci-après, et délivre les bits au démultiplexeur 404, qui distribue les bits réordonnés aux codeurs parallèles. Dans le ième étage parallèle, soit 406(i), le compresseur 412(i) comprime les bits affectés à l'étage 406(i) en mots de code, lesquels sont transmis via le canal 414(i) et sont décomprimés par le décompresseur 416(i). Les signaux de sortie de tous les étages sont ensuite combinés par le multiplexeur 408, qui délivre leur combinaison au tampon de désordonnement 410, lequel effectue l'opération inverse de celle du tampon de réordonnement 404. Alors que, dans le codeur parallèle présenté, chaque étage est affecté à un unique contexte, le réordonnement offre la possibilité de diviser les étages parallèles suivant d'autres manières, en fonction des besoins de l'application. par exemple, chaque étage pourrait être affecté à une valeur Pclass, à un groupe comprenant plusieurs contextes ou à une division spécialement concue pour répartir également le trafic entre les divers étages. La partie (a) de la figure 11 montre un tampon de réordonnement 502 qui est utilisé dans un codeur parallèle pour 4 étages parallèles et pour le modèle de contexte dépendant des bits, même si on peut également l'utiliser avec d'autres configurations, par exemple avec 8 ou N étages parallèles, avec un nombre différent de bits par pixel, ou avec un modèle de contexte différent. Quatre octets d'entrée (pixels) sont présentés, sur la gauche, comme devant être introduit dans le tampon 502, et huit blocs à quatre bits sont présentés comme devant être délivrés par le tampon 502. Les blocs de sortie sont fournis, à raison d'un par période de codage parallèle, à un codeur parallèle, de sorte que chacun des blocs de sortie représente un groupe de bits traités en parallèle. Si les bits d'entrée n'avaient pas été réordonnés, les blocs appliqués à l'entrée du codeur parallèle ne pourraient être que les quatre bits les plus significatifs du pixel A (A7-A4), suivis des quatre bits les moins significatifs du pixel A (A3-A0), après quoi on aurait trouvé les quatre bits les plus significatifs du pixel B (B7-B4), et ainsi de suite. Comrnme cela doit apparaître clairement dans la discussion précédente, en l'absence de réordonnement, un ensemble de bits traités en parallèle ne serait pas indépendant dans le cas o on utiliserait le modèle de contexte dépendant des bits, puisque le bit A4 tire son contexte de sa position (4) et des valeurs des bits A7, A6 et A5, qui sont du même ensemble de bits. Pour résoudre ce problème, le tampon 502 réordonne les bits d'entrée comme représenté, de façon à délivrer, pour les pixels A, B, C et D, les blocs (ensembles de bits traités en parallèle) D7-C7-B7-A7, D6-C6-B6-A6, et ainsi de suite. Avec ce réordonnement, aucun bit ne s'appuie sur un autre bit de son ensemble en ce qui concerne le contexte. Toutefois, deux bits peuvent toujours partager un même contexte. Par exemple, D7 et C7 peuvent avoir le même contexte dans le modèle de contexte dépendant des bits, puisque le contexte dépendant des bits est donné par la position du bit et par les bits se trouvant à gauche. Pour D7 et C7, les positions des bits sont les mêmes, et il n'y a pas de bits du côté gauche (au-dessus, sur la figure 11). Cette deuxième contrainte est résolue, en même temps que la première contrainte, par l'utilisation du tampon de réordonnement présenté sur la figure 11(b). Dans ce tampon, les bits groupés en blocs sont pris dans différents pixels mais aussi pris à partir de positions de bits différentes. Si la position du bit fait partie du contexte, les bits ayant des positions de bit différentes auront des contextes différents. Ainsi, les blocs (ensembles de bits traités en parallèles) délivrés par le tampon 504, à savoir D7-C6-B5-A4, D6-CS-B4-A3, etc., jusqu'au neuvième bloc H7-G6-F5-E4, comprennent chacun des bits qui ne dépendent pas d'autres bits de leur bloc en ce qui concerne le contexte et qui ne partagent pas un même contexte avec un autre bit de leur bloc. Les pixels d'entrée E, F, G et H ne sont pas représentés, et on comprendra qu'ils suivent le pixel D. Dans la partie (b) de la figure 11, aucun pixel ne précède le pixel A, de façon à illustrer l'état du tampon à la suite d'un repositionnement. Au cours de la première opération effectuée en parallèle après le repositionnement du tampon, un bloc comportant un seul bit (venant du pixel A) est traité. A l'étape parallèle suivante, un bit venant du pixel A et un bit venant du pixel B sont traités. Alors que le décalage des bits visant à éviter des conflits de contextes signifie que les étages parallèles ne seront pas tous utilisés dans les différents premier blocs après un repositionnement, cette sous-utilisation n'a pas d'effet notable pour n'importe quelle taille d'image raisonnable. Dans le cas de la partie (b) de la figure 11, ceci ne se produit que pour les trois premier blocs. Les figures 13(a) et 13(b) illustrent une contrainte imposée par un modèle de contexte à des codeurs fonctionnant en chevauchement (pipeline), cette contrainte étant analogue aux contraintes imposées aux codeurs parallèles. Les figures 13(a) et 13(b) montrent la progression d'un codeur en chevauchement qui traite les pixels A à D présentés sur la figure 11, la figure 13(a) montrant des bits de traitement en chevauchement qui sont dans un ordre non réordonné, tandis que la figure 13(b) montre des bits de traitement en chevauchement qui sont dans un ordre réordonné. Sur les deux figures, chaque colonne porte une indication de temps, t, et montre le bit qui est traité par l'étage de chevauchement. Les étages apparaissant dans cet exemple sont un étage d'entrée, trois étages intermédiaires (IS-1, IS-2 et IS-3), et deux étages de sortie. Dans cet exemple, on suppose qu'un bit est traité et rendu disponible pour la détermination du contexte d'autres bits dans le premier étage de sortie, mais pas plus tôt. En outre, on suppose que le traitement de l'étage IS-1 dépend du contexte du bit qui est en train d'être traité et que l'on utilise le modèle de contexte dépendant des bits. Avec le modèle de contexte dépendant des bits, le contexte du bit A2, entouré par un cercle, dépend de A3, A4, A5, A6 et A7. Sur la figure 13(a), ceci signifierait que le traitement du bit A2 de IS-1 ne pourrait pas être effectué au moins avant que les bits A3 et A4 soient arrivé au premier étage de sortie (les bits A5 à A7 sont déjà au-delà du premier étage de sortie. Un tel retard annulerait les avantages du traitement en chevauchement. Pour résoudre ce problème, on peut utiliser un tampon de réordonnement tel que le tampon 502, avec l'effet présenté sur la figure 13(b). Dans cet exemple, le bit entouré d'un cercle est B6, qui tire son contexte du bit B7, lequel a été délivré au premier étage de sortie à une époque antérieure, et est donc disponible pendant le traitement du bit B6 dans IS-1. Bien entendu, l'homme de l'art sera en mesure d'imaginer, à partir du procédé et du dispositif dont la description vient d'être donnée à titre simplement illustratif et nullement limitatif, diverses variantes et modifications ne sortant pas du cadre de l'invention. Le lecteur voudra bien noter qu'une partie de la description contient des éléments faisant l'objet d'une protection en matière de reproduction (copyright). Le détenteur de ce droit de protection ne soulève aucune objection à la reproduction xérographique, par quiconque, du document de brevet ou de la description du brevet dans la forme exacte o elle apparaît dans les documents d'un office national de propriétés industrielles, mais réserve ses droits dans toutes autres circonstances. REVENDICATIONS 1. Procédé de compression de symboles d'entrée, o chaque symbole d'entrée est sélectionné dans un alphabet formant un groupe de M symboles afin de représenter un pixel d'une image palettisée, en mots de code qui sont représentés à l'aide d'un moins grand nombre de bits et à partir desquels on peut décoder les symboles d'entrée, caractérisé en ce qu'il comprend les opérations suivantes: sélectionner un modèle de contexte; lire un train d'entrée de symboles d'entrée appartenant à un groupe de M symboles; déterminer une distribution de contextes, telle qu'indiquée par ledit modèle de contexte, sur l'ensemble dudit train d'entrée; déterminer une distribution desdits symboles d'entrée appartenant à un groupe de M symboles dans lesdits contextes, sur l'ensemble dudit train d'entrée; attribuer une première séquence binaire à un premier symbole des M symboles de l'alphabet, o ladite séquence binaire est de K bits, K étant un nombre entier supérieur ou égal à log2M; affecter des séquences binaires ultérieures à des symboles ultérieurs des M symboles de l'alphabet, o la séquence binaire ultérieure est la séquence binaire, choisie parmi toutes les séquences binaires non attribuées, qui conduit à une entropie binaire partielle minimale sur l'ensemble formé d'un alphabet partiel de symboles de l'alphabet qui se sont déjà vu attribuer une séquence binaire et de la séquence binaire choisie, de manière à former une table de réindexation permettant de traduire tout symbole de l'alphabet de M symboles en la binarisation qui lui est attribuée; répéter l'attribution de séquences binaires ultérieures au moins jusqu'à ce que M-1 séquences binaires soient attribuées à des symboles; attribuer la séquence binaire restante au symbole restant, de façon à achever la réalisation de ladite table de réindexation; binariser chaque symbole d'entrée du groupe de M symboles à l'aide de ladite table de réindexation de facçon à former un train de bits; et effectuer un codage entropique dudit train de bits afin de former les mots de code d'un train de mots de code comprimés. 2. Procédé selon la revendication 1, caractérisé en ce que ladite entropie binaire partielle est la somme d'entropies de bit partielles formée sur tous les contextes et toutes les K positions de bit des séquences binaires, o une entropie de bit partielle est l'entropie du rapport d'une probabilité conditionnelle positionnelle partielle et d'une probabilité conditionnelle partielle. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'opération consistant à transmettre ledit train de mots de code comprimés et ladite table de réindexation à un décompresseur. 4. Procédé selon la revendication 3, caractérisé en ce qu'il comprend en outre l'opération consistant à décomprimer, après la transmission, ledit train de mots de code comprimés pour reconstituer ledit train de bits sous la forme d'un train de bits décodés. 5. Procédé selon la revendication 4, caractérisé en ce qu'il comprend en outre l'opération consistant à désindexer ledit train de bits décodés à l'aide d'une forme inverse de ladite table de réindexation. 6. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre les opérations suivantes: transmettre ledit train de mots de code comprimés à un décompresseur; décomprimer, après la transmission, ledit train de mots de code comprimés pour reconstituer ledit train de bits sous la forme d'un train de bits décodés; et traduire ledit train de bits décodés en fonction de modèles de contextes déduits de parties précédemment traduites dudit train de bits décodés. 7. Procédé selon la revendication 1, caractérisé en ce que ledit modèle de contexte est un modèle de contexte par position de bit, o le contexte d'un bit est déterminé par la position dudit bit à l'intérieur de sa binarisation. 8. Procédé selon la revendication 1, caractérisé en ce que ledit modèle de contexte est un modèle de contexte par plan de bits, o le contexte d'un bit est déterminé par la position dudit bit à l'intérieur de sa binarisation et par un symbole de contexte. 9. Procédé selon la revendication 1, caractérisé en ce que ledit modèle de contexte est un modèle de contexte dépendant des bits, o le contexte d'un bit est déterminé par des bits précédemment traités, s'il en existe, de la binarisation dudit bit. 10. Procédé selon la revendication 1, caractérisé en ce que ledit modèle de contexte est un premier modèle de contexte dépendant des bits de Markov, o le contexte d'un bit est déterminé par des bits précédemment traités, s'il en existe, de la binarisation dudit bit et par un symbole de contexte. 11. Procédé selon la revendication 1, caractérisé en ce que ledit modèle de contexte est un modèle de contexte mixte, o le contexte d'un bit est déterminé par des bits précédemment traité, s'il en existe, de la binarisation dudit bit, et par des bits d'une binarisation d'un symbole de contexte. 12. Procédé de compression de symboles d'entrée, o chaque symbole d'entrée est sélectionné dans un alphabet formant un groupe de M symboles afin de représenter un pixel d'une image palettisée, en mots de code qui sont représentés à l'aide d'un moins grand nombre de bits et à partir desquels on peut décoder les symboles d'entrée, caractérisé en ce qu'il comprend les opérations suivantes: lire un train d'entrée de symboles d'entrée d'un groupe de M symboles; binariser lesdits symboles d'entrée du groupe de M symboles en un train de symboles binarisés; identifier un contexte pour chaque bit de chaque symbole binarisé, o le contexte associé audit bit respectif est déterminé par la position dudit bit respectif à l'intérieur dudit symbole binarisé respectif et par un symbole de contexte qui est un symbole autre que ledit symbole binarisé respectif et est dans une relation prédéterminée avec ledit symbole binarisé respectif, ladite relation prédéfinie étant telle que, au moment du décodage, ledit symbole binarisé respectif est décodé après ledit symbole de contexte; déterminer un code entropique binaire pour lesdits contextes; et coder chaque bit dudit train de symboles binarisés selon ledit code entropique binaire déterminé à partir du contexte dudit bit respectif dudit train et de la valeur dudit bit respectif dudit train. 13. Procédé de compression de symboles d'entrée, o chaque symbole d'entrée est sélectionné dans un alphabet formant un groupe de M symboles afin de représenter un pixcl d'une image palettisée, en mots de code qui sont représentés à l'aide d'un moins grand nombre de bits et à partir desquels on peut décoder les symboles d'entrée, caractérisé en ce qu'il comprend les opérations suivantes: lire un train d'entrée de symboles d'entrée d'un groupe de M symboles; binariser lesdits symboles d'entrée du groupe de M symboles en un train de symboles binarisés; identifier un contexte pour chaque bit de chaque symbole binarisé, o le contexte associé audit bit respectif est déterminé par la position dudit bit respectif à l'intérieur dudit symbole binarisé respectif et par des bits d'une binarisation d'un symbole de contexte, ledit symbole de contexte étant un symbole autre que ledit symbole binarisé respectif dans une relation prédéterminée avec ledit symbole binarisé respectif, ladite relation prédéfinie étant telle que, au moment du décodage, ledit symbole binarisé respectif est décodé après ledit symbole de contexte; déterminer un code entropique binaire pour lesdits contextes; et coder chaque bit dudit train de symboles binarisés selon ledit code entropique binaire déterminé à partir du contexte dudit bit respectif dudit train et de la valeur dudit bit respectif dudit train. 14. Appareil de compression destiné à comprimer des symboles appartenant à un groupe de M symboles, qui représentent chacun une valeur de pixel d'une image palettisée et sont chacun sélectionnés dans un alphabet formant un groupe de M symboles, en mots de code qui sont représentés en un moins grand nombre de bits et à partir desquels les symboles du groupe de M symboles peuvent être extraits, l'appareil de compression étant caractérisé en ce qu'il comprend: un moyen servant à déterminer une distribution de symboles dans un train de symboles d'entrée; un générateur de table de réindexation (162) qui détermine une binarisation pour chacun des M symboles possibles, ladite binarisation s'appuyant sur une distribution des symboles du groupe de M symboles, o ladite binarisation est représentée par une table de réindexation; un moyen de réindexation (160) servant à binariser chaque symbole du groupe de M symboles en une séquence binaire selon ladite table de réindexation, de façon à transformer les symboles du groupe de M symboles représentant l'image palettisée en un train de bits binaires; un compresseur (112) à codage entropique binaire qui comprime ledit train de bits binaires et délivre un train de mots de code résultant, o ladite binarisation est choisie de façon à minimiser l'entropie binaire du train d'entrée binarisé. 15. Appareil de compression selon la revendication 14, caractérisé en ce que la binarisation conduit à un minimum local pour ladite entropie binaire parmi toutes les binarisations possibles. 16. Appareil de compression selon la revendication 14, caractérisé en ce que lesdites séquences binaires ont une longueur fixe de K bits, o K est supérieur ou égal à log2M. 17. Appareil de compression selon la revendication 14, caractérisé en ce que ledit compresseur à codage entropique binaire comprend un générateur (108(1)) de modèles de contextes, un module (110(1)) d'estimation de probabilités, et un générateur (112(1)) de bits. 18. Codeur entropique, dans lequel des symboles d'entrée sont codés en fonction d'un contexte fourni par des symboles de contextes, qui sont également des symboles d'entrée, caractérisé en ce qu'il comprend: un moyen (402) de réordonnement de symboles, qui est connecté à une entrée de symboles du codeur entropique, et qui sert à réordonner des symboles d'entrée en les faisant passer de l'ordre du train d'entrée à un ordre de train réordonné; un générateur (108(1)) de modèles de contextes, couplé à une sortie dudit moyen de réordonnement de symboles, qui accepte des symboles d'entrée dans ledit ordre de train réordonné et mémorise des symboles d'entrée comme cela est nécessaire pour déterminer le contexte d'un symbole d'entrée courant à partir de symboles de contextes dudit symbole d'entrée courant; un estimateur de probabilités (110(1)), couplé de façon à recevoir ledit symbole d'entrée courant et un contexte dudit symbole d'entrée courant en provenance dudit générateur de modèles de contextes, et servant à estimer la probabilité que ledit symbole d'entrée courant apparaisse étant donné son contexte; et un générateur de bits (112(1)), couplé audit estimateur de probabilités, et servant à produire des mots de code en fonction d'estimations de probabilités fournies par ledit estimateur de probabilités, lesdits mots de code étant une représentation comprimée dudit train réordonné de symboles d'entrée, o ledit moyen de réordonnement de symboles réordonne des symboles d'entrée de façon que la distance, réordonnée, entre ledit symbole d'entrée courant et les symboles de contextes dudit symbole d'entrée courant soit, dans ledit train réordonné, plus grande que la distance originale entre le symbole d'entrée courant et les symboles de contextes du symbole d'entrée courant telle qu'elle était dans ledit train d'entrée. 19. Codeur entropique selon la revendication 18, caractérisé en ce qu'il comprend en outre un décodeur (106), ledit décodeur comprenant: un deuxième générateur de modèles de contextes (108(2)), qui mémorise des symboles d'entrée décodés, comme cela est nécessaire, afin de déterminer le contexte d'un symbole d'entrée courant; un deuxième estimateur de probabilités (110(2)), couplé de façon à recevoir un contexte dudit symbole d'entrée courant de la part dudit deuxième générateur de modèles de contextes; un deuxième générateur de bits (112(2)), couplé de façon à recevoir lesdits mots de code délivrés par ledit générateur de bits, et servant à produire un train de symboles à partir desdits mots de code en fonction d'estimations de probabilités fournies par ledit deuxième estimateur de probabilités; un moyen (410) de désordonnement de symboles, couplé à une sortie de symboles dudit deuxième générateur de modèles de contextes, et servant à réordonner les symboles d'entrée décodés en les faisant passer de l'ordre dudit train réordonné à l'ordre dudit train d'entrée, de manière à augmenter le retard entre lesdits symboles de contextes qui sont décodés et lesdits symboles d'entrée courants qui sont décodés. 20. Codeur entropique selon la revendication 19, caractérisé en ce qu'il comprend en outre un moyen permettant de décoder lesdits mots de code en parallèle, o ledit retard augmenté est suffisant pour permettre un décodage en parallèle pendant que des symboles de contextes sont fournis selon les besoins dudit décodeur. 21. Codeur entropique, o une pluralité de bits pris dans un train de bits d'entrée sont codés en parallèle, caractérisé en ce qu'il comprend: un générateur de modèles de contextes qui accepte un bit d'entrée et délivre l'appariement dudit bit d'entrée avec un contexte associé dudit bit d'entrée, ledit contexte étant déterminé à partir d'au moins un des bits précédemment fournis en entrée, de la position dudit bit d'entrée à l'intérieur d'un symbole d'entrée et d'un modèle de contexte prédéterminé; un codeur parallèle sensible au contexte, couplé de façon à recevoir les appariements délivrés par ledit générateur de modèles de contextes et qui produit des mots de code en fonction d'estimations de probabilités de bits d'entrée étant donné lesdits contextes appariés, lesdits mots de code étant une représentation comprimée dudit train de bits d'entrée, et ledit codeur parallèle comprenant: un moyen (404) servant à former un train parallèle de bits d'entrée, qui regroupe N bits en un ensemble de bits; et une pluralité de N étages de codage (406) qui traitent chacun un seul bit d'entrée dudit ensemble de bits ainsi regroupés; et un moyen (402) de réordonnement de bits, couplé entre l'entrée du train de bits d'entrée et ledit générateur de modèles de contextes, et servant à réordonner les bits d'entrée de façon que le contexte d'un bit appartenant à un ensemble de bits soit indépendant des autres bits se trouvant dans ledit ensemble de bits. 22. Codeur entropique selon la revendication 21, caractérisé en ce que ledit moyen de réordonnement de bits réordonne également ledit train de bits d'entrée de facçon qu'il n'y ait pas deux bits d'un ensemble de bits traités en parallèle qui partagent un même contexte commun. 23. Codeur entropique, o une pluralité de bits pris dans un train de bits d'entrée sont codés suivant un processus de chevauchement, ou processus pipeline, à plusieurs étages, caractérisé en ce qu'il comprend: un générateur de modèles de contextes qui accepte un bit d'entrée et délivre un appariement dudit bit d'entrée avec un contexte associé dudit bit d'entrée, ledit contexte étant déterminé à partir d'au moins un des bits précédemment fournis en entrée, de la position dudit bit d'entrée à l'intérieur d'un symbole d'entrée et d'un modèle de contexte prédéterminé; un codeur du type chevauchement sensible au contexte, couplé de façon à recevoir les appariements délivrés par ledit générateur de modèles de contextes, et qui produit des mots de code en fonction d'estimations de probabilités de bits d'entrée étant donné lesdits contextes appariés, lesdits mots de code étant une représentation comprimée dudit train de bits d'entrée, et ledit codeur de type chevauchement comprenant: un étage d'entrée, qui traite des bits d'entrée délivrés par ledit générateur de modèles de contextes; une pluralité d'étages intermédiaires qui traitent les signaux de sortie dudit étage d'entrée, chaque étage étant couplé à d'autres étages suivant un mode de chevauchement, o au moins un étage est un étage sensible au contexte, qui traite un bit d'entrée en fonction du contexte apparié dudit bit d'entrée; et un étage de sortie servant d'étage final à ladite pluralité d'étages intermédiaires; un moyen (502; 504) de réordonnement de bits, couplé entre une entrée destinée au train de bits d'entrée et ledit générateur de modèles de contextes, et servant à réordonner les bits d'entrée de façon que le contexte d'un bit donné soit indépendant d'autres bits qui sont en train d'être traités par ladite pluralité d'étages intermédiaires pendant que ledit bit donné est en train d'être traité dans ledit étage sensible au contexte. 24. Codeur entropique selon la revendication 23, caractérisé en ce que ledit moyen de réordonnement de bits réordonne également ledit train de bits d'entrée de façon qu'il n'y ait pas deux bits présents en même temps dans le processus de chevauchement, qui partagent un même contexte commun.