Brevet FR2927745A1 — publié le 20090821

La présente invention se rapporte à un procédé et à un dispositif de codage d'un signal numérique. Elle appartient au domaine général du codage et du décodage de signaux numériques représentant des grandeurs physiques. A titre d'exemples nullement limitatifs, les signaux concernés peuvent représenter des images fixes ou des vidéos ou, plus généralement, des données multimédia. Par exemple, une image numérique provenant d'un appareil photo numérique est constituée d'un ensemble de N x M unités élémentaires d'image ou pixels, où N est la hauteur de l'image et M sa largeur. Cette image est codée avant d'être stockée en mémoire. Les données initiales, c'est-à-dire l'information représentative des pixels de l'image, sont organisées en un tableau bidimensionnel accessible, par exemple, ligne à ligne. Une image numérique subit généralement une transformation préalablement à son codage. De même, lors du décodage d'une image numérique codée, l'image subit une transformation inverse. La transformation peut consister à appliquer un filtre à tout ou partie de l'image numérique. Un filtre peut être vu comme un produit de convolution entre le signal d'image et un vecteur prédéterminé permettant, pour chaque pixel de la région à laquelle il s'applique, de modifier sa valeur en fonction des valeurs des pixels avoisinants, affectées de coefficients. La technique de codage décrite dans le document de brevet FR-A-2 889 382 permet de filtrer le signal préalablement à une compression, en orientant le filtre le long de certaines directions, pour chaque pixel, en vue de réduire la dynamique du signal engendré et ainsi d'augmenter la compression du signal. On rappelle ci-dessous les principaux aspects de ce filtrage, qui est utilisé par la présente invention dans un mode particulier de réalisation. Il n'est cependant pas exclu que l'invention mette en oeuvre un autre type de transformation, en lieu et place d'un tel filtrage. Ce filtrage, qui utilise une décomposition du signal en sous-bandes de fréquence, vise à réduire la quantité d'information présente dans les sous- 2 bandes, de façon à améliorer la compression du signal en vue de son stockage ou de sa transmission. Chaque échantillon filtré présente une valeur d'amplitude et une valeur d'orientation géométrique. Par "orientation", on entend ici une direction dans l'image (par exemple, ligne de pixels, ou colonne de pixels, ou diagonale de pixels). On applique un filtrage selon l'orientation qui aura été déterminée comme la plus appropriée, de façon à augmenter les performances du filtrage. Un tel procédé de filtrage permet de tenir compte des variations locales et notamment de l'orientation locale du flux du signal numérique tout en préservant la propriété de séparabilité du filtrage, c'est-à-dire que le filtrage peut être appliqué de façon indépendante sur les différentes dimensions du signal numérique traité, par exemple, successivement sur chacune de ses dimensions, comme, dans le cas d'un signal d'image, le long des lignes et le long des colonnes ou inversement. Pour faciliter l'opération de filtrage inverse effectuée au décodage, on peut associer lors du codage, à chaque échantillon filtré, une information représentative de l'orientation géométrique du filtre appliqué à cet échantillon. Le filtrage d'échantillons peut mettre en oeuvre un schéma de filtrage particulièrement avantageux pour la présente invention, appelé schéma de "lifting" (en anglais "lifting scheme"), avec par exemple au moins deux filtres, qui peuvent être appliqués chacun à des échantillons différents, ce qui est économe en termes d'espace mémoire, étant donné que les échantillons sont remplacés au cours de leur filtrage. Le schéma de lifting est une mise en oeuvre particulière de la transformation en ondelettes qui effectue deux filtrages successifs, un premier filtrage passe-haut et un second filtrage passe-bas, chaque échantillon étant remplacé par le résultat de son filtrage. Par exemple, le schéma de lifting effectue un premier passage en sélectionnant les échantillons ayant une position paire, en vue de leur filtrage selon un filtre passe-haut et de leur remplacement. Ensuite, le schéma de lifting effectue un second passage en sélectionnant les échantillons ayant une 3 position impaire, en vue de leur filtrage selon un filtre passe-bas et de leur remplacement. Les coefficients passe-haut sont engendrés en utilisant uniquement des coefficients de rang pair, puis les coefficients passe-bas sont engendrés en utilisant uniquement des coefficients de rang impair et des coefficients engendrés lors de l'étape de filtrage passe-haut. Quant au décodage d'un signal numérique codé par une telle technique, il consiste principalement à obtenir une pluralité d'échantillons filtrés, puis à appliquer un filtrage inverse à des échantillons filtrés, ce filtrage inverse étant réalisé sur un échantillon filtré selon l'orientation géométrique du filtre qui a été utilisée pour le filtrage de cet échantillon lors de son codage conformément à l'invention. L'article de Christos CHRYSAFIS et Antonio ORTEGA intitulé "Efficient Context-Based Entropy Coding for Lossy Wavelet Image Compression", publié dans Proceedings of the Data Compression Conf., Snowbird, Utah, mars 1997, pages 241 à 250, décrit une technique de compression d'images qui consiste notamment à déterminer la meilleure fonction de contexte pour chaque échantillon du signal d'image. La présente invention a pour but d'améliorer le taux de compression du signal numérique, en traitant l'image blocs par blocs. Dans ce but, la présente invention propose un procédé de codage d'informations représentatives de l'orientation géométrique d'un filtre utilisé pour filtrer un signal numérique représentant une image suivant une pluralité d'orientations géométriques, dans lequel l'orientation du filtre appliqué à un échantillon du signal est déterminée par la valeur d'une fonction de contexte pour ledit échantillon, ce procédé étant remarquable en ce qu'il comporte des étapes consistant à : - diviser l'image en une pluralité de blocs ; - pour chaque bloc de la pluralité de blocs, déterminer une fonction de contexte optimale suivant un premier critère d'optimisation prédéterminé ; - pour chaque bloc de la pluralité de blocs, déterminer une table d'association optimale entre une fonction de contexte et des orientations suivant un second critère d'optimisation prédéterminé ; 4 - grouper les tables d'association correspondant à la fonction de contexte optimale déterminée précédemment, de façon à obtenir une pluralité de groupes de tables d'association ; et - coder chaque groupe de la pluralité de groupes indépendamment 5 des autres groupes. Le fait de grouper les tables d'association correspondant à une fonction de contexte optimale permet d'isoler des ensembles de tables d'association qui correspondent à des statistiques différentes et, ainsi, d'augmenter la performance de compression. 10 Selon une caractéristique particulière, la fonction de contexte tient compte des valeurs prises par un nombre prédéterminé d'échantillons avoisinant un échantillon ayant une position correspondant à la position de l'échantillon à filtrer dans une sous- bande de fréquences de résolution immédiatement inférieure à la résolution de la sous-bande à laquelle appartient 15 l'échantillon à filtrer. Cela permet d'obtenir des données représentatives de la statistique dans le voisinage spatial de l'échantillon à coder, qui est la plus efficace en vue d'augmenter les performances de compression. Selon une caractéristique particulière, la fonction de contexte peut 20 prendre trois valeurs 0, 1 et 2. Cela représente un bon compromis entre l'efficacité de la fonction de contexte et la complexité de calcul. Dans un mode particulier de réalisation, le procédé met en oeuvre les fonctions de contexte suivantes : 25 30 f1(X) = 0 si A Selon une caractéristique particulière, le premier critère d'optimisation consiste en la minimisation du coût de codage de la fonction de contexte. Selon une autre caractéristique particulière, le second critère d'optimisation consiste en la minimisation de la somme des amplitudes des échantillons de sortie des filtres suivant les diverses orientations appliquées au bloc. Ces deux critères permettent d'optimiser le compromis entre la distorsion engendrée par la compression et le débit utilisé pour coder le signal. Le signal numérique considéré peut être représentatif d'une image fixe. Le signal numérique considéré peut également être représentatif d'une vidéo. Dans le même but que celui indiqué plus haut, la présente invention propose également un dispositif de codage d'informations représentatives de l'orientation géométrique d'un filtre utilisé pour filtrer un signal numérique représentant une image suivant une pluralité d'orientations géométriques, dans lequel l'orientation du filtre appliqué à un échantillon du signal est déterminée par la valeur d'une fonction de contexte pour ledit échantillon, ce dispositif étant remarquable en ce qu'il comporte : - un module pour diviser l'image en une pluralité de blocs ; 6 - un module pour déterminer, pour chaque bloc de la pluralité de blocs, une fonction de contexte optimale suivant un premier critère d'optimisation prédéterminé ; - un module pour déterminer, pour chaque bloc de la pluralité de blocs, une table d'association optimale entre une fonction de contexte et des orientations suivant un second critère d'optimisation prédéterminé ; - un module pour grouper les tables d'association correspondant à la fonction de contexte optimale déterminée précédemment, fournissant une pluralité de groupes de tables d'association ; et - un module pour coder chaque groupe de la pluralité de groupes indépendamment des autres groupes. Toujours dans le même but, la présente invention vise aussi un système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications, remarquable en ce qu'il comprend au moins un dispositif terminal équipé d'un dispositif de codage tel que succinctement décrit ci-dessus. Toujours dans le même but, la présente invention vise aussi un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, remarquable en ce qu'il permet la mise en oeuvre d'un procédé de codage tel que succinctement décrit ci-dessus. Toujours dans le même but, la présente invention vise aussi un produit programme d'ordinateur pouvant être chargé dans un appareil programmable, remarquable en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé de codage tel que succinctement décrit ci-dessus, lorsque ce programme est chargé et exécuté par l'appareil programmable. Les caractéristiques particulières et les avantages du dispositif de codage, du système de télécommunications, du moyen de stockage d'informations et du produit programme d'ordinateur étant similaires à ceux du procédé de codage, ils ne sont pas répétés ici. 7 D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit de modes particuliers de réalisation, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels : - la figure 1 montre de manière simplifiée un système de traitement d'images numériques susceptible de mettre en oeuvre un procédé de codage conforme à la présente invention ; - la figure 2 représente de manière schématique un mode particulier de réalisation d'un appareil susceptible de mettre en oeuvre la présente invention ; - la figure 3 est un organigramme illustrant les principales étapes d'un procédé de codage conforme à la présente invention, dans un mode particulier de réalisation ; - la figure 4 est un organigramme illustrant les principales étapes 15 d'un procédé de décodage d'un signal codé conformément à la présente invention, dans un mode particulier de réalisation ; - la figure 5 donne des exemples de fonctions de contexte optimales et de tables d'orientation optimales pour une sous-bande d'un signal numérique d'image traité conformément à la présente invention, dans un mode particulier 20 de réalisation ; - la figure 6 illustre un exemple de filtrage selon huit orientations géométriques prédéfinies, susceptible d'être utilisé par le procédé de codage conforme à la présente invention, dans un mode particulier de réalisation ; - la figure 7 illustre un exemple de filtrage selon l'une des 25 orientations prédéfinies représentées sur la figure 6 ; - la figure 8 illustre un exemple de filtrage selon une autre des orientations prédéfinies représentées sur la figure 6 ; et - la figure 9 illustre des échantillons appartenant au contexte d'un échantillon en cours de filtrage au cours du codage conformément à la présente 30 invention, dans un mode particulier de réalisation. Le schéma-bloc de la figure 1 illustre un système de traitement d'images numériques notamment par codage et décodage selon l'invention, ce système étant désigné par la référence générale notée 1. Le système comporte un dispositif 2 de codage, une unité 4 de transmission ou stockage et un dispositif 6 de décodage. L'invention trouve une application particulièrement intéressante dans un système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications. Le procédé de codage selon l'invention peut être mis en oeuvre dans des dispositifs terminaux du système, de façon à autoriser une transmission de fichiers à travers le réseau de télécommunications et réduire ainsi le trafic et les temps de transmission. Une autre application particulièrement intéressante consiste à mettre en oeuvre le procédé de codage selon l'invention dans un dispositif de stockage d'entités multimédia, de façon à pouvoir stocker une grande quantité de données dans une unité de stockage. Comme le montre la figure 1, le dispositif 2 de codage selon l'invention reçoit en entrée une image IO d'origine. L'image IO est traitée par le dispositif 2 de codage qui délivre en sortie un fichier codé contenant des données d'image comprimées, désigné par le signe de référence FC. Le traitement exécuté dans le dispositif 2 de codage consiste à effectuer des opérations de transformation, de quantification et de codage entropique, respectivement dans les unités 10, 12 et 14. L'opération de transformation effectuée dans l'unité 10 est celle qui met en oeuvre l'invention, tandis que les opérations de quantification et de codage entropique respectivement effectuées dans les unités 12 et 14 mettent en oeuvre des moyens classiques. Le fichier codé FC est fourni à l'unité 4 de transmission ou stockage, pour être, par exemple, transmis à travers un réseau ou stocké dans une unité 30 de stockage telle qu'un CD, un DVD ou un disque dur. Le dispositif 6 de décodage reçoit en entrée le fichier codé FC en provenance de l'unité 4 de transmission ou stockage et fournit en sortie une 9 image décodée (ou décomprimée) ID, laquelle est sensiblement identique à l'image IO d'origine. Lors du décodage, l'image codée est successivement soumise à des opérations de décodage entropique, de déquantification et de transformation inverse, respectivement dans les unités 18, 20 et 22. L'opération de transformation inverse effectuée dans l'unité 22 est celle qui met en oeuvre l'invention, tandis que les étapes de décodage entropique et de déquantification respectivement effectuées dans les unités 18 et 20 mettent en oeuvre des moyens classiques. Généralement, les données initiales correspondant à l'image IO d'origine sont organisées en un tableau bidimensionnel qui est accessible ligne à ligne. Le mode particulier de réalisation décrit ci-après présente le codage et le décodage d'une image numérique fixe, c'est-à-dire d'un signal bidimensionnel. Le principe est toutefois identique pour un signal présentant un nombre de dimensions supérieur, par exemple, pour une vidéo, qui se compose de trois dimensions. On décrit maintenant le codage, conformément au procédé de l'invention, d'une image numérique, ce codage comprenant notamment une phase de filtrage consistant à décomposer le signal numérique d'image en sous-bandes de fréquence. Dans le mode particulier de réalisation de l'invention décrit en détail ci-après, ce type de filtrage en sous-bandes est utilisé pour comprimer l'image numérique. Un tel filtrage peut être, par exemple, mis en oeuvre dans la norme JPEG2000, au cours d'une opération également appelée décomposition en ondelettes. Pour plus de détails sur la norme JPEG2000, on se reportera utilement à l'adresse Internet suivante : www.jpeg.org. Toutefois, la présente invention diffère du filtrage tel qu'utilisé dans JPEG2000 car les filtres utilisés peuvent être orientés, comme décrit dans le document de brevet FR-A-2 889 382. 10 L'organigramme de la figure 3 illustre les principales étapes d'un procédé de codage d'un signal numérique conforme à la présente invention, dans un mode particulier de réalisation où le signal considéré est un signal d'image. La présente invention utilise une technique de division en sous-bandes de fréquences similaire à la transformation en ondelettes. Cette technique consiste à diviser l'image d'origine en plusieurs résolutions, chaque résolution contenant trois sous-bandes, à savoir, les hautes fréquences verticales, les hautes fréquences horizontales, et les deux, excepté pour le niveau de résolution le plus bas, qui contient quatre sous-bandes, à savoir, les trois sous-bandes précitées ainsi qu'une sous-bande de basses fréquences. On décrit ci-après le déroulement du filtrage direct, du codage, du décodage et du filtrage inverse d'une seule sous-bande. Ainsi, la figure 3 se rapporte au codage d'une sous-bande et la figure 4 au décodage d'une sous- bande. Comme le montre la figure 3, l'algorithme débute à l'étape 300, au cours de laquelle on divise en blocs une sous-bande de fréquences à filtrer. En variante, la sous-bande à décomposer peut être une sous-bande obtenue lors d'un filtrage précédent. On notera que la première sous-bande à décomposer est en fait l'image d'origine. La taille des blocs est déterminée par les paramètres d'entrée. La sous-bande est divisée en N blocs carrés notés Bo, BI, ..., BN_1. Une taille de bloc particulièrement avantageuse a été déterminée expérimentalement comme étant égale à 16x16 pixels. Puis les étapes 302 à 310 décrites ci-après sont effectuées pour chacun des blocs. Différentes notions nécessaires à la compréhension de ces étapes sont introduites ci-dessous : le filtrage orienté, les fonctions de contexte et les tables d'orientation. Comme mentionné plus haut, le document FR-A-2 889 382 décrit une technique de filtrage dit orienté. En effet, le filtre passe-haut utilisé dans la 11 première phase du filtrage selon le schéma de lifting peut être orienté suivant plusieurs directions prédéfinies. On peut par exemple utiliser un filtre entier 13/7 avec huit orientations prédéfinies, comme le montre la figure 6. Cette figure illustre le filtrage à une dimension de la ligne i, en supposant que la ligne numéro 0 est la ligne du bas de l'image. Le coefficient en cours de filtrage passe-haut est le jème coefficient de la ligne, en supposant que la colonne 0 est la plus à gauche dans l'image. On note x(i,j) ce coefficient. Lorsqu'une transformation en ondelettes classique est appliquée, le filtre est appliqué au vecteur de coefficients [x(i,j-3),x(i,j-1),x(i,j),x(i,j+1),x(i,j+3)]. Cela est illustré par le segment numéroté O. Les segments 1 à 7 représentent les autres orientations possibles. Par exemple, le segment 2 représente le filtrage du vecteur [x(i-3,j-3),x(i-1,j-1),x(i,j),x(i+1,j+1),x(i+3,j+3)] illustré par le chiffre 2 en gras sur la figure 7. Il peut arriver qu'un segment n'intercepte pas directement un coefficient, comme c'est le cas pour le segment 1 illustré par le chiffre 1 en gras sur la figure 8. Dans ce cas, on utilise une interpolation entre les coefficients "accessibles", c'est-à-dire, dans le cas présent, qui appartiennent à une colonne impaire de coefficients. Ainsi, par exemple, le segment 1 représente le filtrage du vecteur : [(x(i-2,j-3)+x(i-1,j-3))/2,(x(i-1,j-1)+x(i,j-1))/2,x(i,j),(x(i,j+1)+x(i+1, j+1))/2,(x(i+1 ,j+3)+x(i+2,j+3))/2]. On présente maintenant la notion de fonction de contexte, en liaison avec la figure 9. Conformément à la présente invention, dans le mode préféré de réalisation, l'orientation du filtre appliqué à un échantillon est déterminée par la valeur d'une fonction de contexte à la position de cet échantillon. La fonction de contexte examine les valeurs de la sous-bande basse fréquence de résolution immédiatement inférieure à celle de la sous-bande en cours de filtrage, aux positions entourant l'échantillon de coordonnées (i/2,j/2), sachant qu'on note (i,j) les coordonnées de l'échantillon à filtrer. D'une façon générale, les 12 coordonnées (i/2,j/2) sont prises égales à la partie entière inférieure à la valeur réelle de (i/2,j/2). La figure 9 montre la position des échantillons dits de contexte autour d'un échantillon X' situé dans la sous-bande basse fréquence de résolution immédiatement inférieure à celle de la sous-bande en cours de filtrage et correspondant à l'échantillon à filtrer. Ces échantillons sont nommés A, B, C, D. Les valeurs de ces échantillons appartiennent à la sous-bande de résolution immédiatement inférieure. Il est à noter qu'il ne s'agit pas des valeurs d'origine des échantillons, mais de leurs valeurs décodées et ce, dans le but d'éviter la propagation des erreurs. Les valeurs de A, B, C, D sont ainsi les mêmes au codage et au décodage. L'échantillon en cours de filtrage est appelé X. Dans un exemple préféré de mise en oeuvre de la présente invention, on utilise six fonctions de contexte possibles. Ces fonctions de contexte sont les suivantes : fi(X)=0siA On explique maintenant la notion de table d'orientation. Une table d'orientation est une table de consultation (en anglais "look-up table" ou LUT) qui associe une valeur d'orientation de filtre à une valeur de contexte. Sachant que les fonctions de contexte prennent seulement trois valeurs (0, 1 et 2), une table d'orientation est simplement une liste de trois orientations. 13 La table d'orientation est utilisée pour déterminer l'orientation qui doit être appliquée à un échantillon. Par exemple, la notation [4,0,1] pour une table d'orientation signifie qu'un échantillon X doit être filtré avec l'orientation 4 si la fonction de contexte de cet échantillon prend la valeur 0 à la position de X, avec l'orientation 0 si la fonction de contexte prend la valeur 1 en X et avec l'orientation 1 si la fonction de contexte prend la valeur 2 en X. En référence à la figure 3, pour chaque bloc de la sous-bande en cours de traitement, une étape 302 consiste à calculer un coût de codage et une table d'orientation pour chaque fonction de contexte. Il est nécessaire pour cela de procéder à la détermination de la table d'orientation optimale pour une fonction de contexte donnée f;. A cette fin, on calcule tout d'abord la valeur de contexte pour chaque échantillon dans le bloc courant, en appliquant la fonction de contexte f; à chaque pixel du bloc et en mémorisant le résultat. Ensuite, on sépare les échantillons correspondant à chacune des valeurs de contexte 0, 1 et 2. Cela produit trois groupes d'échantillons, appelés sous-signaux, correspondant respectivement aux trois valeurs de contexte. Puis, pour chacun de ces trois groupes d'échantillons, on détermine l'orientation de filtrage optimale, en simulant le filtrage de tous les échantillons du groupe suivant toutes les orientations possibles, huit dans l'exemple non limitatif illustré sur les dessins, et en sélectionnant l'orientation qui minimise la somme de l'amplitude de la sortie des filtres sur le groupe considéré. L'orientation ainsi sélectionnée est considérée comme l'orientation optimale. C'est l'orientation qui minimise la quantité d'énergie produite dans le bloc, pour les échantillons du groupe considéré. En variante, pour déterminer l'orientation de filtrage optimale, on pourrait aussi minimiser la somme des carrés des amplitudes de sortie des filtres, ou encore minimiser la valeur absolue des amplitudes de sortie de ces filtres. Ensuite, on construit la table d'orientation, qui consiste simplement en la liste des orientations optimales calculées au cours de l'étape précédente, 14 ces orientations étant ordonnées selon les valeurs croissantes des valeurs de contexte. La somme de l'amplitude de la sortie des filtres sur un groupe d'échantillons tel que défini ci-dessus représente le coût de codage de ce groupe. Par conséquent, la somme des coûts de codage des trois groupes (qui correspondent aux valeurs de contexte 0, 1 et 2) du bloc représente le coût de codage de la fonction de contexte f; sur le bloc courant. Comme expliqué ci-dessus, on calcule donc le coût de codage de chaque fonction de contexte f2, ..., f6 et on mémorise la table d'orientation optimale et le coût de codage associés à chaque fonction de contexte. L'étape suivante 304 consiste à déterminer la meilleure fonction de contexte et la table d'orientation optimale qui lui correspond. La meilleure fonction de contexte est définie comme celle qui présente le coût de codage le plus faible. Cette fonction de contexte et sa table d'orientation optimale correspondante sont associées au bloc courant de la sous-bande en cours de traitement. La figure 5 illustre une sous-bande de 80x80 échantillons, divisée en 25 blocs de 16x16 pixels. Pour chaque bloc, une fonction de contexte optimale f; et une table d'orientation optimale [X,Y,Z] sont calculées. Les fonctions de contexte sont ensuite rassemblées en un signal unique qui est comprimé par des moyens classiques. Les tables d'orientation sont groupées en sous-signaux correspondant respectivement aux différentes fonctions de contexte, puis chaque sous-signal est comprimé de façon indépendante. Ensuite, à l'étape 306, l'indice de la meilleure fonction de contexte est fourni en sortie sous la forme d'un signal qui contient toutes les meilleures fonctions de contexte, à savoir, une par bloc. L'étape suivante 312 consiste à comprimer le signal qui contient toutes les meilleures fonctions de contexte. Pour cela, on peut utiliser une simple compression sans pertes telle qu'un codage de Huffman ou un codage arithmétique. A ce stade, les corrélations intrinsèques de ce signal n'ont pas encore été explorées. 15 A l'étape 308, qui fait suite à l'étape 304, la table d'orientation optimale pour chaque bloc est fournie en sortie sous la forme d'un signal contenant toutes les tables d'orientation. L'étape suivante 314 consiste à séparer les tables d'orientation en sous-signaux, chaque sous-signal contenant uniquement les tables d'orientation correspondant à la même fonction de contexte. La figure 5 illustre un exemple de la construction de ces sous-signaux. Ainsi, en séparant les tables d'orientation correspondant aux différentes fonctions de contexte optimales, on est en mesure d'isoler des sources qui sont différentes d'un point de vue statistique. Puis une étape 318 consiste à comprimer de façon indépendante chaque sous-signal produit à l'étape 314, au moyen d'une compression sans pertes classique du type d'un codage arithmétique, par exemple. Comme chaque sous-signal correspond à une source statistique différente, on est en mesure d'adapter le codeur entropique à chaque statistique et ainsi, de mieux comprimer chaque sous-signal, ce qui aboutit à une amélioration globale des performances de compression. Les étapes 314 et 318 décrites ci-dessus constituent un mode de réalisation optimisé. En variante, les tables d'orientation peuvent être simplement codées sans être séparées en sous-signaux, mais en étant groupées en un signal unique, construit par exemple en rassemblant les tables d'orientation dans l'ordre classique des blocs dans l'image. A la suite de l'étape 304 est également effectuée une étape 310 consistant à filtrer chaque échantillon du bloc courant. Pour cela, on identifie tout d'abord la fonction de contexte et la table d'orientation du bloc courant. Puis, pour chaque échantillon de ce bloc, la valeur de la fonction de contexte est calculée (dans l'exemple donné ici, cette valeur peut être 0, 1 ou 2) et la table d'orientation est utilisée pour déterminer l'orientation géométrique (dans l'exemple donné ici, une valeur comprise entre 0 et 7) associée à la valeur de contexte qui vient d'être obtenue. Cette orientation est utilisée pour filtrer l'échantillon. 16 A la suite de l'étape 310, une étape 316 consiste à comprimer tous les échantillons filtrés de la sous-bande en cours de traitement, par des moyens habituels, bien connus de l'homme du métier, tels que la quantification scalaire et le codage arithmétique. On décrit maintenant les principales étapes du décodage du train binaire constituant une sous-bande, en liaison avec l'organigramme de la figure 4. Une étape 402 consiste à décomprimer le signal contenant les fonctions de contexte, en utilisant des moyens de décodage symétriques aux moyens utilisés lors du codage. Le signal des fonctions de contexte devient ainsi disponible et il devient possible de déterminer la fonction de contexte associée à chaque bloc. Par ailleurs, lors d'une étape 404, les sous-signaux contenant les tables d'orientation associées à chaque fonction de contexte sont décodés de 15 façon indépendante. D'autre part, lors d'une étape 406, tous les échantillons de la sous-bande sont décodés, par exemple par un décodage arithmétique et une déquantification scalaire, si on a utilisé un codage arithmétique et une quantification scalaire au codage. 20 Il convient ensuite, lors d'une étape 408, de procéder au filtrage inverse de chaque échantillon de la sous-bande avec la même orientation que celle utilisée pour le filtrage direct. A cette fin, on traite la sous-bande bloc par bloc et les traitements suivants sont appliqués à chaque bloc. Tout d'abord, on lit dans le signal des fonctions de contexte décodé 25 précédemment la fonction de contexte associée au bloc. Une fois qu'elle est identifiée, il devient possible de lire le signal d'orientation dans le sous-signal correspondant à la fonction de contexte qui vient d'être lue. Ensuite, pour chaque échantillon, on identifie l'orientation du filtre en utilisant le même processus que celui utilisé au codage : on calcule la valeur de 30 la fonction de contexte (qui, dans l'exemple donné ici, peut être 0, 1 ou 2) et on utilise la table d'orientation pour déterminer l'orientation (une valeur entre 0 et 7, dans l'exemple donné ici) associée à la valeur de contexte qui vient d'être 17 obtenue. Cette orientation est utilisée pour réaliser le filtrage orienté inverse de l'échantillon. Une fois ces traitements appliqués à tous les échantillons de la sous-bande, on obtient une sous-bande décodée. La figure 2 montre un mode particulier de réalisation d'un dispositif de traitement d'information apte à fonctionner comme dispositif de codage d'un signal numérique conforme à la présente invention. Le dispositif illustré sur la figure 2 peut comporter tout ou partie des moyens de mise en oeuvre d'un procédé de codage conforme à la présente invention. Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur ou une station de travail 600 connecté à différents périphériques, par exemple, une caméra numérique 601 (ou un scanner, ou tout autre moyen d'acquisition ou de stockage d'images) reliée à une carte graphique (non représentée) et fournissant ainsi des informations à traiter selon l'invention. Le micro-ordinateur 600 comporte de préférence une interface de communication 602 reliée à un réseau 603 apte à transmettre des informations numériques. Le micro-ordinateur 600 comporte également un moyen de stockage permanent 604, tel qu'un disque dur, ainsi qu'un lecteur de moyens de stockage temporaire tel qu'un lecteur de disquettes 605 pour coopérer avec une disquette 606. La disquette 606 et le disque dur 604 peuvent contenir des données d'implantation logicielle de l'invention ainsi que le code du ou des programme(s) d'ordinateur dont l'exécution par le micro-ordinateur 600 met en oeuvre la présente invention, ce code étant par exemple mémorisé sur le disque dur 604 une fois qu'il a été lu par le micro-ordinateur 600. En variante, le ou les programme(s) permettant au dispositif 600 de mettre en oeuvre l'invention sont stockés dans une mémoire morte (par exemple 30 du type ROM) 607. 18 Selon une autre variante, ce ou ces programme(s) sont reçus totalement ou partiellement à travers le réseau de communication 603 pour être stockés comme indiqué. Le micro-ordinateur 600 comprend également un écran 609 pour visualiser les informations à traiter et/ou servir d'interface avec l'utilisateur, afin que l'utilisateur puisse par exemple paramétrer certains modes de traitement à l'aide du clavier 610 ou de tout autre moyen approprié de pointage et/ou de saisie tel qu'une souris, un crayon optique, etc. Une unité de calcul ou unité centrale de traitement (CPU) 611 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte ROM 607 ou dans les autres éléments de stockage décrits. Lors de la mise sous tension du dispositif 600, les programmes et méthodes de traitement stockés dans une des mémoires non-volatiles, par exemple la ROM 607, sont transférés dans une mémoire vive (par exemple du type RAM) 612, qui contient alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. En variante, les méthodes de traitement du signal numérique peuvent être stockées dans différents emplacements de stockage. De façon générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, peut mémoriser un ou plusieurs programme(s) dont l'exécution met en oeuvre le procédé de codage décrit précédemment. On peut faire évoluer le mode particulier de réalisation choisi pour l'invention, par exemple en ajoutant des méthodes de traitement actualisées ou améliorées ; dans un tel cas, ces nouvelles méthodes peuvent être transmises au dispositif 600 par le réseau de communication 603, ou chargées dans le dispositif 600 par l'intermédiaire d'une ou de plusieurs disquettes 606. Bien entendu, les disquettes 606 peuvent être remplacées par tout support d'information jugé approprié (CD-ROM, carte mémoire, etc.). Un bus de communication 613 permet la communication entre les différents éléments du micro-ordinateur 600 et les éléments reliés à celui-ci. On 19 notera que la représentation du bus 613 n'est pas limitative. En effet, l'unité centrale CPU 611 est, par exemple, susceptible de communiquer des instructions à tout élément du micro-ordinateur 600, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 600. REVENDICATIONS 1. Procédé de codage d'informations représentatives de l'orientation géométrique d'un filtre utilisé pour filtrer un signal numérique représentant une image suivant une pluralité d'orientations géométriques, dans lequel l'orientation du filtre appliqué à un échantillon du signal est déterminée par la valeur d'une fonction de contexte pour ledit échantillon, ledit procédé étant caractérisé en ce qu'il comporte des étapes consistant à : - diviser (300) l'image en une pluralité de blocs ; - pour chaque bloc de ladite pluralité de blocs, déterminer (304) une fonction de contexte optimale suivant un premier critère d'optimisation prédéterminé ; - pour chaque bloc de ladite pluralité de blocs, déterminer une table d'association optimale entre une fonction de contexte et des orientations suivant un second critère d'optimisation prédéterminé ; -grouper les tables d'association correspondant à la fonction de contexte optimale déterminée précédemment, de façon à obtenir une pluralité de groupes de tables d'association ; et - coder chaque groupe de ladite pluralité de groupes 20 indépendamment des autres groupes. 2. Procédé selon la revendication 1, caractérisé en ce que la fonction de contexte tient compte des valeurs prises par un nombre prédéterminé d'échantillons (A, B, C, D) avoisinant un échantillon ayant une position correspondant à la position de l'échantillon à filtrer (X) dans une sous-bande de 25 fréquences de résolution immédiatement inférieure à la résolution de la sous-bande à laquelle appartient l'échantillon à filtrer (X). 3. Procédé selon la revendication 2, caractérisé en ce que la fonction de contexte peut prendre trois valeurs 0, 1 et 2. 4. Procédé selon la revendication 3, caractérisé en ce qu'il met en 30 oeuvre les fonctions de contexte suivantes : fi(X)=0siA 5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que ledit premier critère d'optimisation consiste en la minimisation du coût de codage de la fonction de contexte. 6. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que ledit second critère d'optimisation consiste en la minimisation de la somme des amplitudes des échantillons de sortie des filtres suivant les diverses orientations appliquées au bloc. 7. Dispositif de codage d'informations représentatives de l'orientation géométrique d'un filtre utilisé pour filtrer un signal numérique représentant une image suivant une pluralité d'orientations géométriques, dans lequel l'orientation du filtre appliqué à un échantillon du signal est déterminée par la valeur d'une fonction de contexte pour ledit échantillon, ledit dispositif étant caractérisé en ce qu'il comporte : -des moyens pour diviser l'image en une pluralité de blocs ; - des moyens pour déterminer, pour chaque bloc de ladite pluralité de blocs, une fonction de contexte optimale suivant un premier critère d'optimisation prédéterminé ; - des moyens pour déterminer, pour chaque bloc de ladite pluralité de blocs, une table d'association optimale entre une fonction de contexte et des orientations suivant un second critère d'optimisation prédéterminé ;- des moyens pour grouper les tables d'association correspondant à la fonction de contexte optimale déterminée précédemment, fournissant une pluralité de groupes de tables d'association ; et - des moyens pour coder chaque groupe de ladite pluralité de 5 groupes indépendamment des autres groupes. 8. Dispositif selon la revendication 7, caractérisé en ce que la fonction de contexte tient compte des valeurs prises par un nombre prédéterminé d'échantillons (A, B, C, D) avoisinant un échantillon ayant une position correspondant à la position de l'échantillon à filtrer (X) dans une sous-10 bande de fréquences de résolution immédiatement inférieure à la résolution de la sous-bande à laquelle appartient l'échantillon à filtrer (X). 9. Dispositif selon la revendication 8, caractérisé en ce que la fonction de contexte peut prendre trois valeurs 0, 1 et 2. 10. Dispositif selon la revendication 9, caractérisé en ce qu'il met en 15 oeuvre les fonctions de contexte suivantes : fi(X)=OsiA 11. Dispositif selon l'une quelconque des revendications 7 à 10, caractérisé en ce que ledit premier critère d'optimisation consiste en la minimisation du coût de codage de la fonction de contexte. 12. Dispositif selon l'une quelconque des revendications 7 à 11, caractérisé en ce que ledit second critère d'optimisation consiste en la minimisation de la somme des amplitudes des échantillons de sortie des filtres suivant les diverses orientations appliquées au bloc. 13. Système de télécommunications comprenant une pluralité de dispositifs terminaux reliés à travers un réseau de télécommunications, caractérisé en ce qu'il comprend au moins un dispositif terminal équipé d'un dispositif de codage selon l'une quelconque des revendications 7 à 12. 14. Moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé de codage selon l'une quelconque des revendications 1 à 6. 15. Produit programme d'ordinateur pouvant être chargé dans un appareil programmable, caractérisé en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé de codage selon l'une quelconque des revendications 1 à 6, lorsque ce programme est chargé et exécuté par l'appareil programmable.