FR 3022064 A1 20151211 FR 1401280 A 20140604 3022064 10 La présente invention se rapporte au domaine du codage de matrices ; elle est notamment applicable au codage de media, particulièrement de media image ou vidéo, sous forme de fichiers numériques. Elle se rapporte plus particulièrement à un procédé pour réduire l'entropie de ces fichiers, telle que définie par la formule de Shannon, définie ci-dessous. 15 L'entropie de Shannon définit la « quantité » d'information présente dans un signal, et donne donc une indication précise de la quantité de bits nécessaire pour coder ce signal à l'aide de techniques de codage binaire telles que le codage arithmétique ou le codage de Huffman. Plus les valeurs sont répétitives 20 et réparties régulièrement dans le signal, plus l'entropie de ce signal est faible. La formule générale de calcule de l'entropie est la suivante : n H(X) = 112(X) Pi loge Pi. i=1 où Pi représente la probabilité d'apparition de chaque symbole 25 Il résulte de cela qu'une façon de réduire le poids (en nombre de bits) d'un fichier numérique est de réduire son entropie. Les transformées par ondelettes sont utilisées pour réduire le poids des fichiers numériques. C'est notamment le cas de certains formats de compression d'images numériques, tel le jpeg2000. La transformation en ondelette d'une matrice consiste à diviser cette matrice en une matrice dite d'approximation ou matrice L, et une matrice dite de détails ou matrice H. Chacune de ces matrices contient environ moitié moins de valeurs que la matrice d'origine. La matrice d'approximation L correspond à une « image réduite » de la matrice d'origine, et la matrice de détails H correspond aux détails enlevés pour réduire la taille de la matrice. Dans le cadre des transformations par ondelettes en deux dimensions, il est possible d'utiliser la transformation par ondelettes horizontalement ou verticalement. Usuellement, la transformation est effectuée dans un sens (par exemple, verticalement) pour obtenir une matrice d'approximation de type L et une matrice de détails de type H, puis dans le sens inverse (par exemple, horizontalement) sur chacune des matrices de type L et H. L'application de cette seconde transformée sur la matrice d'approximation de type L génère une matrice d'approximation de type LL et une matrice de détails de type LH. L'application de cette seconde transformée sur la matrice de détails de type H génère deux matrices de détails de type HL et de type HH. On appellera par la suite niveau d'ondelettes l'application successive de transformations dans les deux sens pour obtenir une matrice d'approximation LL et trois matrices de détails HL, LH et HH comme expliqué ci-dessus. Lors de l'utilisation d' ondelettes pour la compression image en deux dimensions, à l'issue de chaque niveau, les matrices de détails de type LH, HL et HH sont usuellement quantifiées pour réduire leur entropie, alors qu'un nouveau niveau d'ondelettes peut être appliqué à la matrice de type LL. Il est 3 3022064 ainsi possible d'appliquer autant de niveaux que nécessaire sur les matrices d'approximation de type LL successives. Le jpeg2000 utilise en outre une quantification scalaire à zone morte. 5 Certaines transformées par ondelettes sont sans perte ; cependant, l'application d'une quantification à chaque niveau d' ondelette conduit à des erreurs d'arrondis qui se cumulent à mesure que l'on avance dans les niveaux successifs, d'abord lors de la compression, puis lors de la restitution des fichiers numériques compressés. Ce problème d'arrondi ne se pose que lorsque 10 les matrices de détail type LH, HL, HH associées au niveau sont quantifiées. Le but de l'invention est donc de fournir un procédé pour réduire les erreurs d'arrondis lors de la compression d'un fichier numérique lors de l'utilisation d'une transformée par ondelettes. 15 Dans le texte présent, par mesure de simplification, sauf indication contraire, les valeurs numériques seront écrites en base 10, bien que les opérations soient prévues pour être effectuées sur les valeurs binaires. Lorsque les valeurs sont écrites en base 2, elles sont clairement indiquées comme telles ; ainsi, 1000 en 20 base 2 serait noté (1000)2. Un procédé selon l'invention, pour réduire l'entropie d'une matrice d'origine est caractérisé en ce que: - il comprend une étape utilisant une transformée par ondelettes de ladite 25 matrice d'origine en une matrice transformée ; - à chaque matrice de détails de chaque niveau d' ondelettes correspond un coefficient de quantification ; - le calcul de ladite transformée par ondelettes est effectué en virgule fixe en utilisant un premier nombre de digits au moins égal à 1 après la virgule, au moins pour chaque niveau d'ondelettes pour lequel au moins 4 3022064 l'un des coefficients de quantification des matrices de détail est strictement supérieur à 1. De préférence, le coefficient de quantification de chacune des sous-matrices de 5 détail d'un niveau d'ondelettes est inférieur ou égal à celui de la matrice de détails équivalente du niveau précédent. Il est aussi, de préférence, un quantificateur scalaire uniforme, c'est-à-dire unique pour chaque matrice de détails, quelle que soit la valeur divisée. 10 A l'issue du traitement d'un niveau d'ondelettes en nombres à virgules fixes, les valeurs des sous-matrices de détail peuvent être quantifiées selon chacun de leurs coefficients de quantification puis transformés en nombres entiers, c'est-à-dire en abandonnant les digits utilisés pour le calcul en virgule fixe. A l'issue de ce traitement d'un niveau d'ondelettes en nombres à virgules fixes, si un 15 nouveau niveau d'ondelettes est appliqué à la matrice d'approximation, les valeurs de ladite matrice d'approximation peuvent être transformées en nombres entiers si chacun des coefficients de quantification de chacune des matrices de détails du niveau d' ondelettes suivant est égal à 1, et être conservées en nombres à virgule fixe dans le cas contraire. A la fin du dernier 20 niveau, la dernière matrice d'approximation de type LL est transformée en nombre entier si le dernier niveau est traité en virgule fixe. Si au moins un des coefficients de quantification de chacune des matrices de détail du premier niveau est supérieur à 1, toutes les valeurs de la matrice 25 d'origine sont avantageusement transformées en nombres à virgules fixes avant le calcul du premier niveau de transformation en ondelettes. Si la matrice d'origine traitée est issue d'une transformation colorimétrique en nombres à virgules fixes avec une précision supérieure au premier nombre de digits, les nombres à virgules fixes s'obtiennent de préférence en diminuant le nombre de digits pour obtenir ledit premier nombre. Pour calculer une matrice restaurée, à partir de la matrice transformée le procédé comprend avantageusement une transformation par ondelettes inverse de la matrice transformée, le calcul de ladite transformée par ondelettes inverse étant effectué en nombre à virgule fixe en utilisant un deuxième nombre de digits au moins égal à 1 après la virgule, au moins pour chaque niveau d'ondelettes pour lequel au moins un des coefficients de quantification des matrices de détail de ce niveau est strictement supérieur à 1. Lors de la transformation inverse d'un niveau d'ondelettes traité en nombres à virgule fixe, les valeurs des matrices de détail peuvent être converties en nombres à virgules fixes et dé-quantifiées avant la transformation en ondelettes inverse. De même, si la matrice d'approximation de ce niveau est en entier, elle sera convertie en virgules fixes avant d'effectuer le niveau d'ondelettes inverse, qui donnera la matrice d'approximation restaurée qui sera utilisée au niveau suivant. La matrice restaurée est avantageusement obtenue en effectuant les transformations par ondelettes inverses, les dé-quantifications et les conversions entre nombres entiers et virgules fixes sur l'ensemble des niveaux disponibles. La matrice restaurée intermédiaire peut avantageusement être obtenue en effectuant les transformations par ondelettes inverses, les dé-quantifications et les conversions entre nombres entiers et virgules fixes sur un nombre de niveaux inférieur au nombre total de niveaux disponibles. Si le niveau d'ondelettes correspondant à la dernière transformation en ondelettes inverse effectuée est traité en nombres à virgules fixes, les nombres de la matrice 6 3022064 restaurée intermédiaire obtenue sont de préférence des nombres à virgule fixe avec une précision comprenant un nombre de digits égal au deuxième nombre de digits après la virgule. Pour le traitement ultérieur de la matrice restaurée intermédiaire, chacune des valeurs de cette matrice restaurée peuvent être 5 transformée en nombre entier. Si toutes les données compressées ne sont pas disponibles, on peut utiliser la matrice restaurée intermédiaire avec un nombre de niveaux correspondant aux niveaux dont l'ensemble des données est disponible. De même, pour une 10 application nécessitant une résolution inférieure à celle de la matrice restaurée, on peut utiliser la matrice restaurée intermédiaire avec le nombre de niveau le plus petit permettant d'atteindre au moins ladite résolution inférieure. Si le premier niveau d'ondelettes est traité en nombres à virgules fixes, les 15 nombres de la matrice restaurée obtenue peuvent être des nombres à virgule fixe avec une précision comprenant un nombre de digits égal au deuxième nombre de digits après la virgule. Pour le traitement ultérieur de la matrice ainsi restaurée, chacune des valeurs 20 de ladite matrice restaurée peut être transformée en nombre entier. La transformée par ondelette inverse peut être suivie par une transformée colorimétrique inverse en nombres à virgule fixe avec un nombre de digit supérieur à celui utilisé pour la transformée par ondelette inverse. 25 Pour réaliser le calcul à virgule fixe on peut décaler vers la gauche chaque valeur de la matrice de D digit. On peut alternativement multiplier chaque valeur de la matrice par 10, en base 2, élevé à la puissance D, c'est à dire par : (10D)2. 7 3022064 Lorsqu'on a fini les calculs en virgule fixe, de préférence, on décale vers la droite chaque valeur de la matrice du nombre D de digits ou on multiplie chaque valeur de la matrice par 10, en base 2, élevé à la puissance -D, c'est à dire par : (10-D)2. 5 Pour restaurer la matrice d'origine en une matrice restaurée à partir de la matrice transformée, le calcul de la transformée inverse par ondelettes est de préférence fait en virgule fixe, en utilisant un deuxième nombre de digits au moins égal à 1 après la virgule, au moins pour chaque niveau d' ondelettes 10 ayant au moins une matrice de détails ayant un coefficient de quantification supérieur à 1. Le premier et le deuxième nombre de digits peuvent être identiques. La matrice d'origine peut représenter, au moins partiellement, une image, par 15 exemple représenter l'une des composantes Y, Cb et Cr de l'image. De préférence, préalablement au calcul de la transformée par ondelettes on conserve les D premiers digits résultant de la transformée YCbCr. Avantageusement, la transformée YCbCr peut être effectuée avec une précision supérieure à D digits. Dans ce cas, la précision des données est 20 réduite pour être ramenée à D digits. La transformée par ondelettes peut être une transformée de CohenDaubechies-Feauveau (CDF) 5/3 avec procédé d'élévation (lifting scheme, en anglais). 25 Plusieurs modes d'exécution de l'invention seront décrits ci-après, à titre d'exemples non limitatifs, en référence aux dessins annexés dans lesquels : 8 3022064 - la figure 1 illustre un exemple d'image noir et blanc d'origine, formant une matrice de soixante-quatre pixels répartis en huit lignes de huit pixels chacune; 5 - la figure 2A illustre une matrice représentant l'image de la figure 1, dans laquelle chaque cellule contient une valeur littérale pour la luminance du pixel, indicée par la position de la cellule dans la matrice ; - la figure 2B illustre la même matrice d'origine X, dans laquelle chaque io cellule contient une valeur numérique d'origine, comprise entre 0 et 255, représentative de la luminance d'un pixel correspondant de l'image d'origine ; - les figures 2B, 3B, 4B, 5B, 6B; 7B 8B, 9B, 10B, 11B, 12B, 13B et 14B 15 illustrent un procédé de l'art antérieur et les figures 2C, 3C, 4C, 5C, 6C; 7C, 8C, 9C, 10C, 11C, 12C, 13C, 14C et 15C illustrent un procédé selon l'invention ; - les figures 3A et 3B illustrent respectivement les sous-matrices de 20 valeurs littérales et numériques à l'issue d'une première étape de calcul du premier niveau d'ondelettes, qui consiste en une transformation par ondelettes verticale, appliqué aux valeurs de la matrice de la figure 2B dans le procédé de l'art antérieur ; 25 - les figures 4A et 4B illustrent respectivement les sous-matrices de valeurs littérales et numériques obtenues lors d'une deuxième étape de calcul du premier niveau d'ondelettes, qui consiste en une transformation par ondelettes horizontale, appliqué aux valeurs numériques de chacune des sous-matrices de la figure 3B dans le 30 procédé de l'art antérieur ; 9 3022064 - les figures 5B et 6B illustrent les sous-matrices obtenues respectivement après une transformation par ondelettes verticale, puis une transformation par ondelette horizontale, lors du calcul du deuxième 5 niveau d'ondelettes dans le procédé de l'art antérieur; - La figure 7B illustre la quantification des sous-matrices, et représente donc l'ensemble des sous-matrices à l'issue de la transformation selon l'état de l'art antérieur ; 10 - La figure 8B illustre la concaténation des valeurs transformées et quantifiées par l'état de l'art antérieur au sein d'une matrice de même taille que la matrice d'origine ; 15 - la figure 2C illustre une étape préalable de décalage vers la gauche des valeurs de la matrice de la figure 2B, dans un procédé selon l'invention ; - les figures 3A et 3C illustrent respectivement les sous-matrices de 20 valeurs littérales et numériques obtenues lors d'une première étape de calcul du premier niveau d'ondelettes, consistant en une transformation par ondelettes verticale appliquée aux valeurs de la matrice d'origine X illustrée à la figure 2B dans un procédé selon l'invention; 25 - les figures 4A et 4C illustrent respectivement les sous-matrices de valeurs littérales et numériques obtenues lors d'une deuxième étape de calcul du premier niveau d'ondelettes, consistant en une transformation par ondelettes horizontale appliquée aux valeurs numériques des sous-matrices L I et Hl illustrées à la figure 3C dans un procédé selon 30 l' invention ; 10 3022064 - les figures 5C et 6C illustrent respectivement les sous-matrices obtenues après la première étape consistant en une transformation par ondelettes verticale et la deuxième étape consistant en une transformation par ondelettes horizontale, lors du calcul du deuxième niveau d' ondelettes dans un procédé selon l'invention; - La figure 7C illustre la quantification des sous-matrices transformées, et représente donc l'ensemble des sous-matrices à l'issue de la transformation dans un procédé selon l'invention ; 10 - La figure 8C illustre la concaténation des valeurs transformées et quantifiées dans un procédé selon l'invention au sein d'une matrice de même taille que la matrice d'origine ; 15 - les figures 10B, 11B, 12B et 13B illustrent différentes étapes pour la restitution de la matrice XRZ illustrant les luminances restaurées des pixels de l'image de la figure 1; - les figures 10C, 11C, 12C, 13C, et 14C illustrent différentes étapes pour 20 la restitution de la matrice XR illustrant les luminances restaurées des pixels de l'image de la figure 1 ; - les figures 14B et 15C illustrent les matrices d'erreurs, respectivement dans le procédé de l'art antérieur et dans le procédé selon l'invention; 25 dont chaque cellule comprend la différence entre la valeur restaurée et la valeur d'origine correspondante. La description d'un procédé selon l'invention va être faite dans le domaine de la compression des images numériques. Ainsi, la figure 1 illustre une image 30 d'origine en noir et blanc constituant une matrice image de 8 lignes et 8 colonnes. 11 3022064 La figure 2A illustre la matrice X représentant les valeurs de luminances des pixels de l'image d'origine, chaque cellule de la matrice disposée à l'intersection d'une ligne horizontale i (si après, ligne) et d'une ligne verticale 5 j (ci-après, colonne) comprend une valeur littérale xij représentant la luminance d'un pixel situé, dans l'image d'origine, sur la même ligne i et la même colonne j. La figure 2B illustre la même matrice X, dans laquelle chaque valeur littérale a 10 été remplacée par la valeur numérique correspondante pour l'image d'origine 1. Ces valeurs sont codées en entiers non signés sur 8bits, c'est-à-dire entre 0 et 255. A titre d'exemple la valeur du pixel le plus sombre est x28=25 et celle du plus clair est x17=224. L'application de la formule de calcul de l'entropie donne une entropie de 5,625 pour cette matrice. 15 La transformée par ondelettes utilisée dans les exemples qui vont suivre est une transformée de Cohen-Daubechies-Feauveau (CDF) 5/3 avec procédé d'élévation (lifting scheme, en anglais). Celle-ci ne diffère des ondelettes utilisées dans le Jpeg2000 c'est à dire CDF 5/3 sans perte (lossless) et CDF 9/7 20 avec pertes (lossy), que par le nombre de valeurs adjacentes utilisées pour les détails et les facteurs associés. Les ondelettes de type CDF 5/3 peuvent être appliquée à une matrice Y dont les valeurs sont indicées comme défini plus haut. 25 Une étape d'ondelettes verticales s'obtient avec les équations suivantes : Calcul de la matrice de détails : hm, n - Y2m, n Y2m-1, n Y2m+1, n / 2 12 3022064 pour tout m compris entre 1 et la moitié de la hauteur de Y, pour tout n sur la largeur de Y. Par exemple, on obtient la matrice H1Z à partir d'origine X (voir figure 3B). Calcul de la matrice d'approximation : 5 imn Y2m-1, n + [ hm-i, n + hm, n / 4 pour m inférieur ou égal à la moitié de la hauteur de Y, + 1 si la hauteur de Y est impaire, pour tout n sur la largeur de Y. A titre d'exemple, on obtient la matrice L1Z à partir des matrices d'origine X et H1Z (voir figure 3B). 10 Une étape d'ondelettes horizontale s'obtient avec les équations suivantes : Calcul de la matrice de détails : hm, n = Ym, 2n - [ Ym, 2n-1 + Ym, 2n+1 ]/2 pour tout n compris entre 1 et la moitié de la largeur de Y, pour tout m sur la hauteur de Y. A titre d'exemple, on obtient HHIZ à partir de H1Z, et on obtient 15 LH1Z à partir de L1Z. Calcul de la matrice d'approximation : 'mn - Ym, 2n-1 + hm, n-1 + hm, n / 4 pour n inférieur ou égal à la moitié de la largeur de Y, + 1 si la largeur de Y est impaire, pour tout m sur la hauteur de Y. A titre d'exemple, on obtient HL1Z à 20 partir de H1Z et de HH1Z, et on obtient LL1Z à partir de L LZ et de LH1Z. Chaque valeur est systématiquement arrondie à l'entier à la fin d'un calcul. Dans les exemples qui vont suivre, la règle suivante a été adoptée pour les arrondis : arrondi selon la règle définie plus haut, 0.5étant arrondi à 1 et -0.5 à 25 -1 Ainsi, 2,49 sera arrondi à 2, 2,5 à 3 et 2,3 à 2. Afin de permettre le calcul de certaines lignes et colonnes au bord des matrices, des valeurs virtuelles qui ne sont pas traitées en elles-mêmes mais permettent de traiter les autres sont ajoutées selon les règles suivantes : 13 3022064 - Les valeurs virtuelles situées juste au-dessus et juste à gauche de chacune des matrices et de chacune des matrices restaurées sont nulles. Ainsi, la matrice de détails H1Z illustrée en figure 3B pourra avoir parmi ses valeurs virtuelles H1Z01 = 0 ou H1Z08 = 0. De la même manière, la matrice de détails 5 restaurée H1RZ illustrée en figure 12B aura parmi ses valeurs virtuelles H1RZ01 = 0 ou H1RZ08 = 0, la matrice de détails LH1Z aura parmi ses valeurs virtuelles LH1Z10 = 0 ou LH1Z40 = 0, et la matrice de détails restaurée LH1RZ aura parmi ses valeurs virtuelles LH1RZ10 = 0 ou LH1RZ40 = O. - Les valeurs virtuelles situées juste à droite et juste au-dessous de chacune io des matrices et de chacune des matrices restaurées sont respectivement égales à la valeur située deux cellules à gauche et deux cellules au-dessus. On aura ainsi parmi les valeurs virtuelles de X x91 = x71, parmi celles de L1Z, L1Z19 = L1Z17, parmi celles de L1RZ, L1RZ19 = L1RZ17 et parmi celles de LL1RZ LL1RZ51 = LL1RZ3i. 15 Dans les exemples illustrés, on applique à chaque sous-matrice générée au niveau N d'ondelettes un facteur de quantification Q respectif, qui sera dans cet exemple le même pour chacune des matrices de détail d'un même niveau : - pour le premier niveau N=N1=1, Q=Q1=Quil---QHL1-QHm=4 20 - pour le deuxième niveau N=N2=2, Q=Q2= QLH2-QHL2-QHH2-2 ; Les figures 3B et 4B illustrent l'application du premier niveau Ni d'ondelettes à la matrice d'origine X, selon le procédé de l'art antérieur, avant application des facteurs de quantification. 25 Ainsi, les sous-matrices L1Z et H1Z, illustrées en figure 3B, chacune de quatre lignes de huit pixels, illustrées aux figures 3A et 3B, sont obtenues par l'application d'ondelettes verticales à la matrice d'origine X. 14 3022064 Ainsi, la transformée des premiers pixels x11 et x21 des deux premières lignes se fait selon le calcul suivant : La valeur correspondante de la sous-matrice de détails H1Z est : H1Z11 =x21 - (x11 + x31) / 2 = 121 -(116 + 110)/ 2 =8 5 La valeur correspondante de la sous-matrice d'approximation LIZ est : L1Z11 = x 1+ (H1Zoi + H1Z11) / 4 = 116 + (0 + 8)/ 4 = 118 La transformée des premiers pixels x31 et x41 des deux lignes suivantes se fait selon le calcul suivant : 10 La valeur correspondante de la sous-matrice H1Z est : H1Z21 =x41 - (x3i + x5i) / 2 = 115 - (110 + 126) / 2 = -3 La valeur correspondante de la sous-matrice LIZ est : L1Z21 = x31+ (H1Zii + H1Z21) / 4 = 110 + (8 + (-3)) / 4 = 111 15 Des ondelettes horizontales sont ensuite appliquées à chacune des sous- matrices L1Z et H1Z, de sorte que l'on obtient respectivement, tel qu'illustré à la figure 4B : - pour la sous-matrice LIZ, deux nouvelles sous-matrices LL1Z et LH1Z ; et, 20 - pour la sous-matrice H1Z, deux nouvelles sous-matrices HL1Z et HH1Z. La figure 5B illustre le résultat de l'application d'une première étape d'un deuxième niveau N2 d'ondelettes à la sous-matrice LL1Z, obtenue précédemment ; il en résulte les deux sous-matrices L2Z et H2Z. La figure 6B 25 illustre le résultat de l'application d'une deuxième étape de ce deuxième niveau d'ondelettes sur les matrices L2Z et H2Z, il en résulte les sous-matrices LL2Z, LH2Z, HL2Z et HH2Z de la figure 6B. On peut alors soit re-faire un niveau, soit conserver la matrice LL2Z, soit la 30 quantifier. On choisit ici de conserver la matrice LL2Z identique sans appliquer de troisième niveau d' ondelettes. La sous-matrice LL2Z sera donc conservée telle quelle, ne fera pas l'objet d'un nouveau niveau d'ondelettes et sera stockée sous la forme d'une matrice LL2QZ ayant des valeurs identiques. On applique ensuite les quantifications respectives pour chaque niveau. Ainsi, on obtient les sous-matrices quantifiées LH1QZ, HL et HH1QZ en divisant respectivement chacune des valeurs des sous-matrices LH1Z, HL1Z et HH1Z par leurs facteurs de quantification QLH1, QHL1 et Qffli, égaux au facteur Q1 du premier niveau N1 et en en prenant l'arrondi selon la règle définie plus haut. De même, on obtient les sous-matrices quantifiées LH2QZ, HL2QZ et HH2QZ en divisant respectivement chacune des valeurs des sous-matrices LH2Z, HL2Z et HH2Z par leurs facteurs de quantification 0 QHL2Z et Q1 1112Z, égaux au facteur Q2 du deuxième niveau N2 et en en prenant l'arrondi selon la règle définie plus haut. L'ensemble de ces matrices quantifiées est illustré à la figure 7B. La transformée TZ de la matrice X par la méthode de l'art antérieur est obtenue en transformant les valeurs de la matrice d'origine X en valeurs des sous-matrices LL2QZ, LH2QZ, HL2QZ, HH2QZ, LH1QZ, HL et HH1QZ. Ces nouvelles valeurs peuvent être stockées dans des emplacements spécifiques. Elles peuvent aussi se substituer aux valeurs de la matrice X pour former une matrice de même taille. La figure 8B illustre un exemple d'un tel placement de valeurs. La diminution du nombre de valeurs différentes dans cette matrice transformée par rapport à la matrice d'origine permet d'augmenter la probabilité 16 3022064 d'apparition de chacune d'entre elles. L'entropie de Shannon selon la formule précédente de cette nouvelle matrice est donc inférieure à celle de la matrice d'origine : elle est de 4,641. 5 On va maintenant décrire un procédé selon l'invention. Un procédé selon l'invention consiste à conserver, durant le calcul de la transformée par ondelettes, D digits après la virgule (en notation binaire) soit D deuximales. Pour rendre le calcul plus rapide, plutôt que de l'effectuer en I o virgule flottante, il est effectué en virgule fixe. Pour ce faire, on peut multiplier chaque valeur de la matrice d'origine X par une coefficient de décalage égal à 2D, c'est à dire par (10D)2. On peut aussi décaler les valeurs, notées en binaire, de D digits vers la gauche. On ne conserve ensuite que la partie entière des valeurs augmentées ainsi obtenues, de sorte que les nombres manipulés sont 15 des entiers dont les D derniers digits représentent les D deuximales et les autres digits représentent la partie entière du nombre d'origine. Dans l'exemple illustré, on conserve trois digits. La matrice XD des valeurs augmentées est illustrée à la figure 2C. Chacune des valeurs XDij de la matrice 20 XD est donc huit fois plus grande que les valeurs Xij de la matrice X d'origine: XDij = 8 x Xij les valeurs binaires utilisées dans le calcul informatique ont donc été multipliées par (1000)2, c'est-à-dire que le coefficient de décalage est égal à 8. 25 Par la même transformée utilisée précédemment pour obtenir la matrice transformée TZ, on obtient, à partir de la matrice augmentée XD, par une première application d'abord d'ondelettes verticales, les sous-matrices L I et Hl illustrées à la figure 3C, puis d'ondelettes horizontale les sous matrices LL1, LH1, HL1 et HH1, illustrées à la figure 4C. On obtient ensuite, par une 30 deuxième application à la sous-matrice LL1 d'ondelettes, d'abord verticales, les 17 3022064 sous-matrices L2 et H2, illustrées à la figure 5C, puis horizontales, les sous-matrices LL2, LH2, HL2 et HH2, illustrées à la figure 6C. On applique ensuite les quantifications respectives pour chaque niveau et on divise les valeurs obtenues par 8. On peut alternativement décaler de trois digits vers la droite les valeurs binaires obtenues après division par le facteur de quantification respectif. Ainsi, on obtient les sous-matrices quantifiées LH1Q, HL et HH1Q 10 illustrées à la figure 7C en divisant respectivement chacune des valeurs des sous-matrices LH1, HL1 et HH1 par 8 fois leurs facteurs de quantification Qun, QHLI et Quii, soit pour chaque matrice 8xQl et en prenant l'arrondi selon la règle définie plus haut. De même, on obtient les sous-matrices quantifiées LH2Q, HL2Q et HH2Q illustrées à la figure 7C en divisant 15 respectivement chacune des valeurs des sous-matrices LH2, HL2 et HH2 par 8 fois leurs facteurs de quantification 0 QHL2 et QHH2, soit pour chaque matrice 8xQ2 et en prenant l'arrondi selon la règle définie plus haut. Enfin, la sous-matrice LL2Q illustrée à la figure 7C est obtenue en re-transformant la matrice LL2 en entier, donc en divisant les valeurs de la matrice LL2 par 8 et 20 en prenant l'arrondi selon la règle définie plus haut. L'ensemble de ces matrices transformées est illustrée en figure 7C. La transformée T de la matrice par le procédé selon l'invention est obtenue en transformant les valeurs de la matrice d'origine X en valeurs des sous-matrices 25 LL2Q, LH2Q, HL2Q, HH2Q, LH1Q, HL et HH1Q. Ces nouvelles valeurs peuvent être stockées dans des emplacements spécifiques. Elles peuvent aussi se substituer aux valeurs de la matrice X pour former une matrice de même taille. La figure 8C illustre un exemple d'un tel placement de valeurs. 18 3022064 La diminution du nombre de valeurs différentes dans cette matrice transformée par rapport à la matrice d'origine permet là encore de réduire l'entropie de Shannon. Selon la formule précédente, l'entropie de Shannon de cette nouvelle matrice transformée est de 4,520. On va maintenant décrire les étapes de restauration, c'est à dire le processus d'obtention de la matrice restaurée XR représentant la version restaurée de l'image, d'abord selon le procédé de l'invention, puis selon le procédé de l'art antérieur. 10 On calcule d'abord les matrices de détail dé-quantifiées, à partir des matrices de détail quantifiées, en multipliant leurs valeurs par leur coefficient de quantification respectif, puis par 8, afin d'obtenir le même niveau de précision que lors de la transformée par ondelettes. Ainsi, on obtient les sous-matrices, 15 illustrées à la figure 9C : - LL2R, dont les valeurs sont égales à celles de la sous-matrice LL2Q, multipliées par 8 ; - LH2R, HL2R et HH2R, dont les valeurs sont respectivement égales à celles des sous-matrices LH2Q, HL2Q et HH2Q, multipliées par 8xQui2, 8xQFEL2 et 20 8XQHH2, soit 8xQ2, c'est à dire simplement par 16, chacun des facteurs de quantification de niveau 2 étant égal à Q2, soit 2 ; et, - LH1R, HL1R et HH1R, dont les valeurs sont respectivement égales à celles des sous-matrices LH1Q, HL1Q et HH1Q, multipliées par 8xQui1, 8xQ111,1 et 8xQHll1, soit 8xQ1, c'est à dire simplement par 32, chacun des facteurs de 25 quantification de niveau 1 étant égal à Ql, soit 4 ; et, On applique ensuite les ondelettes inverses de niveau 2 aux sous-matrices LL2R, LH2R, HL2R et HH2R afin d'obtenir la sous-matrice LL1R, illustrée à la figure 11C. 30 19 3022064 On applique ensuite les ondelettes inverses de niveau 1 aux sous-matrices LL1R, LH1R, HL1R et HH1R afin d'obtenir la matrice LLOR illustrée à la figure 13C, les valeurs LLORij de cette matrice étant arrondies selon la règle définie plus haut. 5 On divise ensuite chacune des valeurs LLORij de la matrice LLOR par 8, ou bien on décale de 3 digits vers la droite les valeurs binaires correspondantes, et on arrondit chacune des valeurs XRij ainsi obtenue selon la règle définie plus haut. On obtient ainsi, la matrice restaurée XR des valeurs XRij, illustrée à la 10 figure 14C. Chaque valeur XRij représente la luminance d'un pixel d'une image restaurée, par un procédé selon l'invention, de l'image d'origine. Chaque valeur Eij de la matrice E, représentée à la figure 15C, représente les écarts entre les valeurs XRij de la matrice restaurée XR et les valeurs Xij de la 15 matrice d'origine. La moyenne de ces écarts, dans l'exemple illustré, est d'environ 0,78. Il est également possible de ne restituer que partiellement l'image, en n'effectuant qu'une partie des niveaux de transformations par ondelettes 20 inverse. On peut par exemple ne restituer qu'un quart de l'image en utilisant une matrice restaurée intermédiaire. Une telle matrice de taille 4x4 peut être obtenue en divisant chacune des valeurs LL1R1ij de la matrice LL1R illustrée en figure 11C par 8, ou bien en décalant ces valeurs binaires de 3 digits vers la droite. La matrice restaurée intermédiaire ainsi obtenue correspond à une 25 image restaurée réduite. Cette possibilité de décompression progressive, appelée scalabilité, permet d'avoir un aperçu de l'image lorsque toutes les données ne sont pas disponibles. Ceci peut être avantageusement utilisé lors du téléchargement d'un fichier image lourd, pour décompresser l'image jusqu'au dernier niveau entièrement disponible avant l'arrivée complète de l'image. Ceci peut aussi permettre de ne décompresser l'image que jusqu'à la résolution nécessaire, par exemple pour afficher une vignette dans une galerie. La décompression partielle permet alors d'économiser des ressources en évitant les niveaux de décompression inutiles. On va maintenant décrire les étapes de restauration de l'image, à partir de la matrice transformée TZ, dans le procédé de l'art antérieur. On calcule d'abord les matrices de détail dé-quantifiées, à partir des matrices de détail quantifiées, en multipliant leurs valeurs par leur coefficient de quantification respectif. Ainsi, on obtient les sous-matrices, illustrées à la figure 9B : - LL2RZ, dont les valeurs sont égales à celles de la sous-matrice LL2QZ, cette matrice n'ayant pas été modifiée par un niveau d'ondelettes; - LH2RZ, HL2RZ et HH2RZ, dont les valeurs sont respectivement égales à celles des sous-matrices LH2QZ, HL2QZ et HH2QZ, multipliées par leurs facteurs de quantification QLH2, QHL2 et Qm12, soit pour chaque matrice Q2, c'est à dire par 2, le facteur de quantification Q2 de niveau 2 étant égal à 2 ; et, - LH1RZ, HL1RZ et HH1RZ, dont les valeurs sont respectivement égales à celles des sous-matrices LH1QZ, HL1QZ et HH1QZ, multipliées par leurs facteurs de quantification 0 ,LH1, QHLI et Qmi, soit pour chaque matrice Q 1, c'est à dire par 4, le facteur de quantification Q1 de niveau 1 étant égal à 4. On applique ensuite les ondelettes inverses de niveau 2 aux sous-matrices LL2RZ, LH2RZ, HL2RZ et HH2RZ afin d'obtenir, à l'issue d'une transformée par ondelettes inverse horizontale les sous-matrices L2RZ et H2RZ illustrées en figure 10B, puis, à l'issue d'une transformée par ondelettes inverse verticale des sous-matrices L2RZ et H2RZ, la sous-matrice LL1RZ, illustrée à la figure 11B. On applique ensuite les ondelettes inverses de niveau 1 aux sous-matrices LL1RZ, LH1RZ, HL1RZ et HH1RZ afin d'obtenir, à l'issue d'une transformée par ondelettes inverse horizontale les sous-matrices L1RZ et H1RZ illustrées en figure 12B, puis, à l'issue d'une transformée par ondelettes inverse verticale des sous-matrices L1RZ et H1RZ, la matrice restaurée XRZ, illustrée à la figure 13B, les valeurs XRZij de cette matrice étant arrondies selon la règle définie plus haut. Chaque valeur XRZij représente la luminance d'un pixel d'une image restaurée, selon le procédé de l'art antérieur, de l'image d'origine. Chaque valeur EZij de la matrice EZ, représentée à la figure 14B, représente les écarts entre les valeurs XRZij de la matrice restaurée XRZ et les valeurs Xij de la matrice d'origine X. La moyenne de ces écarts, dans l'exemple illustré, est d'environ 1,56. Ainsi, on constate que, pour l'exemple illustré, les écarts obtenus par le procédé de l'art antérieur, sont environ 2 fois plus élevés que ceux obtenus par un procédé selon l'invention (0,78). Dans le même temps, on constate que l'entropie de la matrice T transformée selon l'invention (4,520) est légèrement inférieure à celle de la matrice TZ transformée selon l'état de l'art antérieur (4,641) et significativement inférieure à celle de la matrice originale (5,625). Un procédé selon l'invention permet donc de réduire l'entropie d'une matrice tout en obtenant une restitution plus exacte des valeurs de la matrice que par des méthodes de réduction d'entropie utilisées dans l'art antérieur. Bien sûr, l'invention n'est pas limitée aux exemples qui viennent d'être décrits. Ainsi, l'image en noir est blanc peut être l'illustration d'une composante R, V ou B d'une image RVB. Chaque composante Y, Cb ou Cr d'une image RVB ayant subi une transformée YCbCr, et principalement la composante de luminance Y, peut aussi être traitée de la même façon que l'image noir et blanc de l'exemple décrit ci-dessus. Elle peut plus généralement représenter n'importe quelle composante d'une image, pouvant également être issue d'un espace CMJN, ou d'une quelconque transformation colorimétrique obtenue à partir des composantes RVB, avec ou sans perte. De plus, si les ondelettes ont été d'abord appliquées verticalement pour chaque niveau, il est aussi possible de les appliquer, pour chaque niveau, d'abord horizontalement, puis verticalement. Il est aussi possible que le nombre de digits supplémentaires, c'est-à-dire le nombre de deuximales, utilisés dans le calcul à virgule fixe soit différent lors du calcul des valeurs Tij de la transformée T, de celui utilisé pour restaurer les valeurs XRij à partir de la transformée. De préférence, le nombre de digit sera plus important si le nombre de niveaux d'ondelettes est plus important. Dans l'exemple illustré, chacune des valeurs des matrices de détail était simultanément quantifiée et divisée par le coefficient de décalage ; au contraire, la quantification peut ne pas se faire simultanément à la division par le coefficient de décalage. En outre, la quantification et/ou la division par le coefficient de décalage peut se faire à chaque fois qu'une sous-matrice correspondante est obtenue. 23 3022064 Dans l'exemple illustré, la précision de calcul était supérieure à la précision des données d'entrée, qui étaient des nombres entiers. Dans le cas où les données d'entrées ont une précision supérieure à la précision de calcul, en particulier si elles sont issues d'une transformation colorimétrique ayant une 5 précision de calcul supérieure celle des ondelettes, la matrice XD s'obtient en réduisant le nombre de deuximales et non en l'augmentant. De la même manière, à la décompression, si les données doivent être traitées en sortie avec une précision supérieure à celle de la transformée par ondelettes 10 inverse, par exemple pour une transformation colorimétrique, la précision des données peut être directement augmentée pour être identique à celle de la transformation ultérieure. Bien sûr, l'invention peut également s'appliquer à des matrices à une ou 15 plusieurs dimensions. Dans ce cas, un niveau d'ondelettes s'obtient par une suite de transformations selon chacune des dimensions. REVENDICATIONS1. Procédé de compression d'une image numérique comprenant une étape pour réduire l'entropie d'une composante de ladite image, représentée sous forme d' un e matrice d'origine (X), caractérisé en ce que : - il comprend une étape utilisant une transformée par ondelettes de ladite matrice d'origine en une matrice transformée (T) ; - à chaque niveau d'ondelettes correspond un coefficient de quantification pour chacune des matrices de détail; - le calcul de ladite transformée par ondelettes est effectué en virgule fixe en utilisant un premier nombre (D) de digits au moins égal à 1 après la virgule (D2:1), au moins pour chaque niveau d'ondelettes pour lequel au moins un des coefficients de quantification correspondant à chacune des matrices de détail est strictement supérieur à 1. 2. Procédé selon la revendication 1, caractérisé en ce chacun des coefficients de quantification des matrices de détail de chacun des niveaux d'ondelettes est inférieur ou égal au coefficient de la matrice équivalente du niveau précédent, mais toujours supérieur ou égal à 1 ; 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que, à l'issue du traitement d'un niveau d'ondelettes en nombres à virgules fixes, les valeurs des matrices de détail sont quantifiées selon ledit coefficient de quantification associé à ladite matrice de détail puis transformées en nombres entiers, c'est-à-dire en abandonnant les (D) digits utilisés pour le calcul en virgule fixe. 4. Procédé selon la revendication 3, caractérisé en ce que le quantificateur utilisé est un quantificateur scalaire uniforme, c'est-à-dire unique pour chaque matrice quelle que soit la valeur quantifiée. 5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce que, à l'issue du traitement d'un niveau d'ondelettes en nombres à virgules fixes, les valeurs de la matrice d'approximation sont transformées en nombres entiers si chacun des coefficients de quantification de chacune des matrices de détail dudit niveau suivant est égal à 1, et sont conservées en nombres à virgule fixe dans le cas contraire. 6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que, si io au moins un des coefficients de quantification des matrices de détail du premier niveau est supérieur à 1, toutes les valeurs de la matrice d'origine (X) sont transformées en nombres à virgules fixes avant le calcul dudit premier niveau de transformation en ondelettes. 15 7. Procédé selon la revendication 6, caractérisé en ce que, lorsque la matrice traitée est issue d'une transformation colorimétrique en nombres à virgules fixes avec une précision supérieure au premier nombre de digits (D), les nombres à virgules fixes s'obtiennent en diminuant le nombre de digits pour obtenir ledit premier nombre. 20 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que pour calculer une matrice (XR) restaurée, ou une matrice restaurée intermédiaire, à partir de la matrice transformée (T), il comprend une transformation par ondelettes inverse de ladite matrice transformée 25 (T), le calcul de ladite transformée par ondelettes inverse étant effectué en nombre à virgule fixe en utilisant un deuxième nombre de digits au moins égal à 1 après la virgule, au moins pour chaque niveau d'ondelettes pour lequel au moins un des coefficients de quantification de chacune des matrices de détail est strictement 30 supérieur à 1. 26 3022064 9. Procédé selon la revendication 8, caractérisé en ce que, lors de la transformation inverse d'un niveau d'ondelettes traité en nombre à virgules fixes, les valeurs d'une matrice sur laquelle la transformation inverse s'applique sont converties en nombres à virgules fixes, si les 5 valeurs de ladite matrice sont initialement des nombres entier. 10. Procédé selon l'une des revendications 8 et 9, caractérisé en ce que, lors de la transformation inverse d'un niveau d'ondelettes traité en nombres à virgule fixe, les valeurs des matrices de détail sont converties en nombres à virgules fixes et dé-quantifiées avant la transformation en ondelettes inverse. 11. Procédé selon l'une des revendications 8 à 10, caractérisé en ce que la matrice restaurée (XR) est obtenue en effectuant les transformations par ondelettes inverses, les dé-quantifications et les conversions entre nombres entiers et virgules fixes sur l'ensemble des niveaux disponibles. 12. Procédé selon l'une des revendications 8 à 11, caractérisé en ce que, si le premier niveau d'ondelettes est traité en nombres à virgules fixes, les nombres de la matrice restaurée (XR) obtenue sont des nombres à virgule fixe avec une précision comprenant un nombre de digits égal au deuxième nombre de digits après la virgule. 13. Procédé selon la revendication 12, caractérisé en ce que, pour le traitement ultérieur de la matrice restaurée (XR), chacune des valeurs de ladite matrice restaurée est transformée en nombre entier. 14. Procédé selon l'une des revendications 8 à 10, caractérisé en ce que la matrice restaurée intermédiaire est obtenue en effectuant les transformations par ondelettes inverses, les dé-quantifications et les 27 3022064 conversions entre nombres entiers et virgules fixes sur un nombre de niveaux inférieur au nombre total de niveaux disponibles. 15. Procédé selon la revendication 8 à 10 et 14, caractérisé en ce que, si le 5 niveau d'ondelettes correspondant à la dernière transformation en ondelettes inverse effectuée est traité en nombres à virgules fixes, les nombres de la matrice restaurée intermédiaire obtenue sont des nombres à virgule fixe avec une précision comprenant un nombre de digits égal au deuxième nombre de digits après la virgule. 10 16.Procédé selon la revendication 15, caractérisé en ce que, pour le traitement ultérieur de la matrice restaurée intermédiaire, chacune des valeurs de ladite matrice restaurée est transformée en nombre entier. 15 17. Procédé selon l'une des revendications 14 à 16, caractérisé en ce que, si le toutes les données compressées ne sont pas disponibles, on utilise la matrice restaurée intermédiaire avec un nombre de niveaux correspondant aux niveaux dont l'ensemble des données est disponible. 20 18. Procédé selon l'une des revendications 14 à 17, caractérisé en ce que, pour une application nécessitant une résolution inférieure à celle de la matrice restaurée (XR), on utilise la matrice intermédiaire avec le nombre de niveau le plus petit permettant d'atteindre au moins ladite 25 résolution inférieure 19. Procédé selon l'une des revendications 8 à 18 caractérisé en ce que, lorsque la transformée par ondelette inverse est suivie par une transformée colorimétrique inverse en nombres à virgule fixe avec un 30 nombre de digit supérieur à celui utilisé pour la transformée par ondelette inverse, les valeurs de la matrice restaurée sont directement 28 3022064 converties en nombres à virgules fixes avec la précision de la transformée. 20. Procédé selon l'une des revendications 1 à 19, caractérisé en ce que 5 pour réaliser le calcul à virgule fixe de la transformée on décale vers la gauche chaque valeur de la matrice du nombre D de digit. 21. Procédé selon l'une des revendications 1 à 19, caractérisé en ce que pour réaliser le calcul à virgule fixe de la transformée, on multiplie 10 chaque valeur de la matrice par 10, en base 2, élevé à la puissance D, c'est à dire par : (10D)2. 22. Procédé selon l'une des revendications 1 à 21, caractérisé en ce que lorsqu'on a fini les calculs en virgule fixe de la transformée, on décale 15 vers la droite chaque valeur de la matrice du nombre D de digits. 23. Procédé selon l'une des revendications 1 à 21, caractérisé en ce que lorsqu'on a fini les calculs en virgule fixe de la transformée, on multiplie chaque valeur de la matrice par 10, en base 2, élevé à la 20 puissance -D, c'est à dire par : (10-D)2. 24. Procédé selon l'une des revendications 8 à 23, caractérisé en ce que les premier (D) et deuxième nombre de digits sont identiques. 25 25. Procédé selon l'une des revendications 1 à 24, caractérisé en ce que la matrice représente, au moins partiellement, une image. 26. Procédé selon l'une des revendications 1 à 25, caractérisé en ce que la matrice représente l'une des composantes Y, Cb et Cr de l'image. 30 29 3022064 27. Procédé selon l'une des revendications précédentes, caractérisé en ce que la transformée par ondelettes est une transformée de CohenDaubechies-Feauveau (CDF) 5/3 avec procédé d'élévation.