Brevet FR2931963A1 — publié le 20091204

PROCÉDÉ DE TRAITEMENT DE DONNES NUMERIQUES La présente invention concerne le domaine du traitement de données numériques en vue d'applications telles que la compression de données numériques, la recherche de données numériques, la comparaison de données numériques ou la décompression de données numériques. L'invention concerne le traitement de données audiovisuelles, et plus généralement tout type de données numériques. Le but visé par l'invention est de réduire les temps de traitement et les besoins de ressources informatiques tant en ce qui concerne la puissance de calcul que les besoins de mémoire. Les applications concernent notamment mais non exclusivement le traitement d'images nécessitant un très grand nombre de données pour la décrire. Pour réduire la durée de transmission et la taille requise pour le stockage, on réalise une compression de l'information en procédant à une extraction de l'information visuelle qui seule sera codée. Cette information codée doit être localisée de manière optimale en fréquence et dans l'espace pour permettre une restitution optimale en évitant toute redondance néfaste aux performances du codage. Pour cela, il est connu de mettre en œuvre la technique de transformée par ondelette, dont les coordonnées constituent un réseau vectoriel qui est ensuite soumis à une étape de quantification vectorielle. Le principe de la quantification vectorielle (QV) est de coder une séquence d'échantillons formant un vecteur au lieu de coder chacun des échantillons individuellement. Le codage s'effectue en approximant la séquence à coder par un vecteur appartenant à un catalogue de formes usuellement appelé �codebook�. Chacun des vecteurs du catalogue de formes est indexé. Lors du codage, c'est l'index du vecteur le plus proche de la séquence d'échantillons à coder, qui servira à la représenter. Les solutions connues nécessitent la détermination de chacun des vecteurs, leur enregistrement dans une mémoire et l'exécution ensuite de traitements sur l'ensemble des vecteurs pour les dénombrer. La base de vecteurs peut nécessiter plusieurs gigaoctets, et les temps de calcul pour une base aussi importante sont importants. Le but de l'invention est de proposer un procédé de dénombrement et d'indexage évitant ces inconvénients. État de la technique On connaît par l'article [1] un procédé de quantification. Un réseau (lattice) est un ensemble de vecteurs d'un espace de dimension n formant un groupe additif, au sens mathématique du terme. Le livre [2] décrit en détail de tels réseaux. On connaît dans l'état de la technique la demande de brevet international WO9933185 concernant un procédé de codage consistant à déterminer un vecteur, dit vecteur (leader en anglais), qui comporte les mêmes composantes que le vecteur quantifié mais dans un ordre prédéterminé, puis à déterminer le niveau d'ordre ou rang dudit vecteur quantifié dans ledit ensemble formé des vecteurs qui ont les mêmes composantes que le vecteur (leader en anglais) et qui sont, dans ledit ensemble, ordonnés de manière prédéterminée. Le procédé consiste ensuite à former un code à partir, d'une part, d'un indice représentatif dudit vecteur (leader en anglais) ainsi déterminé et, d'autre part, dudit rang. La difficulté principale rencontrée pour la conception d'un quantificateur vectoriel algébrique pour la compression est liée au problème de dénombrement et d'indexage des vecteurs dans le réseau régulier de points (qui constitue le dictionnaire de quantification). Nous présentons ici les solutions que nous avons proposées pour résoudre ces problèmes dans le cas d'une source de distribution Gaussienne généralisée (comme par exemple les coefficients d'ondelettes). La quantification vectorielle algébrique La quantification a été étudiée depuis quelques dizaines d'années maintenant et les travaux effectués ont développé de nombreux résultats aujourd'hui classiques sur la théorie débit-distorsion. En particulier, il a été montré que la Quantification Vectorielle (QV) possède de nombreux avantages par rapport à la Quantification Scalaire (QS) lorsqu'un codage à longueur fixe est imposé. De plus, les travaux de Shannon ont montré que les performances de la QV sont proches des performances théoriques optimales si la dimension n des vecteurs de quantification est suffisamment grande. Cependant, il est important de noter que la QV peut se rapprocher de ces performances optimales au prix d'une complexité calculatoire élevée ; complexité qui augmente de façon exponentielle avec la dimension des vecteurs. Généralement, la QV est effectuée en utilisant un dictionnaire non structuré construit à partir de données statistiques représentatives de la source (séquence d'apprentissage). Dans ce cas, la complexité ainsi que les besoins en stockage dus à la taille du dictionnaire peuvent devenir prohibitifs pour des applications de compression. De plus, il existe un problème de robustesse du dictionnaire qui, optimisé pour une séquence d'apprentissage donnée, donne des performances mauvaises pour une image en dehors de la séquence d'apprentissage. Une solution pour surmonter ces problèmes est d'utiliser un QV structuré n-dimensionnel tel que la Quantification Vectorielle Algébrique (QVA) ou encore quantification vectorielle sur réseaux réguliers de points. Comme les vecteurs du dictionnaire sont contraints à appartenir à un réseau régulier structuré, les performances de la QVA sont en général inférieures à celle de la QV non-structurée. Mais, dans la plupart des applications, ce léger désavantage est compensé par le fait que pour la QVA aucun dictionnaire n'a besoin d'être généré ou stocké, et que la complexité de codage est réduite. La quantification par réseaux réguliers de points peut être vue comme une généralisation de la quantification scalaire uniforme., Comme .. dans le ...cas de la QV non structurée, le terme QVA sera utilisé dans le reste du document soit pour désigner la quantification vectorielle, soit pour désigner un quantificateur vectoriel. La QVA prend en compte les dépendances spatiales entre les coefficients des vecteurs ainsi que les gains de partitionnement et de forme. Quelle que soit la distribution de la source, la QVA est toujours plus efficace que la QS. Un réseau régulier de points dans Rn est composé par toutes les combinaisons possibles d'un ensemble de vecteurs linéairement indépendants ai qui constitue la base du réseau {y l y = ulal + u2a2 +... + unau} où les coefficients ui sont des entiers. La partition de l'espace est alors régulière et ne dépend seulement que des vecteurs de base choisis. Chaque base définit un réseau régulier de points différent. La QVA offre la possibilité de réduire considérablement les coûts calcul et stockage par rapport à un QV conçu au moyen d'algorithmes basés sur l'algorithme de Lloyd généralisé. En effet, utiliser les vecteurs d'un réseau régulier comme valeurs de quantification élimine l'opération de construction d'un dictionnaire le dictionnaire est construit implicitement de par la structure du réseau choisi. L'article [1] décrit des algorithmes rapides de quantification qui utilisent simplement des opérations d'arrondis et qui ne dépendent que de la dimension n des vecteurs. En 1979, Gersho a émis la conjecture que dans le cas asymptotique (c'est-à-dire pour des forts débits), les performances débit-distorsion d'un QVA sont approximativement optimales. Toutefois, bien que la QVA ne soit pas mathématiquement optimale pour des faibles débits, la réduction de complexité apportée par de tels quantificateurs permet d'utiliser de grandes dimensions de vecteurs, ce qui entraîne de meilleures performances expérimentales à débit donné. De bonnes performances débit-distorsion peuvent être obtenues en combinant la QVA avec un codeur entropique, ce qui a motivé quelques travaux sur la QVA dans le domaine des ondelettes. Beaucoup de travaux théoriques sur la QV ont été menés pour des sources Gaussienne et Laplacienne. De plus, dans le cas de sources de type Gaussienne généralisée avec un paramètre de décroissance inférieur à un, il a été montré par que le réseau cubique Zn était plus performant en termes de débit-distorsion que le réseau E8 et le réseau de Leech. Ce résultat a motivé nos travaux pour combiner la QVA avec la transformée en ondelettes. Les problématiques traitées par l'invention Si la quantification par QVA est peu complexe, du fait de la structure géométrique régulière du dictionnaire, sa mise en oeuvre n'est cependant pas immédiate. Dans le cas de modèles non-asymptotiques, le bruit de surcharge est négligé puisque nous supposons l'utilisation d'un codage à longueur variable et d'un dictionnaire infini. Elle soulève en effet un certain nombre de questions concrètes, notamment en termes de calcul et de stockage. Deux problèmes fondamentaux peuvent être mis en avant dans la conception d'un QVA : a) L'indexage : L'indexage est une opération indépendante de la quantification, elle consiste à assigner à chaque vecteur quantifié, un indice (ou index) qui, une fois codé est transmis sur un canal jusqu'au décodeur. Cette opération est fondamentale dans la chaîne de compression. Elle conditionne en effet le débit binaire et permet le décodage sans ambiguïté des vecteurs. Les méthodes connues sont généralement très peu coûteuses en mémoire, mais présentent une complexité calculatoire non négligeable (algorithmes récursifs), ou fonctionnent seulement dans des cas particuliers (types de réseau ou de troncature particuliers). L'invention concerne une approche plus générale qui permet l'indexage sur des distributions de type Gaussienne généralisée., réalisant un bon compromis coût mémoire/coût calcul. :.. b) Le dénombrement. Les méthodes d'indexage sont généralement basées sur la connaissance de la population du réseau. Ainsi, nous devons être capable de dénombrer les vecteurs du réseau sur des surfaces (ou à l'intérieur de volumes) n-dimensionnels qui dépendent de la distribution de la source. Une approche classique de dénombrement est basée sur l'utilisation de séries génératrices. Dans ce formalisme, les fonctions Nu ont été introduites. Elles permettent le dénombrement sur des pyramides, c'est-à-dire dans le cas d'une distribution Laplacienne. Nous avons proposé une approche plus générale qui permet le dénombrement sur des distributions de type Gaussienne généralisée, réalisant un bon compromis coût mémoire / coût calcul. Le deuxième brevet propose une solution à cette problématique. Objet de l'invention Le but de l'invention est de proposer un procédé de traitement comprenant une étape de quantification vectorielle exécutable avec des ressources informatiques réduites tant en ce qui concerne la mémoire de stockage que le temps de traitement. La présente invention concerne, à cet effet, selon son acception la plus générale, un procédé de traitement de données numériques comportant une étape de quantification consistant à calculer dans un espace de dimension d au moins un indice vecteur (leader en anglais) I1 pour au moins une partie des vecteurs 1, lesdits vecteurs 1 constituant des des données d'entrées, le procédé étant ledit indice vecteur (leader en au nombre de vecteurs précédents descripteurs caractérisé anglais) Il en ce que correspond ledit vecteur (leader en anglais) 1 dans l'ordre lexicographique inverse sans étape de détermination de la 15 totalité des vecteurs (leader en anglais)s en anglais). De préférence, le procédé de traitement ne comporte aucune étape de détermination de vecteur (leader en anglais) autre que le vecteur (leader en anglais) 1 en cours de calcul. 20 Avantageusement, l'étape de calcul de la norme lp dudit vecteur (leader en anglais) 1 comporte une étape de calcul de la norme à rôt', dudit leader 1 (x1, x2, ..., xd) ) où xl à xd sont ordonnés de manière croissante, r.,,% étant égal à la somme des résultats de ladite fonction T(xi) pour i variant 25 entre 1 et d, la fonction T(xi) retournant le résultat de la division de la coordonnée xi élevé à la puissance p par un facteur de précision delta, le résultat de ladite division étant arrondi à l'entier le plus proche. Selon une variante particulière, ladite étape de 30 calcul de l'indice vecteur (leader en anglais) Il comporte une étape de calcul de la norme rpdelta,d dudit vecteur (leader en anglais) 1(x11 x2, ...xd) où x1 à xd sont ordonnés de manière croissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre d et 1, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+l et MIN (xi+l, F (in;)) , l'indice Il étant égal à la somme des résultats des étapes de dénombrement, F(A) étant une fonction qui retourne une valeur entière w dont la valeur T(w) est plus petite ou égale à l'argument A de ladite fonction F. Selon une autre variante, ladite étape de calcul de 10 l'indice vecteur (leader en anglais) Il comporte une étape de calcul de la norme rd dudit vecteur (leader en anglais) 1(x1, x2, ...xd) où xi à xd sont ordonnés de manière décroissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre 1 et d, lesdites étapes de 15 dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+1 et MIN(xi_l, F(rp ) ), l'indice Il étant égal à la somme des résultats des étapes de dénombrement, F(A) étant une fonction qui retourne une valeur entière w dont la valeur T(w) est plus petite ou 20 égale à l'argument A de ladite fonction F. Selon une autre variante, ladite étape de calcul de l'indice vecteur (leader en anglais) I1 comporte une étape de calcul de la norme r dudit vecteur (leader en anglais) 1(x1, x2, ...xd) où x, à xd sont ordonnés de manière croissante, 25 et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre d et 1, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+l et MIN (xi+l, r-xi+l) , l'indice Il étant égal à la somme des résultats des étapes de 30 dénombrement. Selon une autre variante, ladite étape de calcul de l'indice vecteur (leader en anglais) Il comporte une étape de calcul de la norme r dudit vecteur (leader en anglais) 1(x1, X2, ...xd) où xl à xd sont ordonnés de manière décroissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre 1 et d, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+1 et MIN (xi_1, r-xi_1) , l'indice Il étant égal à la somme des résultats des étapes de dénombrement. L'invention concerne également l'application desdits procédés pour la compression de données vectorielles consistant à enregistrer le résultat du codage binaire dudit index Il, ainsi qu'au moins un indice de signe Is, un indice de norme In et un indice de permutation Ip. Lesdites données vectorielles sont : - des images numériques, - des séquences vidéo numériques, - des données audio numériques, - des objets tridimensionnels numériques, - des objets tridimensionnels animés numériques, - des informations enregistrées dans une base de données, - des coefficients issus de la transformation desdites données vectorielles (exemple : coefficients DCT, coefficients d'ondelettes, ...). L'invention concerne également l'application desdits procédés pour la recherche dans une base de données vectorielle consistant à calculer pour une information de référence un index Il,ref ainsi qu'au moins un indice de signe 1,,ref' un indice de norme In,ref et un indice de permutation Ip,ref et à rechercher les données associées aux mêmes indices. Lesdites données vectorielles sont : - des images numériques, - des séquences vidéo numériques, - des données audio numériques, - des objets tridimensionnels numériques, - des objets tridimensionnels animés numériques, - des objets d'une base de données textuelles. - des coefficients issus de la transformation desdites données vectorielles (exemple : coefficients DCT, coefficients d'ondelettes, ...) . L'invention concerne également un procédé de reconstruction d'une donnée numérique à partir de l'indice vecteur (leader en anglais) I1 calculé selon un procédé susvisé caractérisé en ce que l'on calcule les coordonnées (xi, x2, ..., xd) d'un vecteur (leader en anglais) 1 caractérisé en ce que l'on applique à un indice I1 un traitement consistant à rechercher le vecteur (leader en anglais) 1 dont l'indice I1 correspond au même nombre de vecteurs précédents ledit vecteur (leader en anglais) 1 dans l'ordre lexicographique inverse sans étape de détermination de la totalité des vecteurs (leader en anglais)s en anglais). De préférence, on procède à un traitement récursif sur la variable i variant entre d et 1, ledit traitement étant appliqué sur la coordonnée xi avec xi variant de MIN(xi+1,F(rp;) ) à 0 et consistant à sommer les résultats des étapes de dénombrement par application de ladite fonction F(A), jusqu'à ce que ladite somme soit supérieure audit indice I1, la coordonnée recherchée xi étant celle conduisant au dépassement dudit indice I1 le procédé consistant ensuite à poursuivre, pour la coordonnée xi_1, la sommation à partir de la valeur Ir où I1, est la valeur précédent la valeur I1 avant ledit dépassement. Avantageusement, on procède à un traitement récursif sur la variable i variant entre 1 et d, ledit traitement étant appliqué sur la coordonnée xi avec xi compris entre MIN (xi_1, F (i )) et 0 et consistant à sommer les résultats des étapes de dénombrement par application de ladite fonction F(A), jusqu'à ce que ladite somme soit supérieure audit indice I1, la coordonnée recherchée xi étant celle conduisant au dépassement dudit indice I1, le procédé consistant ensuite à poursuivre, pour la p ordonnée xi+1, la sommation à partir de la valeur I1, où I1, est la valeur précédent la valeur I1 avant ledit dépassement. Par convention xd+1 est l'entier le plus fort permis par la précision du processeur, ou au moins plus élevé que F(rf1). Pour la reconstruction, I1.=0 pour le traitement de la coordonnée Xd pour le cas croissant, et la coordonnée x1 20 pour le cas décroissant. Description détaillée de l'invention L'invention sera mieux comprise à la lecture d'un exemple non limitatif de réalisation, se référant aux dessins annexés où : 25 - la figure 1 représente le schéma de principe d'un système de traitement de donnée conforme à l'invention, - la figure 2 représente un exemple d'enveloppe de re = 15, p = 0,4 et ô = 0,3 pour un réseau Z2, - la figure 3 représente la comparaison des besoins de mémoire entre la méthode usuelle et la méthode proposée pour p = 1, S = 1 et B = 4, - l'annexe 1 représente un exemple d'algorithmes de 5 codage et décodage pour la mise en oeuvre de l'invention. Un système de traitement de données comporte habituellement trois modules principaux. Un premier module (1) reçoit les données d'entrées, par exemple un signal numérique correspondant à une image, et calcule à partir de 10 ce signal échantillonné une transformée en ondelette selon des techniques connues. Le module de quantification (2) réalise un codage des coefficients d'ondelette, par un procédé de quantification et indexation vectoriel des coefficients d'ondelette mettant 15 en oeuvre le procédé selon l'invention. Le troisième module réalise le codage pour réduire la taille des informations enregistrées ou transmises, par des procédés connus de compression sans pertes. L'étape de quantification et indexation réalisée par 20 le second module (2) est plus précisément l'objet de l'invention. Cette étape est très gourmande en ressources dans les solutions de l'art antérieur qui impliquent de déterminer l'ensemble des vecteurs vecteur (leader en anglais) et donc de les enregistrer dans une mémoire au 25 moins temporairement. Un procédé de quantification vectorielle sur réseau est connu et est généralement utilisé dans des systèmes de compression de signaux audio, vidéo et multimédia au sens large. La quantification vectorielle sur réseau est 30 l'extension multidimensionnelle de la quantification scalaire uniforme. Cette dernière consiste à quantifier séparément un signal, par exemple représentatif de chaque pixel d'une image, en 2N niveaux où N est le nombre de bits alloués au quantificateur. Quant à la quantification vectorielle sur réseau, elle est associée à un réseau régulier et permet de déterminer un vecteur de quantification, ou vecteur quantifié, appartenant au réseau en question dont les composantes sont représentatives des valeurs prises par les signaux à coder. Plus précisément, l'opération de quantification consiste donc à déterminer, à partir d'un vecteur originel dont chacune des composantes est représentative de la valeur prise par un signal à coder et appartient de ce fait à un ensemble non dénombrable, tel que l'ensemble des nombres réels R, un vecteur quantifié x dont chacune des composantes appartient à un ensemble dénombrable tel que l'ensemble des nombres relatifs Z. L'indexage de vecteurs de réseau est un problème essentiel dans les applications de quantification de réseau. L'invention concerne une solution à ce problème utilisant les vecteurs vecteurs de réseau et le cadre de la théorie des partitions. Elle fonctionne pour des sources de distribution Gaussienne généralisée et permet l'utilisation de codes produit. Elle permet également d'indexer des vecteurs de dimension élevée. La quantification vectorielle (QV) pourrait permettre d'obtenir des performances théoriques optimales si la dimension vectorielle est arbitrairement élevée. Malheureusement, la complexité de calcul de QV non structurée optimale telle que LBG augmente de façon exponentielle avec la dimension. De plus, les besoins en stockage peuvent être très importants. Une solution à ce problème de dimensionnalité est l'utilisation de QV contrainte telle que la quantification vectorielle de réseau (LVQ). L'approche LVQ conduit à la conception d'un dictionnaire structuré dont les vecteurs de code sont régulièrement distribués dans l'espace. Par conséquent, au lieu d'optimiser la position des vecteurs dans l'espace, il est possible d'adapter la source en indexant les vecteurs de réseau conformément à la forme de sa distribution. Pour la plupart des sources de données réelles ceci peut être effectué efficacement en utilisant un code produit, conduisant à un compromis débit-distorsion optimal pour des distributions de sources unimodales symétriques. En effet, il est possible d'interpréter de telles distributions comme étant un ensemble d'hypersurfaces concentriques ayant la même forme en fonction de la distribution de source. Il est alors possible d'indexer les mots de code de réseau en assignant un premier index (préfixe) correspondant à la norme (rayon) de la surface respective et un second index unique (suffixe) correspondant au dénombrement des vecteurs appartenant à une même surface. Un grand nombre de sources de données importantes, telles que des coefficients d'image et de parole sous-bande, en particulier ceux obtenus par transformation d'ondelette, peuvent être modélisées par les distributions Gaussiennes généralisées. Cette famille de distributions est paramétrée par un facteur de forme unique p (GG(p)) pour une variable stochastique univariée. Une propriété intéressante des sources ayant des distributions (GG(p)) est que les enveloppes de norme lP correspondant à des surfaces de probabilité constante. Ceci conduit au développement de codes produit effectifs. Même si le calcul du préfixe est trivial, le suffixe requiert le dénombrement et l'indexage des vecteurs de réseau situés sur des hypersurfaces données. De plus, l'augmentation de la dimension de l'espace peut rendre l'opération d'indexage très complexe, étant donné que le nombre de vecteurs situés sur une enveloppe augmente fortement avec la norme, comme l'illustre le tableau ci-dessous, représentant la comparaison du nombre de vecteurs d'une hyperpyramide donnée et du nombre total de vecteurs de réseau situés sur cette hyperpyramide (cardinalité) dans le cas d'une norme 11, pour un réseau Zn et différentes valeurs de dimension et de norme. Nombre de vecteurs Dimension Norme (leader en Cardinalité anglais)s en anglais) 13 402 3 400 884 640002 1000 83834 4000002 10 41 1854882 9 172 1, 37.108 9, 74.1015 1842 9, 98.1015 1, 68.1024 10 42 317222212 18 29 4426 8, 42.1015 450 9, 89.1015 9, 39.1015 5 7 207648024 60 11 56 1, 90.101s 303 9, 88.1015 2, 54.1015 4 5 138259200 120 9 30 7, 30.1015 301 9, 92.1015 9, 50.1034 3 3 18432160 240 7 15 1,17.1015 301 9, 93.1015 1, 68.10203 Dans la littérature, l'indexage du suffixe est généralement effectué selon deux techniques différentes. La première attribue un index tenant compte du nombre total de vecteurs situés sur une hypersurface donnée (cardinalité). Une autre approche exploite les symétries d'un réseau en utilisant le concept de vecteurs (leader en anglais)s en anglais). Les vecteurs d'une enveloppe de norme lp correspondent à quelques vecteurs de réseau à partir desquels tous les autres vecteurs de réseau situés sur l'enveloppe correspondante peuvent être obtenus par des permutations et des changements de signe de leurs coordonnées. Ces deux approches ont tendance à présenter des performances débit-distorsion similaires pour des sources isotropes. Cependant, la plupart des travaux sur l'indexage de réseau proposent des solutions uniquement pour des distributions Laplaciennes ou Gaussiennes, qui sont des cas particuliers de GG(p), avec des paramètres de forme p = 1 et p = 2, respectivement. Quelques auteurs proposent une solution pour le cas particulier p = 0,5. Toutefois, cette méthode de dénombrement ne permet pas la construction de codes produit et la méthode d'indexage dans est très complexe dans la pratique, en particulier pour p # 0,5, 1 ou 2 avec des dimensions et des normes élevées. L'invention propose une nouvelle alternative pour l'indexage de vecteurs de réseau z situés sur des enveloppes GG(p) avec 0 L'utilisation de la théorie des partitions nous a permis de surmonter la complexité et les besoins en stockage pour générer et indexer les vecteurs (leader en anglais)s en anglais). Nous proposons un algorithme d'indexage économique qui attribue à la volée l'indexe suffixe sans utiliser des tables de conversion. Dans la description qui suit, une première partie présente le principe de la LVQ et décrit le problème de l'indexage. Une deuxième partie propose une solution efficace pour indexer des livres de code LVQ de très grande taille, quel que soit le paramètre de forme p, avec un exemple d'indexage. La description précise ensuite le coût en mémoire et en calcul de l'approche proposée et nous indique des valeurs de performances pour un indexage de données réelles effectif. 2. Indexage de vecteurs de réseau 2.1 Définition d'un réseau Un réseau A dans Rn est composé de toute combinaison intégrale d'un ensemble de vecteurs linéairement 20 indépendants ai (la base du réseau) telle que : A = {x I x = ulal + u2a2 + ... unau} (1) où les ui sont des entiers. La partition de l'espace est donc régulière et dépend uniquement des vecteurs de base 25 choisis ai E Rm (m n). Il doit être noté que chaque ensemble de vecteurs de base définit un réseau différent. Chaque vecteur v d'un réseau peut être considéré comme appartenant à une surface ou hypersurface contenant des vecteurs ayant une norme lp constante donnée par : IVIIp n II), p p i= Il est alors possible de coder un vecteur de réseau donné en utilisant un code produit. Il apparaît clairement que si la distribution des vecteurs sources est Laplacienne un code produit approprié est constitué d'un préfixe correspondant à la norme 11 d'un vecteur et d'un suffixe correspondant à sa position sur l'hyperpyramide avec un rayon égal à la norme 11 en question. Les hypersurfaces de norme 11 constante sont appelées hyperpyramides. La position du vecteur sur une hypersurface peut être obtenue en utilisant un algorithme de dénombrement. Un tel code produit assure l'unicité pour le décodage. Dans le cas de sources ayant une distribution Gaussienne généralisée avec un paramètre de forme inférieur ou égal à un, la supériorité du réseau Zn cubique sur D�1 E8 ou des réseaux de Leech a été démontrée [12]. Par conséquent, la suite de ce document est focalisée sur la conception d'une LVQ basée sur le réseau zn cubique. 2.2 Indexage basé sur un dénombrement total On connaît dans l'état de la technique plusieurs solutions de dénombrement ont été proposées pour le cas de distributions Gaussiennes ou Laplaciennes et pour différents réseaux basés sur le principe d'un dénombrement total. On connaît notamment, dans le cas d'une distribution de source Laplacienne et pour un réseau Zn, une formule récursive pour calculer le nombre total de vecteurs de réseau situés sur une hyperpyramide de norme 11. Cette formule de dénombrement a été étendue à des distributions de source Gaussiennes généralisées avec un facteur de forme p compris entre 0 et 2. Ces solutions permettent de déterminer le nombre de vecteurs situés à l'intérieur d'une norme de troncature lp 18 donnée, mais ils ne proposent pas un algorithme pour assigner un index effectif aux vecteurs du réseau Zn. De plus, cette solution ne détermine pas le nombre de vecteurs situés sur une hypersurface donnée, ce qui rend difficile l'utilisation de codes produit. L'algorithme proposé dans les travaux de l'état de l'art indexe les vecteurs conformément au schéma de code produit pour 0 Les différentes symétries du réseau sont traitées séparément ce qui, par rapport aux techniques de dénombrement total, constitue une méthode plus efficace d'indexage de sources lorsque les symétries ne sont pas toutes présentes. De plus, les index gérés par l'algorithme de codage sont beaucoup plus faibles que la cardinalité de l'enveloppe, ce qui permet d'indexer des vecteurs qui ne pourraient pas être indexés par des méthodes basées sur un dénombrement total pour une précision binaire donnée. Dans l'architecture de code produit, outre les symétries du réseau, l'index suffixe contient l'index d'un faible nombre de vecteurs (vecteurs (leader en anglais)s en anglais)) à partir desquels tous les autres vecteurs de l'hypersurface peuvent être assignés. Pour le réseau Zn, les symétries correspondent à deux opérations basiques : des changements de signe et des permutations des coordonnées vectorielles. La première opération correspond à un changement de l'octant où est situé le vecteur. Par exemple, le vecteur (7, -3) de dimension 2 est dans le quatrième octant, tandis que le vecteur (-7, -3) est dans le troisième. Ces vecteurs sont symétriques par rapport à l'axe y. La seconde opération correspond à la symétrie intraoctant lorsque, par exemple, les vecteurs (-7, 3) et (-3, 7) sont tous deux dans le deuxième octant et symétriques par rapport à la bissectrice de l'octant. Dans ce cas, il peut être observé que tous ces vecteurs peuvent être générés à partir de permutations et de changements de signe du vecteur (3, 7), qui est le vecteur (leader en anglais) de tous ces vecteurs. Avec l'ensemble des permutations et changements de signe, le vecteur (leader en anglais) (3, 7) peut représenter 8 vecteurs. Ce rapport augmente rapidement avec la dimension de l'hypersurface (voir Tableau 1). Par conséquent, au lieu d'indexer directement tous les vecteurs sur une hypersurface, cette méthode d'indexage assigne à chaque vecteur un ensemble de trois index : l'un correspondant à son vecteur (leader en anglais) et les deux autres correspondant à sa permutation et aux changements de signe du vecteur (leader en anglais). Pour plus de détails sur la méthode de calcul des index de permutation et de signe. 3. Méthode d'indexage proposé 3.1 Indexage de vecteur (leader en anglais) proposé dans le cas de la norme li 3.1.1 Principe L'invention propose une solution basée sur la classification de tous les vecteurs dans un ordre,ùlexicographique inverse et attribue un index en fonction du nombre de vecteurs précédant le vecteur (leader en anglais) devant être indexé. Dans le cas présent, l'indexage n'est plus basé sur un algorithme de recherche à forte consommation de ressources ou un adressage direct, mais sur un algorithme de dénombrement à faible coût qui dépend uniquement de la quantité de vecteurs plutôt que de la connaissance explicite de chacun d'entre eux, ce qui permet d'éviter la construction de tables de conversion. Une hyperpyramide de rayon r est composée de tous les vecteurs v = (v1, V2, ..., Vd) de sorte que I v Il = r. Comme décrit précédemment, les vecteurs sont les vecteurs élémentaires d'une hypersurface à partir desquels des opérations de permutations et de changements de signe conduisent à tous les autres vecteurs situés sur cette hypersurface. En effet, les vecteurs sont des vecteurs ayant des coordonnées positives triées dans l'ordre croissant (ou décroissant). Par conséquent, les vecteurs pour la norme 11 égale à r et la dimension d sont des vecteurs qui satisfont aux conditions ci-dessous : 22 - 2 û 0 s vi s vi, pour i qui correspond à la réciproque de la fonction d'Euler, également appelée série q [10, 16, 17]. Des développements mathématiques supplémentaires conduisent à des représentations de la fonction P(r) permettant d'accélérer les calculs. Par exemple, pour r = 5, l'équation (2) donne le résultat P(5) = 7. En effet, toutes les partitions possibles du nombre 5 sont (5), (1, 4), (2, 3), (1, 1, 3), (1, 2, 2), (1, 1, 1, 2) et (1, 1, 1, 1, 1). En réécrivant ces partitions sous forme de vecteurs de dimension 5 tels que (0, 0, 0, 0, 5), (0, 0, 0, 1, 4), (0, 0, 0, 2, 3), (0, 0, 1, 1, 3), (0, 0, 1, 2, 2), (0, 1, 1, 1, 2) et (1, 1, 1, 1, 1), nous observons que ceux-ci correspondent exactement aux vecteurs de l'hyperpyramide de norme r = 5 et de dimension d = 5, c'est-à-dire que ce sont les seuls vecteurs dans l'hyperpyramide de norme r = 5 et de dimension d = 5 qui satisfont aux deux conditions de la section 3.1.1. Cependant, nous nous intéressons généralement à des enveloppes de norme 11 égale à r dans un réseau d- dimensionnel avec r ≠ d. Dans ce cas, il est possible d'utiliser la fonction q(r, d) [10, 18] qui calcule le nombre de partitions de r avec au plus d parts (dans la théorie des partitions ceci équivaut à calculer le nombre de partitions de r ne comportant aucun élément supérieur à d avec un nombre quelconque de parts). Par conséquent, pour une hyperpyramide de norme r = 5 et de dimension d = 3, nous avons q(5, 3) = 5, c'est-à-dire, cinq vecteurs donnés par : (0, 0, 5), (0, 1, 4 , (0, 2, 3), (1, 1, 3) et (1, 2, 2). La fonction q(r, d) peut être calculée à partir de la 15 relation de récurrence: q(r, d) = q(r, d - 1) + q(r - d, d) (3) avec q(r, d) = P(r) pour d >- r, q(l, d) = 1 et q(r, 0) = 0. 20 3.1.3 Utilisation de la fonction q(r, d) pour indexer les vecteurs (leader en anglais)s en anglais) Comme décrit ci-après, non seulement l'équation (3) donne le nombre total de vecteurs situés sur une hyperpyramide donnée, mais elle peut également être utilisée 25 pour attribuer à la volée des indices uniques pour les vecteurs (leader en anglais)s en anglais), sans nécessiter des tables de conversion. Afin d'illustrer le principe de l'algorithme proposé, supposons que les vecteurs d'une hyperpyramide donnée sont classés dans l'ordre 30 lexicographique inverse de la façon suivante : Valeur d'index Vecteur (leader en anglais) 0 (0,..., 0, 0, rn) 1 (0,..., 0, 1, rn - 1) 2 (0,..., 0, 2, rn - 2) 3 (0,..., 1, 1, rn ù 2) Ainsi, l'index d'un vecteur (leader en anglais) 1 correspond au nombre de vecteurs qui précèdent celui-ci. Dans l'exemple décrit ci-dessus, le vecteur- (leader en 5 anglais) (0, ..., 1, 1, rn - 2) doit être assigné à l'index 3. La proposition 1 définit la solution proposée pour l'indexage de vecteur (leader en anglais) : Proposition 1. Soit v = (vl, v2, ..., vn) un vecteur de réseau Zn avec un vecteur (leader en anglais) 1 = (xl, x2, ..., 10 xn) situé sur une enveloppe de norme constante 11. Son index de vecteur (leader en anglais) Il est donné par : mtn[xä-(1_l) i J=u i= tant que xä0+))≠0 glrn-j ûZ,n - (i +1),i) (4) où ,7(r, d, k) calcule le nombre de partitions de r 15 avec au plus d parts inférieures ou égales à k, avec q(0, d, k) = 1 et xn+1 = +m Démonstration. Considérons un vecteur (leader en anglais) 1 = (x1, x2, ..., xn) de dimension n et de norme ll r, _ n 1 x, devant être indexé. Étant donné que nous trions les vecteurs dans l'ordre lexicographique inverse, un premier groupe de vecteurs placés avant 1 est composé de tous les vecteurs dont la nème composante est strictement supérieure à xn, c'est-à-dire, tous les vecteurs ayant la plus grande. coordonnée gn satisfaisant à xn + 1 s gn s rn. Afin de compter le nombre de vecteurs de ce premier groupe sans les lister tous, nous utilisons la fonction de partition q(r, d). En effet, le nombre de vecteurs dont la nème coordonnée est égale à gn peut être aisément calculé en utilisant la remarque suivante : Remarque : le calcul du nombre de vecteurs de norme rn et de dimension n dont la plus grande coordonnée est égale à gn revient à. calculer le nombre de partitions du nombre rn - gn avec au plus n - 1 parts sans aucune part supérieure à gn. Dans la plupart des cas, nous pouvons compter ce nombre de partitions en appliquant q(rn - gn, n - 1). Cependant, cette approche n'est valide que si rn - gn s gn, auquel cas il est implicitement supposé que toutes les partitions de rn - gn n'ont aucune part supérieure à gn. Cependant, dans un cas plus général, dans lequel rä - gn s gn n'est pas garanti (par exemple, le nombre de vecteurs de norme rn = 20 et de dimension n = 5 avec la plus grande partie égale à 7 conduirait à q(20-7, 5-1) = q(13, 4), où 20 û 7 e 7 ), le calcul de q (rn - gn, n - 1) conduirait à un nombre erroné de vecteurs valides, étant donné que certaines partitions de rn - gn auraient leur plus grande part supérieure à gn, auquel cas la condition 2 dans la section 3.1.1 ne serait pas respectée. Dans une telle situation, nous devons appliquer une deuxième contrainte au calcul du nombre de partitions : la valeur de la plus grande part. Nous utilisons alors une généralisation de q(r, d), donnée par la fonction q(r, d, k), qui calcule le nombre de partitions d'un nombre r donné avec au plus d parts sans aucune part supérieure à k. Le calcul de q (r, d, k) est fait à l'aide d'un algorithme de dénombrement. Par conséquent, nous pouvons calculer le nombre correct de vecteurs valides en appliquant q(rn - gn, n - 1, gn). Ainsi, la variation de gn de xn + 1 à rn permet de déterminer le nombre de vecteurs dont la plus grande coordonnée est strictement supérieure à xn, donné par : Pn ' (rn - 1,32 -1,i) =xn +1 (5) où nous supposons que q (0, d, k) = 1, V d E Z+ et V k E Z*. Dans ce cas, nous utilisons la notation d'ensemble utilisée dans la théorie des nombres, où Z+ représente l'ensemble d'entiers positifs {i E Zli > 0} et Z* l'ensemble d'entiers non négatifs {i E Zli 0}. Un deuxième groupe de vecteurs précédant 1 est composé de tous les vecteurs dont la Hème coordonnée est égale à xn mais avec une (n - 1)ème coordonnée strictement supérieure à Xn_1 . Afin de compter ce nombre de vecteurs (leader en anglais)s en anglais), nous pouvons utiliser la même remarque précédemment mentionnée, mais cette fois appliquée à la dimension n û 1. Nous pouvons alors calculer le nombre de vecteurs dont la plus grande composante gn = xn et la deuxième plus grande composante gn-1 > xn-1 en utilisant ((rn ù xn) (n ù 1) ù 1, gn-1) ou q (rn-1 gn-1 n - 2, gn-1) , en faisant varier gn_1 de xn-1 + 1 à min (xn, rn-1) . La fonction min garantit que la norme rn et l'ordre 30 gn_1 s gn = xn soient respectés. En étendant le résultat aux dimensions additionnelles, le nombre de vecteurs dont la plus grande coordonnée est égale à x, mais qui précèdent 1 peut être obtenu par : n-2 min[xn_(i-1),rn_1 ] q(rn-j ù1,nù(j+1),i) J j +1 tant que xn_0+1)≠0 (6) La combinaison des équations (5) et (6) conduit à une formule générale pour calculer le nombre total de vecteurs placés avant 1, et donc l'index I1 de 1 (équation (4)) : n-2 min[xn-(i-1),rn-J ] q(rn-j ùi,nù(j+1),i) i=xn_j +1 tant que x,0+1) ≠O où xn+1 = +00 pour j = O. 3.2 Généralisation au cas d'une norme lp Afin de calculer l'index du vecteur (leader en 15 anglais) 1 = (x1, x2, ..., xn) d'un vecteur v =(vl, v2, vn) situé sur une enveloppe de norme lP constante, avec 0 La norme lP d'un vecteur est alors connue avec une précision S et est obtenue par : (7) où la précision S définit la largeur des enveloppes de norme 20 constante rân, comprenant plus de vecteurs au fur et à mesure que sa valeur augmente (voir Figure 2). Figure 1 : exemple d'enveloppe de rn2 = 15, p = 0,4 et b = 0,3 pour un réseau Z2. En conséquence, le calcul de l'index de vecteur 25 (leader en anglais) d'un vecteur dans une norme lp constante correspond au calcul du nombre correct de partitions d'un nombre entier mais en utilisant uniquement des entiers appartenant au sous-ensemble $s. La proposition 2 décrit la solution que nous proposons : Proposition 2. Soit v = (vl, v21 ..., vn) un vecteur de réseau Zn avec un vecteur (leader en anglais) 1 = (x1, x2, ..., xn) situé sur une enveloppe de norme constante lp. Son index de vecteur (leader en anglais) Il est donné par : n-2 min[x,_0_1),f(r n_j )1 Il 2 T irr n-; - t(i), n - (j + 1), i) ,1 i=x ) +1 tant que xä_(.1+1) ≠0 + min f (xl ), x2) û x1 (8) où qb(r, d, k) calcule le nombre de partitions de r E $a 10 avec au plus d parts inférieures ou égales à k E Z*, avec qâ (0 , d, k) = 1 et xn+l = +00. f (a) retourne la valeur maximale i E Z* de sorte que t(i) s a, pour a E $b et t(i) = Démonstration 15 Considérons un vecteur (leader en anglais) 1 = (xi, x2, ..., xn) de dimension n et de norme 1p r = yxf devant être _1 indexé. Comme décrit précédemment, nous proposons d'utiliser le même principe que l'équation (4). Mais l'utilisation de la fonction q n'est plus possible, étant donné que les 20 termes de somme d'une norme lp, avec p ~ 1, ne sont pas toujours des entiers. L'arrondi de x1' à l'entier le plus proche avec une précision S permet d'obtenir une norme entière à partir n r7,n d'une somme de valeurs entières positives x, comme défini dans l'équation (7). Par conséquent, le calcul de l'index d'un vecteur (leader en anglais) 1 situé sur une enveloppe de p e 1 avec une précision S peut être effectué en comptant le nombre de façons différentes d'écrire rfi" = r comme étant la somme de x; E$fi , où $fi est l'ensemble d'image de la fonction t définie par t $Ô qui met en correspondance xi --> où t (xi) = Il est ici important de noter que suivant les valeurs de p et b la fonction t peut représenter une fonction non- injective, étant donné que différentes valeurs de Z* peuvent être mises en correspondance avec la même valeur dans$Ç-. En conséquence, différents vecteurs 1 E Zn* peuvent avoir la même représentation dans $a" et n'importe quelle procédure naïve pour compter le nombre de partitions dans $s" conduirait non seulement à un index de vecteur (leader en anglais) erroné mais également à attribuer le même index erroné à des vecteurs distincts. Nous définissons en tant que solution la fonction qb(r, d, k) comme étant la fonction qui compte le nombre de partitions de r E $â avec au plus d parts, où une part est donnée par t(i) E $', avec aucun i supérieur à k, pour i, k E Z. Il doit être noté que la contrainte sur la valeur de la plus grande part dans $b en utilisant indirectement une valeur k de Z* permet de compter le nombre de vecteurs différents qui conduisent à une même partition dans $r . Par conséquent, en utilisant qa(r, d, k), l'équation (4) peut être étendue pour des normes 1p par : min[xn-(l-1) ,f (rj,n-J )] ~ÎS (rSn-j ù t(Z), n - (J + 1),l) i=xn_,+1 où f(a) retourne la valeur maximale i E Z' de sorte que 5 t (i) s a, pour a E $f. En faisant varier j de 0 à n - 2 dans l'équation (9) nous comptons correctement le nombre de vecteurs précédant 1 pour les coordonnées xn à x2. Dans le cas de la norme 11, c'est une condition suffisante pour calculer le nombre total 10 de vecteurs précédents, étant donné qu'il existe une- seule valèur x1 E Z' pour laquelle x1 + r2x, = rn . Cependant, pour la norme 1p, il est possible que plusieurs valeurs xl E Z` conduisent à 1 + rn zx; = rpn en raison de la non-injection de la fonction t. Par conséquent, afin de garantir l'unicité de 15 l'index, nous calculons le décalage entre min(f(x1), X2) et xl et ajoutons celui-ci au résultat de l'équation (9), pour obtenir l'index de vecteur (leader en anglais) décodable unique donné par l'équation (8) : min[xn_(i 1) ,f (râ n_1 )1 T (rpn-j ùt(i),n-(j+ 1),l) J =v i=xn-1 tant que xn_0+1) ≠0 + min(f (xl ), x2) - xl 20 La fonction min est requise étant donné que f(x,) peut être supérieur à x2 (voir l'exemple dans la section 4) alors que xldoit être plus petit ou égale à x2. Le calcul de e (r, d, k) est fait à l'aide d'un algorithme de dénombrement. 31 J=u tant que xn_(f+1) #0 (9) 3.3 Décodage d'un index de vecteur (leader en anglais) Supposons que l'index I1 du vecteur (leader en anglais) 1 = (xi, x2, ..., xn) ainsi que l'index de sa norme lP r"n sont transmis au décodeur. De plus, supposons que la dimension vectorielle n, le facteur de forme p ainsi que la précision S utilisés dans l'étape de codage sont connus du côté du décodeur. L'objectif est ici d'extraire les valeurs correctes de xi, tri E [1, n], en utilisant uniquement ces informations. Comme dans l'étape de codage, nous commençons par traiter la nèpe coordonnée xn. Au niveau du décodeur, avec les informations concernant la norme et la dimension, il peut aisément être observé que xn E [imin(rôn, n), f(rpn)] (voir les équations (8) et (10)). De plus, étant donné que I1 représente le nombre de vecteurs précédant 1, le nombre de vecteurs avec la plus grande coordonnée gn z xn est supérieur à I. Ceci signifie que xn est la première valeur de i E {f(rpn ), f(rân) - 1, f(rô;) - 2, ..., iminp;n, n)} pour laquelle le nombre de vecteurs avec la plus grande 20 composante gn i est plus grande que I1. Par conséquent, afin d'extraire xn, nous comptons le nombre de vecteurs avec la plus grande composante variant de f(rsn) vers zéro jusqu'à l'obtention d'un nombre cumulé de vecteurs supérieur à I1. En utilisant le principe introduit 25 dans la section 3.1, ceci équivaut à calculer le nombre de partitions Np comme étant : o z=f(r5 n) tant que NPeT1 qd ~rb -t(i),n-1,i) (11) Np = et attribuer à xn la première valeur de i pour laquelle Np > I1. Dans l'étape suivante, nous décodons xn_1. En appliquant un principe identique à celui utilisé pour décoder xn, nous observons que xn_1 E [ imin ( rs ä_~ , n-1), min[xn, f(rbä_011 (voir les équations (8) et (10)). Étant donné que r' Ô,n est connu sur le décodeur et que xn a été décodé, rpä_, peut être obtenu en calculant = rf), - t (xn) . Ensuite, pour décoder xn_1 nous comptons Np en utilisant un mécanisme similaire à celui de l'équation (11), mais cette 10 fois en ce qui concerne la (n-1)ème coordonnée. Dans ce cas, étant donné que Np > I11 nous devons dans un premier temps pointer le compteur de partition Np de retour au premier vecteur (leader en anglais) avec la nème composante égale à xn, en paramétrant Np à sa valeur 15 précédente, qui est appelé ci-après Npbckp (la � valeur précédente � correspond à la valeur la plus forte de Np tel que Np s I11 c'est-à-dire, la valeur de Np avant que la dernière valeur de i soit incluse dans la sommation). La valeur précédente désigne la plus grande valeur de Np pour 20 laquelle Np s I11 c'est-à-dire, la valeur de Np avant d'inclure la dernière valeur de i sur la somme. Par conséquent, nous attribuons à xn_1 la première valeur de i E {min [ xn, f( r n_1) ] , min [ xn, f ( rpä_~ ) ] ù 1, imin (rpä_l , n-1)} pour laquelle le nombre de vecteurs avec la plus 25 grande coordonnée gn = xn et la deuxième plus grande coordonnée gn_1 a i est supérieure à I1 ù Npbokp• Ce processus peut être généralisé sur la dimension par : Nu) = NU-1) + p pbckp où Npbckp = O pour j = 0, q!'(O, d, k) = 1 et xn+, = +oo . En faisant varier j de 0 à n ù 2 nous pouvons décoder les 5 coordonnées xn à x2 du vecteur (leader en anglais) 1. Une fois que la coordonnée x2 est décodée, rp, peut être obtenu en calculant rai = rb2 - t(x2). Cependant, comme décrit précédemment, plusieurs valeurs de xl E Z* peuvent être mises en correspondance dans rp, E $s (à partir de 10 l'équation (7), il peut être déduit que 1) _ x1). Polir obtenir la solution, nous introduisons le décalage min(f(rs1), x2) ù x, sur le codeur de sorte que la coordonnée xl peut être décodée de manière unique en calculant X1 = min (f (rS 1 ) , x2) ù (I1 ù Npbckp ) • En effet, il doit être 15 noté que AT(pZ (la valeur précédente de Np obtenue après le décodage de x2) est égal à la valeur calculée en utilisant l'équation (9) (la valeur de I1 avant la sommation du décalage), étant donné que tous deux résultent de calculs strictement identiques. 20 Par conséquent, le vecteur (leader en anglais) 1 = (XI, X2, ..., xn) est décodé en utilisant uniquement les informations I11 rpn , n, p et b. La section suivante décrit un exemple de codage et décodage de vecteur (leader en anglais). 25 4. Exemple de codage et décodage Soit v = (-20, 16, 15, -40) un vecteur de réseau quantifié d'une source ayant une distribution Gaussienne 34 Râ Cô,n-% ùt(l),n-(j + 1),i) o =roin[x _~i l),f(r' _j)I tant que N(pi)sI1 (12) généralisée de facteur de forme p = 0,3 devant être indexé. Étant donné que le calcul des indices de permutation et de signe n'est pas dans la portée de ces travaux, et peut être effectué aisément en utilisant [5, 13], nous nous focalisons ici sur l'indexage de vecteur (leader en anglais). Le vecteur (leader en anglais) correspondant au vecteur v est 1 = (15, 16, 20, 40). Les algorithmes de codage et décodage sont basés sur les principes suivants. Étape de codage : 1) Initialisation : soit p = 0,3 et la précision S = 0,1. Soit l'index de vecteur (leader en anglais) Il = 0 ; Calculer la norme lp du vecteur 1 avec une 4 0.3 précision b comme étant .p4 = =10' ,_ [01 3) effectuer ces opérations, nous commençons par déterminer f(101). Dans ce cas, f(101) = 2264. Ensuite, en utilisant l'équation (8) pour j = 0 et i variant de 41 (c'est-à-dire, 40 + 1) à 2264 (c'est-à-dire, min(+oo, 2264)) conduit à : 2264 Il =0+ ) i /101- _ 939i =10032. 1 0.1 4) Calculer le nombre de vecteurs précédant 1 mais avec la plus grande composante g4 égale à 40. Ceci signifie p 3 x03 que nous devons sommer rb,3 = = 71 en 3 parts. L'utilisation des équations (8) avec f(71) = 704, j = 1 et i 25 variant de 21 à 40 (c'est-à-dire, min(40, 704)) conduit à : 140 iO3 \ 1Q1 71- 01 'fil 5) Calculer le nombre de vecteurs précédant 1 avec la plus grande composante g4 = 40 et g3 = 20. Dans ce cas, nous p 2 e devons sommer 1'6,2 = 4E, en 2 parts. L'utilisation des 0.1 équations (8) avec f(46) = 167, j = 2 et i variant de 17 à 20 (c'est-à-dire, min(20, 167)) conduit à : I, = 100761-520 4'1 46- lai =1007 % i7 [.Ô-ïj1i) 6) Dans la dernière étape, mettre à jour ' I1 en calculant (voir l'équation (8)) : II = 100774 + (min(f(x1), x2) ù xl) = 100774 + (min(f(23), 16) ù 15) = 100774 + (min(17, 16) ù 15) = 100775. Par conséquent, l'index du vecteur (leader en anglais) 15 1 = (15, 16, 20, 40) pour p = 0,3 et S = 0,1 est I1 = 100775. L'algorithme 1 dans l'annexe compile l'ensemble du processus de codage. Étape de décodage : 1) Initialisation : soit rpn = 101, I1 = 100775, 20 p = 0, 3, b = 0,1 et n = 4 ; 2) Calculer f(101) = 2264 ; 3) Décoder x4. Dans ce cas, nous utilisons l'équation (12) avec j = 0 pour obtenir : 1, =10032+1 =1007E. N°= 0+ P ° q-0013 (101- Hl ~ i i=min ,226P tan t que N;,°)sls En faisant varier i de 2264 à 41 nous obtenons e = 100321 100775. Par conséquent, x3 est défini à 20 et donc 1 = (xl, N 1 kp = 100765. pbc 0,1 = 46, avec f(46) = 167. Ensuite, nous iO3 71- x2, 20, 40). Dans ce cas, 5) Décoder x2. Étant donné que x3 = 20, nous avons rP 20°'3 Ô,2 = 71 - calculons N(,,2) : -0.3 40.1 i=min[ZQ1 67 tant que Ni,2),I, Nn2) =10076E5 0.3 46ù Q1 []1i) . la dernière étape, décoder xi. Étant donné que x2 = nous avons rb 1 = 46 - = 23. Enfin, nous calculons 16, P xl = min ( f ( ra.I) , x2) ù ( I ù Nnn- ckp 2) ) = min(f(23), 16) û (100775 û 100774) = min(17, 16) û (100775 û 100774) = 15. 10 Par conséquent, nous obtenons 1 = (15, 16, 20, 40). L'algorithme 2 dans l'annexe compile l'ensemble du processus de décodage. 5. Coût de mémoire et de calcul 5.1 Besoins de mémoire 15 Dans le cas où e (r, d, k) n'est pas calculé en ligne, les besoins de mémoire peuvent être calculés comme décrit ci-après. Le b stocké, quelque soit l'algorithme de dénombrement utilisé, peut être interprété comme étant une 20 table tridimensionnelle, où la première entrée est la valeur r E $s, la deuxième est la dimension d E Z+ et la troisième est la valeur de réseau maximale k E Z*. Le besoin de mémoire maximal prévu est alors r • d • k • B octets, où B est le nombre d'octets par élément de 4a. Cependant, la limite pour les étapes de codage et de décodage effectives pour une norme maximale donnée rp = r et une dimension d est plus faible. En effet, à partir des équations (8), (10) et (12), il peut être observé que la plus grande valeur des deux premières variables d'entrée de qb est obtenue lorsque j = 0 et i = imin(r, d). Dans ce cas, nous calculons qa(r û t(imin(r, d), d û 1, imin(r, d)) = qs(r - [-i.], dû1, imin(r, d)). Par conséquent, il suffit d'utiliser la première variable d'entrée (liée à la norme) sur l'intervalle 0,r- 1- et la deuxième (liée à la d dimension) sur l'intervalle [1, d û 1]. > La valeur de k peut être déterminée à partir de r. Étant donné que la deuxième contrainte n'est requise que si t(k) s 2, la valeur maximale de k peut être définie à k = 4lj afin d'indexer un vecteur (leader en anglais) quelconque ayant une norme dans l'intervalle [0, r] et une dimension [1, d]. Par conséquent, la limite supérieure de coût de mémoire pour les étapes de codage et de décodage est donnée par : #M= r-f 1 +11 x(d-1)x f L2i +1 •B octets (13) d Il doit être noté que le besoin de mémoire dépend principalement de la norme et de la dimension des enveloppes. Le nombre de vecteurs détermine le choix de B. La figure 3 illustre l'économie de mémoire en utilisant l'algorithme d'indexage avec la table qfi calculée hors ligne. Le besoin de mémoire est représenté à partir de l'équation (13) en fonction du rayon r pour p = 1, S = 1 et B = 4 (c'est-à-dire, des données de type entier) et est comparé à la limite supérieure de mémoire des méthodes classiques basées sur les vecteurs comme décrit dans [5]. Il doit être noté que même pour une dimension et un rayon aussi faible que 16 et 20, respectivement, les méthodes classiques ne requièrent pas plus de 10 gigaoctets de mémoire tandis que la méthode proposée nécessite moins de 100 kilo-octets. Les besoins de mémoire extrêmement faibles et le fait qu'il n'est pas nécessaire de connaître tous les vecteurs permettent d'indexer les vecteurs de réseau dans des dimensions aussi élevées que 64, 128, 256, 512, etc. Dans les travaux antérieurs, les applications pratiques étaient limitées à une dimension de 16. 5.2 Coût de calcul Le coût de calcul des algorithmes de codage/décodage d'index de vecteur (leader en anglais) est évalué dans cette section. Dans ce cas, nous négligeons le coût de construction de la table qs(r, d, k) et des vecteurs f(i) et t(i), étant donné que celle-ci est effectuée hors ligne et une seule fois. Le coût de calcul désigne le nombre d'opérations par vecteur (leader en anglais) de norme rpn = r et de dimension d. À partir des équations (8) et des algorithmes (1) et (2) (voir l'annexe), il peut être déduit que les seules opérations requises sont des additions/soustractions (A) et des opérations logiques de comparaison (LC). Nous négligeons l'accès mémoire étant donné qu'il est beaucoup moins coûteux que ces deux types d'opérations. Le coût de codage/décodage de l'algorithme d'indexage proposé est évalué ci-après. L'algorithme de décodage 2 est essentiellement l'inverse de l'algorithme de codage 1 et comporte approximativement le même nombre d'opérations. La complexité des algorithmes de codage et de décodage est évaluée en comptant le nombre d'opérations de l'algorithme 1 comme suit : 1) La somme cumulée met en oeuvre (n - 1)A 2) Le premier � for � (sur � j �) est effectué approximativement nnz(1) fois, en raison du test � if/break �, où nnz(1) désigne le nombre de valeurs non-zéro de 1. 3) Pour chaque boucle du premier � for �, nous avons : i. lA et 7LC en raison du premier � if � ii. 1LC en raison de la fonction � min � iii. 3A et 1LC par boucle du � for � sur � i �, qui se produit min (xi.,, f (rpj)) ù x; fois 4) Avec le dernier � if � et la ligne suivante nous comptons 2A et 2LC Par conséquent, le coût total des algorithmes de codage/décodage en termes d'additions, d'opérations logiques ou de comparaisons est donné par : max #C=F(n+1)+nnz(l)+3 (min -xj)1A J n (14) max + 2+8•nnz(l)+1(min -xj) LC j=n où nz(1) est le nombre d'éléments zéro du vecteur (leader en anglais) 1 et min = min(xi+1, f(rpj)) et max = max(nz(1)+1,2). Selon l'invention, l'indexage d'un vecteur de réseau 25 est réduit à l'indexage de son vecteur (leader en anglais) correspondant et à des permutations et changements de signe. Nous proposons une solution pour indexer les vecteurs sans nécessiter aucune table de conversion ce qui permet de réduire l'utilisation de mémoire et la complexité de génération de tous les vecteurs (leader en anglais)s en anglais). De plus, cette solution fonctionne également pour des sources à distribution Gaussienne généralisée avec un paramètre de forme 0 REVENDICATIONS1 - Procédé de traitement de données numériques comportant une étape de quantification consistant à calculer dans un espace de dimension d au moins un indice vecteur (leader en anglais) I1 pour au moins une partie des vecteurs 1, lesdits vecteurs 1 constituant des descripteurs des données d'entrées, le procédé étant caractérisé en ce que ledit indice vecteur (leader en anglais) Il correspond au nombre de vecteurs qui précédent ledit vecteur (leader en anglais) 1 dans l'ordre lexicographique inverse sans étape de détermination de la totalité des vecteurs (leader en anglais)s en anglais). 2 - Procédé de traitement selon la revendication précédente, caractérisé en ce qu'il ne comporte aucune étape de détermination de vecteurs autre que le vecteur (leader en anglais) 1 en cours de calcul. 3 û Procédé de traitement selon l'une quelconque des revendications 1 à 2, caractérisé en ce que l'étape de calcul de la norme 1p dudit vecteur (leader en anglais) 1 égale à rfid consiste à appliquer la fonction T à chacune des coordonnées (xl, x2, ..., xd) dudit vecteur (leader en anglais) 1, rPd étant égal à la somme des résultats de ladite fonction T(xi) pour i variant entre 1 et d, la fonction T(xi) retournant le résultat de la division de la coordonnée xi élevé à la puissance p par un facteur de précision delta, le résultat de ladite division étant arrondi à l'entier le plus proche. 4 - Procédé de traitement selon l'une au moins des revendications 1 à 3, caractérisé en ce que ladite étape de calcul de l'indice vecteur (leader en anglais) II comporte une étape de calcul de la norme i, dudit vecteur (leader en anglais) 1(x1, x2, ..., xd) où x1 à xd sont ordonnés de manière croissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre d et 1, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+l et MIN (xi+1, F ( l'indice Il étant égal à la somme des résultats des étapes de dénombrement, F(A) étant une fonction qui retourne une valeur entière w dont la valeur T(w) est plus petite ou égale à l'argument A de ladite fonction F. 5 - Procédé de traitement selon l'une au moins des revendications 1 à 3, caractérisé en ce que ladite étape de calcul de l'indice vecteur (leader en anglais) I1 comporte une étape de calcul de la norme rPdelta,d dudit vecteur (leader en; anglais) 1(x1, x2, ..., xd) où, x1 à xd sont ordonnés de manière décroissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre 1 et d, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+1 et MIN (xi_1, F(i)), l'indice Il étant égal à la somme des résultats des étapes de dénombrement, F(A) étant une fonction qui retourne 20 une valeur entière w dont la valeur T(w) est plus petite ou égale à l'argument A de ladite fonction F. 6 - Procédé de traitement selon l'une au moins des revendications 1 à 3, caractérisé en ce que ladite étape de calcul de l'indice vecteur (leader en anglais) Il comporte 25 une étape de calcul de la norme r dudit vecteur (leader en anglais) 1(x1, x2, ..., xd) où X1 à xd sont ordonnés de manière croissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre d et 1, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la 30 coordonnée xi est comprise entre xi+1 et MIN (xi+l, r-xi+l) , l'indice Il étant égal à la somme des résultats des étapes de dénombrement. 7 - Procédé de traitement selon l'une au moins des revendications 1 à 3, caractérisé en ce que ladite étape de calcul de l'indice vecteur (leader en anglais) Il comporte une étape de calcul de la norme r dudit vecteur (leader en anglais) 1(x1, x2, ...xd) où x1 à Xd sont ordonnés de manière décroissante, et des étapes de dénombrement récursives sur les coordonnées xi avec i variant entre 1 et d, lesdites étapes de dénombrement consistant à dénombrer les vecteurs dont la coordonnée xi est comprise entre xi+l et MIN(xi_11 r- l'indice I1 étant égal à la somme des résultats des étapes de dénombrement. 8 û Application de l'un quelconque des procédés objet des revendications 1 à 7, pour la compression de données vectorielles consistant à enregistrer le résultat du codage binaire dudit index Il, ainsi qu'au moins un indice de signe I,, un indice de norme Iä et un indice de permutation Ip. 9 û Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont des images numériques. 10 û Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont des séquences vidéo numériques. 11 û Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont 25 des données audio numériques. 12 û Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont des objets tridimensionnels numériques. 13 û Application de compression selon la revendication 30 8, caractérisée en ce que lesdites données vectorielles sont des objets tridimensionnels animés numériques. 14 - Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont des coefficients issus d'une transformation (exemple coefficients DCT, coefficients d'ondelettes,...). 15 û Application de compression selon la revendication 8, caractérisée en ce que lesdites données vectorielles sont des informations enregistrées dans une base de données. 16 û Application de l'un quelconque des procédés objet des revendications 1 à 7, pour la recherche dans une base de données vectorielle consistant à calculer pour une information de référence un index I1,ref ainsi qu'au moins un indice de signe 1s,ref, un indice de norme In, ref et un indice de permutation lp,ref et à rechercher les données associé aux mêmes indices. 17 - Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles sont des images numériques. 18 û Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles 20 sont des séquences vidéo numériques. 19 û Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles sont des données audio numériques. û Application de recherche selon la revendication 25 16, caractérisée en ce que lesdites données vectorielles sont des objets tridimensionnels numériques. 21 û Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles sont des objets tridimensionnels animés numériques. 22 û Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles sont des objets d'une base de données textuelles. 23 - Application de recherche selon la revendication 16, caractérisée en ce que lesdites données vectorielles sont des coefficients issus d'une transformation (exemple coefficients DCT, coefficients d'ondelettes, ...). 24 û Procédé de reconstruction d'une donnée numérique à partir de l'indice vecteur (leader en anglais) Il calculé selon un procédé conforme à l'une au moins des revendications 1 à 7 caractérisé en ce que l'on calcule les coordonnées (xl, x2, xd) d'un vecteur (leader en anglais) 1 et en. ce que l'on applique à un indice I un traitement consistant à rechercher le vecteur (leader en anglais) 1 dont l'indice I1 correspond au même nombre de vecteurs précédents ledit vecteur (leader en anglais) 1 dans l'ordre lexicographique inverse sans étape de détermination de la totalité des vecteurs (leader en anglais)s en anglais). 25 - Procédé de reconstruction d'une donnée numérique selon la revendication 24, caractérisé en ce que l'on procède à un traitement récursif sur la variable i variant entre d et 1, ledit traitement étant appliqué sur la coordonnée xi avec xi variant de MIN (xi+i, FK� à 0 et consistant à sommer les résultats des étapes de dénombrement par application de ladite fonction F(A), jusqu'à ce que ladite somme soit supérieure audit indice I1, la coordonnée recherchée xi étant celle conduisant au dépassement dudit indice Ii le procédé consistant ensuite à poursuivre, pour la coordonnée xi_i, la sommation à partir de la valeur I1, où I1, est la valeur précédent la valeur I1 avant ledit dépassement. 26 - Procédé de reconstruction d'une donnée numérique selon la revendication 24, caractérisé en ce que l'on procède à un traitement récursif sur la variable i variant entre 1 et d, ledit traitement étant appliqué sur la coordonnée xi avec xi compris entre MIN (xi_l, F (rp;)) et 0 et consistant à sommer les résultats des étapes de dénombrement par application de ladite fonction F(A), jusqu'à ce que ladite somme soit supérieure audit indice Il, la coordonnée recherchée xi étant celle conduisant au dépassement dudit indice I1, le procédé consistant ensuite à poursuivre, pour la coordonnée xi+l, la sommation à partir de la valeur I] où Ir est la valeur précédent la valeur I1 avant ledit dépassement.ANNEXE ALGORITHMES DE CODAGE ET DECODAGE ALGORITHME 1 /* Algorithme de codage de l'indice de vecteur (leader en anglais) appartenant à une surface de facteur de forme p avec une précision S et dimension n*/ CumTotal = cumsum(1, p, 8); //a I1 = 0; maximum = +co; for(j=n-1;j>=1;j--) // Equivaut à la première sommation 15 // de l'Equation (8) if(nC(P_=1) && (1[j-1]==0)) Î f //b ((P!=1) && (1[j]==0))) break; 20 else { r = CumTotal[j]; for(i=min(maximum,f[r]);i>1[j];i--) {// Deuxième sommation de l'Equation (8) 25 rmd = r-t[i]; if(t[i]>rmd)// Pas de deuxième contrainte II += qs [rmd] [j-1] [O]; else I1 += qâ [rmd][j-1][il; 30 } } maximum = 1[j]; } if(j==0) 35 Il += min(f[CumTotal[0]],1[1]) - 1[0]; return I1;// La fonction termine ici /*a La fonction cumsum(1, p, S) calcule la somme cumulée du vecteur (leader en anglais) 1 = (xl, x2, ..., xn) dans le 40 domaine Sk' s et retourne un vecteur v = (t [ xl ] , t [ xl ] +t [ x2 ] , ..., t [ xl ] +t [x2 ]+...+t[xn] ) b Pour p = 1 on suppose que S = 1. Le tableau qa [r][d][k] et les vecteurs f et t sont crées offline par des algorithmes de dénombrement.*/ 45ALGORITHME 2 /* Algorithme de décodage pour un vecteur (leader en anglais) 1 de appartenant à une surface de norme YPn = r, facteur de forme p et précision b, dimension d = n et index I1 */ 1 = O,,; // Vecteur de zéros de dimension n maximum = +X; Np = 0; for(j=n-l;j>=1;j--) // Equivaut à varier j de 0 à n ù 2 { // dans l'Equation (12) i = min(maximum,f[r]); while (Np rmd)// Pas de deuxième contrainte Np += qfi [rmd][j-1][O]; else Np += Rs [ rmd] [ j -1 ] [ i ] ; i--; 25 } i++; 1[j] = i; Np = Npbckp maximum = i; 30 r -= t[i]; if (r==0 ) break; } if(j==0) 35 1[0] = min(f[r],1[1])-(I1-Np); return 1;// La fonction termine ici 2