FR 3083042 A1 20191227 FR 1855649 A 20180625 Procédé de décodage d'une image, procédé de codage, dispositifs, équipement terminal et programmes d'ordinateurs associés 1. Domaine de l'invention Le domaine de l'invention est celui de la compression de signal, en particulier d'une image numérique ou d'une séquence d'images numériques, divisée en blocs de pixels ou d'un signal audio découpé en trames. L'invention concerne plus particulièrement la transformation d'un bloc de pixels, issu ou non d'une prédiction. Elle trouve notamment son application dans un contexte de codage par transformées, notamment par compétition de transformées. Le codage/décodage d'images numériques s'applique notamment à des images issues d'au moins une séquence vidéo comprenant : - des images issues d'une même caméra et se succédant temporellement (codage/décodage de type 2D), - des images issues de différentes caméras orientées selon des vues différentes (codage/décodage de type 3D), - des composantes de texture et de profondeur correspondantes (codage/décodage de type 3D), - etc. La présente invention s'applique de manière similaire au codage/décodage d'images de type 2D ou 20 3D. L'invention peut notamment, mais non exclusivement, s'appliquer au codage vidéo mis en oeuvre dans les codeurs vidéo actuels AVC (pour « Advanced Video Coding », en anglais) et HEVC (pour « High Efficiency Video Coding », en anglais) et leurs extensions futures (VVC etc), et au décodage correspondant. 25 L'invention peut aussi s'appliquer au codage audio mis en oeuvre dans les codeurs actuels, tels que MPEG-4 AAC (pour « Advanced Audio Coding », en anglais) et leurs extensions futures, et au décodage correspondant. 2. Présentation de l'art antérieur 30 La compression de séquences d'images et de vidéo ou encore de signaux audio fait appel à des transformations. Pour une vidéo, celles-ci sont généralement appliquées sur un signal original comprenant les intensités de pixels d'une image ou sur un signal résiduel, différence entre les pixels de l'image et la prédiction qui en est faite pour un bloc donné. On écrit la transformation d'un signal x par une transformée U sous la forme d'un produit matriciel : 35 x=U*x 2 X représente le signal dans le domaine transformé, appelé parfois le signal dans le domaine fréquentiel. Le signal x est représenté sous la forme d'un vecteur de taille M, U est une matrice de taille M par M et le vecteur X résultant a M valeurs. 5 Dans le cas du codage/décodage d'une séquences d'images selon un schéma de compression basé blocs, une image de la séquence est découpée en blocs constitués de N colonnes de M lignes. Le signal x représente un bloc de pixels ou pixels résiduels. Il comprend donc N vecteurs colonnes de dimension M. Dans cette configuration, la transformée U est appliquée sur chacun des vecteurs, pour donner en sortie un signal transformé X qui possède N colonnes de M lignes également. 10 Pour une application dans le domaine vidéo, le nombre de lignes M vaut typiquement entre 4 et 64. La norme de compression HEVC par exemple, utilise des transformées de tailles variées, comprises entre 4 et 32. On notera qu'en audio, les vecteurs utilisés ont généralement des dimensions plus importantes, typiquement comprises entre 64 et 2048. La norme AAC de la norme MPEG-4 utilise ainsi des 15 transformées de dimensions comprises entre 128 à 1024. Quel que soit le domaine applicatif considéré, il est souhaitable que les transformées utilisées réalisent une reconstruction parfaite et donc fidèle au signal d'origine, car elles doivent s'appliquer au codeur et au décodeur. Plus précisément, une propriété désirée est l'orthogonalité, c'est-à-dire que la matrice transformée inverse soit égale à sa transposée : U-1=Ut. Ainsi Ut* U= U * Ut =I qui est la matrice identité de taille M par M. Notons que sur les processeurs à virgules fixes, on dispose de matrices écrites sous la forme entière et que la propriété de reconstruction parfaite n'est qu'approximative. On parle de quasi-orthogonalité. Dans ce cas, le produit de la matrice de transformée par son inverse donne une matrice qui présente une diagonale contenant des valeurs quasi constantes les valeurs hors diagonale étant négligeables par rapport aux valeurs de la diagonale. Dans un contexte de codage vidéo ou audio, on utilise la plupart du temps des transformées de type trigonométrique ou DU (pour « Discrete Trigonometric Transforms », en anglais). Par exemple, la DCT de type 2 est très employée en vidéo et la DCT de type 4 est très utilisée en audio pour calculer une transformée modifiée appelée MDCT (pour « Modified Discrete Cosine Transform », en anglais) spécifiée par la norme AAC. Huit DST et DCT sont connues de l'homme de métier, quelques équations sont présentées ci-dessous. Elles sont décrites par exemple dans l'article de Markus Puschel, intitulé « Algebraic Signal Processing Theory: Cooley-Tukey Type Algorithms for DCTs and DSTs », publié dans la revue IEEE Transactions on Signal Processing, Volume: 56, Issue: 4, en avril 2008. 3 On connait aussi des transformées qui ont été optimisées selon un critère débit distorsion, comme par exemple les transformées de type KLT (pour « Karhunen Loeve Transforms », en anglais). Pour qu'un codeur ou un décodeur puisse appliquer une transformation à un signal x, il est nécessaire de stocker les coefficients de la matrice de transformation associée. Pour une transformation U qui 5 s'applique à un signal de dimension M, la matrice de transformation comprend M lignes et M colonnes, on doit stocker M*M coefficients. Une alternative à l'application de la matrice de transformées consiste à écrire un algorithme rapide spécifique à la transformée, qui calcule les coefficients à appliquer à la volée. Cet algorithme est spécifique à la transformée désirée et nécessite également le stockage de coefficients en plus de 10 l'algorithme lui-même. On connaît par exemple des implémentations rapides de la DCT de type 4 et la DCT de type 2. Néanmoins, quelle que soit la solution adoptée, l'utilisation de transformations nécessite un espace mémoire qui augmente avec le nombre et la tailles des transformations utilisées par le codeur/décodeur. 15 Afin de réduire l'espace mémoire utilisé, il est connu d'approximer une transformation orthogonale ou quasi-orthogonale V par une transformation, dite de référence, U stockée en mémoire. Ainsi la transformation V peut s'écrire sous la forme suivante : V=U*A (1) Ainsi, pour calculer la transformation V, sans avoir à en stocker les coefficients ou une 20 implémentation rapide, on applique la transformée U après avoir réalisé une opération d'ajustement A du signal à transformer. Cette opération d'ajustement peut être réalisée en appliquant une matrice A qui comprend elle aussi M lignes et M colonnes. Ainsi deux étapes sont nécessaires pour transformer le signal x avec la transformée V : 1. Y=A*x (2) 25 2. X= U*Y= U*A*x (3) Ainsi, si on dispose d'une implémentation rapide de U on peut l'utiliser pour calculer V, moyennant l'application préalable de la matrice A d'ajustement. Néanmoins, pour que cette solution permette de réaliser une économie de ressources de stockage et de calculs, il est nécessaire que la matrice d'ajustement A contienne peu de coefficients non nuls. 30 De la sorte, son stockage nécessitera un espace mémoire réduit et le calcul additionnel de l'ajustement comprendra un nombre raisonnable d'opérations. 4 Par inversion matricielle on peut définir la matrice d'ajustement comme suit : A= U-1* V (4) En ne prenant que les valeurs, en valeur absolue, au-dessus d'un certain seuil, on peut imposer un certain nombre de zéros dans une version approchée de A. 5 Par exemple lorsque la transformée V est une DCT de type 8 (DCT8), on peut utiliser la DCT de type 3 (DCT3) comme transformation de référence U. Les valeurs des coefficients de la matrice de transformation V=DCT8 sont présentées en relation avec la Figure 1. Les valeurs des coefficients de la matrice de transformation de référence U=DCT3 sont présentées en relation avec la Figure 2. On calcule la matrice d'ajustement A= U-1* V et on obtient les valeurs présentées en relation avec la 10 Figure 3. On constate que la matrice d'ajustement A contient beaucoup de coefficients de valeurs faibles en valeur absolue. Elle peut donc être approximée par seuillage. Par exemple avec un seuil de 0.013, les valeurs de A inférieures à ce seuil en valeur absolue sont mises à zéro et on obtient une approximation de A, appelée A', qui permet de réaliser un calcul approché d'une DCT8. La Figure 4 15 présente les valeurs de la matrice A' dans cet exemple. On appelle V' la matrice obtenue par le produit matriciel suivant : V'= U*A' (5) Dans l'exemple précédent, il s'agit d'une approximation de la DCT8. La matrice A' ne contient que 51 valeurs non nulles. Par conséquent, pour calculer le produit A'*x, 20 seulement 51 opérations de multiplication et 35 additions sont requises, alors que le produit matriciel de U par A nécessitait 16*16=256 multiplications et 16*15 additions. Ainsi on obtient une méthode rapide de calcul, en s'appuyant sur une matrice d'ajustement « creuse » (qui contient beaucoup de zéros) et une transformée de référence U=DCT3 qui dispose d'un algorithme rapide, tel que celui décrit par exemple, section 4.4.3, dans l'ouvrage de Britanak, intitulé « Discrete Cosine and Sine 25 Transforms », première édition, publié par Academic Press en 2006. Cet algorithme s'applique notamment à la DCT2 de taille 16 et donc à la DCT3, qui est la transposition de la DCT2. Il utilise typiquement 72 additions et 44 multiplications. On notera qu'il existe aussi une implémentation rapide de la transformation DCT 8 et que pour M = 16, elle nécessite 150 multiplications et 146 additions. 30 En utilisant une matrice d'ajustement il est possible de calculer une approximation de la DCT8 à partir d'une implémentation de la DCT3 largement implémentée et disponible dans les algorithmes de compression vidéo et d'une matrice d'ajustement A' telle que celle précédemment décrite. Cette 5 approche nécessite, pour l'exemple précédent, 72+35=107 additions et 44+51=95 multiplications ce qui est nettement moins coûteux que l'algorithme rapide de la DCT8 exacte. Cette approche est décrite dans le document D/ET-30066, intitulé « Complexity Reduction for Adaptive Multiple Transforms (AMT) using Adjustment Stages » publié sur le lien http://phenix.int- 5 evry.fr/jvet/doc end user/documents/10 San%20Diego/wg11, en avril 2018. La transformée DCT8 est approximée par le produit matriciel d'une DCT3 avec une matrice d'ajustement A', dont le nombre de coefficients est réduit à 4 par lignes au maximum. Ce document propose des structures de matrices d'ajustement creuses présentant 60, 124 et 252 coefficients non nuls, pour a pproximer une transformée dans les tailles 16, 32 et 64 respectivement. 10 Au total, pour une transformée dans les trois tailles, un total de 60+124+252=436 cellules mémoire est nécessaire pour le stockage. 3. Inconvénients de l'art antérieur Dans un contexte de compétition de transformées, plusieurs transformées doivent être mises à disposition du codeur/décodeur. Typiquement, pour le modèle d'exploration JEM (pour «Joint 15 Exploration Model », en anglais) développé conjointement par les groupes de normalisation [TU-T VCEG et ISO/IEC MPEG JEM, disponible en suivant le lien htLps://jvet.hhi.fra unhofer.del, 4 types de transformées trigonométriques sont utilisés (DCT5, DCT8, DST1 et DST7), nécessitant le stockage de 4 fois le nombre de total de cellules mémoire indiqué ci-dessus. Ainsi, bien que la méthode proposée par l'art antérieur permette une économie des ressources de 20 calcul et de stockage nécessaires à l'approximation d'une transformée, le coût de stockage induit reste très important lorsque plusieurs transformées sont mises en compétition ou lorsqu'elles sont de grande taille. En outre, les processeurs comprenant des mémoires à accès rapide sont très coûteux. Il est donc important de limiter autant que possible la quantité de mémoire utilisée par un circuit intégré tout 25 en offrant la possibilité de calculer des transformées bien adaptées au signal à traiter. 4. Objectifs de l'invention L'invention vient améliorer la situation. L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur Plus précisément, un objectif de l'invention est de proposer une solution qui permette de 30 réduire encore la quantité de ressources requises pour le stockage des transformations. 5. Exposé de l'invention Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé 6 de décodage d'au moins d'un signal numérique, ledit signal étant découpé en vecteurs de M éléments, à partir de données codées, avec Ni entier supérieur ou égal à 3, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un vecteur courant : Décodage du vecteur courant à partir des données codées ; 5 Transformation du vecteur courant en un vecteur transformé par applications successives d'une matrice de transformation de référence, comprenant M lignes et M colonnes et d'une matrice d'ajustement comprenant M lignes et M colonnes, ladite matrice d'ajustement comprenant au plus un nombre prédéterminé K de coefficients non nuls par ligne, avec K entier supérieur ou égal à 3, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre de 10 la diagonale de la matrice; Reconstruction du signal numérique à partir du vecteur transformé; Selon l'invention, l'étape de transformation comprend en outre, pour l'application de la matrice d'ajustement, les sous-étapes suivantes : Lecture dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie 15 supérieure respectivement inférieure de la matrice d'ajustement; Utilisation modifiée des coefficients lus, un coefficient non nul de la partie supérieure respectivement inférieure de la matrice étant déduit d'un coefficient lu dans la partie inférieure respectivement supérieure, par une relation prédéterminée qui conserve la valeur absolue du coefficient lu. 20 L'invention propose ainsi de résoudre le problème de stockage des coefficients des matrices de transformation, en choisissant d'approximer une transformée par l'application successive d'une matrice d'ajustement dont les coefficients des diagonales supérieures se déduisent de ceux des diagonales inférieures et d'une transformée de référence. Elle introduit donc une dépendance des coefficients de part et d'autre de la diagonale qui permet de réduire de façon significative le nombre 25 de coefficients non diagonaux à stocker en mémoire. Seuls les coefficients non nuls de la partie inférieure respectivement supérieure de la matrice d'ajustement sont stockés en mémoire, un coefficient lu étant réutilisé pour déduire la valeur d'un coefficient de la partie supérieure respectivement inférieure de la matrice. De la sorte, une économie de stockage substantielle est réalisée. 30 L'invention concerne aussi un procédé de codage d'un signal numérique, ledit signal étant découpé en vecteurs de M éléments, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un vecteur courant : - Obtention du vecteur courant ; - Transformation du vecteur courant en un vecteur transformé, par applications successives d'une matrice d'ajustement comprenant M lignes et M colonnes et d'une matrice de transformation de 7 référence, comprenant M lignes et M colonnes, ladite matrice d'ajustement comprenant au plus un nombre prédéterminé K de coefficients non nuls par ligne, avec K entier supérieur ou égal à 3, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre du coefficient diagonal ; 5 Encodage du vecteur transformé destiné à produire des données codées représentatives du signal numérique; Selon l'invention, l'étape de transformation comprend, pour l'application de la matrice d'ajustement, les sous-étapes suivantes : Lecture dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie 10 inférieure, respectivement supérieure, de la matrice d'ajustement ; Utilisation modifiée des coefficients lus, les coefficients de la partie supérieure respectivement inférieure de la matrice étant déduits des coefficients lus dans la partie inférieure respectivement supérieure, selon une relation prédéterminée qui conserve leurs valeurs absolues. Les avantages d'un tel procédé de codage sont identiques à ceux du procédé de décodage. 15 Les différents modes ou caractéristiques de réalisation mentionnés ci-après peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux caractéristiques du procédé de décodage et/ou du procédé de codage défini ci-dessus. Selon un aspect de l'invention, les coefficients Ak+1,k, avec k entier compris entre 0 et M-2, de la première diagonale inférieure sont liés aux coefficients Ak,k+1 de la première diagonale 20 supérieure par des valeurs absolues identiques et des signes opposés. Un avantage est de faire apparaître une structure tridiagonale dans la matrice d'ajustement avec une symétrie entre les coefficients adjacents d'un coefficient diagonal. Il en résulte une simplification du calcul de la transformation, car il nécessite peu de mémoire rapide, les coefficients symétriques étant proches l'un de l'autre. Il est en effet possible de garder en mémoire dans un registre la valeur 25 du coefficient Ak+1,k utilisée pour le calcul de l'élément courant Yk du vecteur de sortie pour le calcul de l'élément suivant Yk+1 à partir du symétrique Ak, Ak+1 de ce coefficient. Selon un autre aspect de l'invention, lorsque le nombre prédéterminé K de coefficients non nuls par ligne est supérieur ou égal à 4, les coefficients Ak+3,k+1 et Ak,k+2, avec k entier compris entre O et M-3, des deuxièmes diagonales inférieure et supérieure sont liés par des valeurs 30 identiques. Un avantage est que les coefficients de ces deuxièmes diagonales contribuent à améliorer les performances de la transformée d'ajustement, pour un surcoût de stockage modéré. 8 Selon encore un autre aspect de l'invention, lorsque le nombre prédéterminé K de coefficients non nul par ligne est supérieur ou égal à 6, les coefficients Ak+5,k+2 et Ak,k+3, avec k entier compris entre 0 et M-6, des troisièmes diagonales inférieure et supérieure ont des valeurs identiques. Avec ces troisièmes diagonales les performances de la transformée d'ajustement sont encore 5 améliorées. Selon un autre aspect de l'invention, lorsque le nombre prédéterminé K de coefficients non nuls par ligne est supérieur ou égal à 4, les coefficients Ak+2,k et Ak,k+2, avec k entier compris entre 0 et M-2, des deuxièmes diagonales inférieure et supérieure sont liés par des valeurs identiques. 10 Un avantage de cette structure est qu'elle est plus simple et introduit moins de distance entre les coefficients non nuls symétriques, ce qui permet de réduire les besoins de mémoire rapide pour les calculs de la transformation. Selon encore un autre aspect de l'invention, pour la diagonale inférieure, respectivement supérieure, comprenant des coefficients non nuls et la plus éloignée de la diagonale, les coefficients lus sont 15 associés à des indices de lignes paires respectivement impaires de la matrice d'ajustement, les coefficients impairs respectivement pairs étant mis à zéro. Un avantage de cette structure est qu'elle permet d'ajouter des coefficients non nuls sur une diagonale supérieure et inférieure supplémentaire, et ainsi d'améliorer le compromis distance orthogonalité de la transformée obtenue, pour un surcoût de stockage divisé par deux. 20 Selon un autre aspect de l'invention, la mémoire comprenant les coefficients d'une matrice d'ajustement comprenant 2M lignes et 2M colonnes, l'étape de lecture comprend la lecture d'un coefficient sur deux dans la diagonale et d'un coefficient non nul sur deux dans les diagonales inférieures respectivement supérieures selon un ordre de parcours croissant des indices des coefficients. 25 Un avantage de ce mode de réalisation est qu'il permet de mutualiser les coefficients de la matrice d'ajustement stockée en mémoire pour coder/décoder des vecteurs de données de tailles différentes. Il permet donc d'économiser encore plus d'espace mémoire dans le cas d'un codage/décodage qui prévoit de traiter des vecteurs de tailles différentes. C'est par exemple le cas lorsqu'une image est partitionnée en blocs selon un schéma de partitionnement de type « quadtree ». Le codeur comme 30 le décodeur sont alors amener à appliquer des transformées de tailles multiples. L'invention concerne également un dispositif de décodage adapté pour mettre en oeuvre le procédé de décodage selon l'un quelconque des modes particuliers de réalisation définis ci-dessus. Ce dispositif de décodage pourra bien sûr comporter les différentes caractéristiques relatives au 9 procédé de décodage selon l'invention. Ainsi, les caractéristiques et avantages de ce dispositif de décodage sont les mêmes que ceux du procédé de décodage, et ne sont pas détaillés plus amplement. Selon un mode particulier de réalisation de l'invention, un tel dispositif de décodage est compris dans un équipement terminal d'utilisateur. 5 L'invention concerne également un dispositif de codage adapté pour mettre en oeuvre le procédé de codage selon l'un quelconque des modes particuliers de réalisation définis ci-dessus. Ce dispositif de codage pourra bien sûr comporter les différentes caractéristiques relatives au procédé de codage selon l'invention. Ainsi, les caractéristiques et avantages de ce dispositif de codage sont 10 les mêmes que ceux du procédé de codage, et ne sont pas détaillés plus amplement. Selon un mode particulier de réalisation de l'invention, un tel dispositif de codage est compris dans un équipement terminal ou un serveur. L'invention concerne aussi un signal portant un train binaire comprenant des données codées 15 représentatives d'au moins une image, ladite image étant divisée en blocs de pixels traités dans un ordre défini, les données codées comprenant, pour un bloc courant, une information représentative d'un index d'une transformée appliquée à ce bloc dans une liste de transformées prédéterminé. Selon l'invention, les données codées comprennent en outre une information représentative d'une autorisation ou d'une interdiction d'une remise en cause de ladite liste pour le bloc suivant, et, 20 sur réception dudit signal, un décodeur est apte à valider une remise en cause de ladite liste en fonction de la valeur de ladite information. L'invention concerne en outre un équipement terminal comprenant un dispositif de décodage selon l'invention et/ou un dispositif de codage selon l'invention. L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la 25 mise en oeuvre des étapes d'un procédé de codage d'une séquence d'images numérique tel que décrit précédemment, lorsque ce programme est exécuté par un processeur et un programme d'ordinateur comportant des instructions pour la mise en oeuvre des étapes d'un procédé de décodage d'une séquence d'images numérique tel que décrit précédemment, lorsque ce programme est exécuté par un processeur 30 Ces programmes peuvent utiliser n'importe quel langage de programmation. Ils peuvent être téléchargés depuis un réseau de communication et/ou enregistrés sur un support lisible par ordinateur. L'invention se rapporte enfin à des supports d'enregistrement, lisibles par un processeur, intégrés ou non au dispositif de codage d'une image ou d'une séquence d'images et au dispositif de 35 décodage selon l'invention, éventuellement amovible, mémorisant respectivement un programme 10 d'ordinateur mettant en oeuvre un procédé de codage et un programme d'ordinateur mettant en oeuvre un procédé de décodage, tel que décrits précédemment. 6. Liste des figures D'autres avantages et caractéristiques de l'invention apparaîtront plus clairement à la lecture 5 de la description suivante d'un mode de réalisation particulier de l'invention, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1 présente les coefficients d'une transformée DCT8 de taille 16x16 ; la figure 2 présente les coefficients d'une transformée DCT3 de taille 16x16; la figure 3 présente les coefficients d'une matrice d'ajustement A de la DCT3 permettant de 10 calculer la transformée DCT8 de taille 16x16 comme le produit matriciel de A par la DCT3, selon l'art antérieur ; la figure 4 présente les coefficients d'une matrice d'ajustement A' « creuse », qui réalise une approximation de A, selon l'art antérieur ; la figure 5 présente un exemple de matrice d'ajustement A' « creuse » comprenant des 15 coefficients entiers relatifs compris entre -256 et 256 ; la figure 6 présente un exemple de structure de matrice d'ajustement à 6 coefficients non nuls par ligne selon un premier mode de réalisation de l'invention ; la figure 7 présente un exemple numérique de matrice d'ajustement à 6 coefficients non nuls par ligne selon ce premier mode de réalisation de l'invention ; 20 - la figure 8 présente un exemple de structure de matrice d'ajustement à 4 coefficients non nuls par ligne selon un deuxième mode de réalisation de l'invention ; la figure 9 présente un exemple numérique de matrice d'ajustement présentant une structure à 4 coefficients non nuls par ligne selon ce deuxième mode de réalisation; la figure 10 présente un exemple de structure simplifiée de matrice d'ajustement à 5 25 coefficients non nuls par ligne selon un troisième mode de réalisation de l'invention; la figure 11 présente un exemple numérique de matrice d'ajustement présentant une structure à 5 coefficients non nuls par ligne selon ce troisième mode de réalisation; la figure 12 illustre différents exemples de compromis entre Orthogonalité / Distance en fonction d'un nombre K = 4, 5 ou 6 coefficients non nuls par ligne ; 30 - la figure 13 illustre un exemple de structure de matrice à 6 coefficients non nuls par ligne, selon une première variante de réalisation de l'invention ; 11 la figure 14 illustre un exemple de structure de matrice à 4 coefficients non nuls par ligne, selon une deuxième variante de réalisation de l'invention ; la figure 15 illustre un exemple de structure de matrice d'ajustement de taille M/2xM/2 obtenue par prélèvement de coefficients dans une structure de taille MxM selon un quatrième 5 mode de réalisation de l'invention ; la figure 16 compare les performances Orthogonalité / Distance d'une matrice d'ajustement de dimensions 32x32 obtenue par prélèvement des coefficients d'une matrice 64x64 avec celle d'une matrice d'ajustement 32x32 obtenue selon le premier mode de réalisation de l'invention ; 10 - la figure 17 présente de façon schématique les étapes d'un procédé de codage selon un exemple de réalisation de l'invention ; la figure 18 décrit de façon plus détaillée l'étape de transformation d'un signal à coder, selon un exemple de réalisation de l'invention ; la figure 19 présente de façon schématique les étapes d'un procédé de décodage selon un 15 exemple de réalisation de l'invention ; la figure 20 décrit de façon plus détaillée l'étape de transformation d'un signal à décoder, selon un exemple de réalisation de l'invention ; la figure 21 compare les performances d'un procédé de codage selon l'invention avec un procédé de l'art antérieur ; 20 les figure 22 et 23 illustrent de façon schématique deux exemple de structure matérielle d'un dispositif de codage l'invention ; et la figure 24 et 25 illustrent de façon schématique deux exemples de structure matérielle d'un dispositif de décodage selon l'invention. 7. Description d'un mode de réalisation particulier de l'invention 25 On se place dans le cadre général de l'approximation d'une transformation orthogonale en vue de son application à un signal de dimension M, avec M entier non nul, à coder ou à décoder. Dans la suite de la description, on considère un signal issu d'une image numérique, mais l'invention n'est pas limité à cet exemple de réalisation et pourrait s'appliquer à d'autres types de signaux, comme par exemple des signaux audio. 30 Le principe général de l'invention repose sur le stockage en mémoire d'un sous-ensemble des coefficients non nuls d'une matrice d'ajustement « creuse » et sur l'utilisation de ces coefficients pour ajuster une matrice de transformation de référence U, connue du codeur et du décodeur, et afin de réaliser de façon moins complexe une approximation d'une matrice de transformation V. 12 Dans un exemple de réalisation particulier, nous présentons l'approximation d'une transformation de type V=DCT8 en se basant sur une transformation U=DCT3 ajustée par une transformation intermédiaire A'. Pour cibler une implémentation en virgule fixe, on veut écrire la matrice A' sous forme de nombres 5 entiers. Il est possible de revenir à une représentation en nombre flottants par division par un facteur de normalisation. Typiquement, dans ce mode de réalisation, on cible une représentation des coefficients de A' sur des valeurs inférieures ou égales à 256 en valeur absolue et on utilise un facteur de division égal à 256. L'approximation prend alors la forme suivante : 10 V'= U*A1/256 (6) Dans cet exemple, V est la matrice représentant la DCT8 de taille M=32, elle comprend donc M = 32 lignes et NI = 32 colonnes. U est la matrice représentant la transformation de référence DCT3 de taille M=32, elle comprend donc M = 32 lignes et M = 32 colonnes. On connaît, par exemple du logiciel de référence HEVC publié sous la forme d'une recommandation 15 ITU-T « H.265 Reference software for ITU-T H.265 high efficiency video coding », consultable à l'adresse https://www.itu.int/rec/T-REC-H.265.2/fr, une implémentation en virgule fixe de la DCT3 à l'aide d'un algorithme rapide, ou directement sous forme matricielle. Notons que la DCT3, la DST3, la DST2 et la DCT2 sont liées par des opérateurs de dualité! transposition qui permettent aisément d'obtenir une implémentation rapide d'une d'entre elles à partir d'un algorithme rapide d'une autre. 20 Par exemple, la matrice V est approximée par seuillage et on obtient la matrice V' de la Figure 5. Cette matrice V' comporte 193 coefficients non-nuls et 6 coefficients par ligne en moyenne. Ainsi en moyenne 6 multiplications et 5 additions sont nécessaires pour implémenter cette matrice. 193 valeurs de coefficients sont stockées en mémoire. Il s'avère que cette matrice approxime bien la DCT8. Pour mesurer cette approximation, deux 25 quantités peuvent être estimées : - Une première option consiste à mesurer une distance entre V=DCT8 et son approximation V', par exemple en calculant une erreur quadratique entre les coefficients des deux transformées, éventuellement après une pondération en fréquence. On désigne par Vk,n les coefficients de la matrice V (resp. V'k,n les coefficients de la matrice V') et on mesure l'erreur 30 quadratique sur la fréquence k, de la façon suivante : Ek rkreld [( - vk,')2] (7) 13 Ensuite on calcule la moyenne pondérée des Ek pour k=0...M-1, avec une fonction de pondération forte (proche de 1) pour k proche de zéro et faible (proche de zéro) pour k proche de M-1. Cette fonction de pondération peut de cette façon refléter le fait que l'on accorde plus d'importance aux basses fréquences qu'aux hautes. Par exemple, elle peut être 5 de la forme cose12. VA,1 _1) /. On appelle E la moyenne pondérée. Pour mesurer une distance entre V et V', on peut également, si on a connaissance des propriétés statistiques des signaux à transformer, se baser sur leur a utocorrélation comme présenté dans l'ouvrage de Britanak déjà cité, section 5.3.1, équation (5.38). - Une deuxième option consiste à évaluer une orthogonalité, c'est-à-dire une erreur de 10 reconstruction si on applique la transformation d'ajustement suivant son inverse qui est la transposée si on se limite au cas orthogonal : A'*A't. Pour mesurer l'orthogonalité, on propose de calculer l'erreur quadratique entre la matrice identité de taille MxM et le produit A'*A't. On appelle 0 cette mesure d'orthogonalité. Ces valeurs peuvent être représentées sur une échelle logarithmique en prenant 0'- 15 10*log10(0) et E'=-10*log10(E). La fonction log10 représente le logarithme en base 10. Selon les critères énoncés ci-dessus, on obtient pour la matrice V' de la Figure 5 -46 dB de mesure de proximité et -35 dB de mesure d'orthogonalité. L'invention cherche à proposer une matrice d'ajustement plus « creuse » que celle de l'art antérieur, sans compromis sur les performances de transformation et donc de codage ou de décodage. 20 Pour ce faire, si on souhaite améliorer ces deux métriques, on doit constituer un algorithme de recherche maximisant ces deux quantités en modifiant les coefficients de la matrice. Cet algorithme peut s'appuyer sur les techniques bien connues de descente du gradient, recuit simulé ou encore sur un algorithme génétique. Cela implique d'écrire une fonction pondérant les métriques de distance et orthogonalité, par exemple 25 sous une des formes suivantes : si on considère un facteur réel de pondération w entre 0 et 1, w=0.2 favorise l'orthogonalité, w=0.5 donne une meilleure proximité au détriment de l'orthogonalité. Avec ce facteur, on réalise une pondération qui peut être soit : - Sous forme linéaire : on cherchera alors à minimiser la quantité J=w*E+(1-w)*0 - Sur une échelle des décibels, on cherchera alors à minimiser la quantité J'-w*E'+(1-w)*Or 30 Selon un premier mode de réalisation de l'invention, on souhaite limiter à la fois le nombre de coefficients à stocker et le nombre de calculs maximum à réaliser par ligne. Par exemple, on limite à K = 6 coefficients par ligne au maximum. 14 Afin de réduire les coefficients à stocker on impose une symétrie autour de la diagonale principale. Les inventeurs ont validé ce principe sur de nombreux essais de structures, en plusieurs étapes successives : - Dans un premier temps, il a été validé qu'une structure diagonale était appropriée, en 5 constatant que les coefficients les plus importants se trouvent sur la diagonale ; - Dans un second temps, ils ont placé un certain nombre (5 si on veut 6 coefficients par ligne au maximum) de coefficients non nuls autour de la diagonale centrale. Afin de maximiser l'orthogonalité une structure de ligne par décalage de 2 coefficients a ensuite été validée. De plus, comme on souhaite que la matrice inverse, qui est aussi la transposée, possède au plus 10 6 coefficients par ligne, on ajoute cette contrainte ; - Dans un troisième temps, pour réduire les coefficients à stocker, ils ont imposé que les diagonales inférieures respectivement supérieures dépendent des diagonales supérieures respectivement inférieures. Selon ce premier mode de réalisation de l'invention, on obtient une matrice d'ajustement A', 15 présentant au maximum 6 coefficients non nuls par lignes. Si Ak,n représente le coefficient de la kième ligne et nième colonne, on désigne les coefficients suivants : - - Ak,k kl= Uk pour k=0,...M-2 - Ak,kk2-vk pour k=0,...M-3 20 - A2k,2k - Wk pour k=0,...M/2-1 - A3,0 = W (éventuellement), ou zéro. Les symétries entre coefficients de la partie supérieure et de la partie inférieure de la matrice A' sont ensuite imposées de la manière qui suit : - Ak,k+1 25 - Ak-k3,k+1= Ak,k-k2 (8) - Ak-k5,k+2- Ak,k-k3 Ainsi la matrice prend la forme illustrée par la Figure 5, c'est à dire que tous les coefficients de la diagonale supérieure sont égaux au signe près aux coefficients de la diagonale inférieure situés à une position symétrique par rapport à la diagonale principale (et vice versa). 30 Précisément, cette structure diagonale de matrice comprend M-4 lignes de 6 coefficients et 4 lignes de 4 coefficients, certains pouvant être nuls. En nombre de coefficients non-nuls distincts en valeur absolue, cette matrice possède en valeur absolue M+M-1+M-2+(M/2)=7M/2-3 coefficients. Soit pour M=32, comme présenté ci-dessus, 109 15 coefficients sont à mémoriser. Les coefficients restants de la matrice, soit 32*32-109= 915 coefficients sont nuls. Par rapport aux structures de matrices d'ajustement décrites dans le document 30066 précédemment cité, on a donc réduit le nombre de coefficients stockés, de 124 à 109 coefficients. 5 En revanche, la matrice A' de la Figure 6 comprend plus de coefficients non par ligne, ce qui lui permet de réaliser une approximation de la matrice V = DCT8, qui est de meilleure qualité. Elle présente aussi une plus grande orthogonalité. En effet, avec la structure de matrice d'ajustement A' qui vient d'être présentée, on peut choisir les valeurs des coefficients afin de minimiser les quantités E' et 0'. On obtient E'=-44.8 dB et 0'=-60.5 dB contre respectivement -44.2 dB et -59.5 dB pour 10 l'art antérieur. En relation avec la Figure 7, on présente un exemple concret de matrice d'ajustement A' selon la structure de la Figure 6. Pour appliquer cette matrice d'ajustement A' à un signal x, on calcule le produit matriciel Y=A'*x à une division près (elle correspond au multiplicateur de 256 dans notre cas). 15 De façon avantageuse, plutôt qu'effectuer classiquement le produit matriciel, il est équivalent et plus favorable de ne faire les calculs que sur les éléments non nuls de la matrice. En se basant sur la Figure 6, on réalise les opérations suivantes : YO= dO*x0 + u0*xl + vO*x2 + wO*x3 Y1-u0*x0 + dl*xl + ul*x2 + vl*x3 20 Y2= vO*x0 - ul*xl + d2*x2 + u2*x3 + v2*x4 + wl*x5 Y3= w_ x0 + vl*xl - u2*x2 + d3*x3 + u3*x4 + v3*x5 (9) Y4= v2*x2 - u3*x3 + d4*x4 + u4*x5 + v4*x6 + w2*x7 Y5= wO*x2 + v3*x3 - u4*x4 + d5*x5 + u5*x6 + v5*x7 Y6= v4*x4 - u5*x5 + d6*x6 + u6*x7 + v6*x8 + w3*x9 25 Etc, jusque Ym-i=w13*xm_a+v29*xm_3-u30*xm_2+d31*xm-i Ce calcul réalise à l'identique le calcul matriciel présenté plus haut, mais il est plus simple en nombre d'opérations du fait que la matrice A' comprend beaucoup de coefficients nuls. Ce calcul permet, grâce à l'invention de réutiliser des valeurs (u4 par exemple) qui s'appliquent sur 30 deux lignes consécutives (pour le calcul de Y4 et Y5). Ainsi ces valeurs peuvent être conservées dans 16 un registre de processeur pour limiter les échanges mémoires lors du calcul. Il en va de même pour les valeurs v (v3 par exemple) qui sont conservées pour des calculs de Y (Y3 et Y5) non adjacents. Ici encore, l'utilisation de registres permettra de modérer les échanges mémoires. Notons que dans le cadre d'une implémentation en virgule fixe, les signaux Y issus de la 5 transformation peuvent être ramenés, de façon classique, à une valeur entière comprenant moins de bits. Dans ce cas, on fera une approximation au plus proche entier pour chacune des valeurs, rk-(Yk+2b-1)»b ou b est le nombre de bits sur lequel on souhaite stocker le résultat de Y', approximation de Y. Le terme « »b » représente un décalage de b bits des valeurs représentées en virgule fixe. 10 Ensuite on applique la transformation de référence U qui est ici la DCT3 au signal Y obtenu, de sorte que le produit U*A' approxime la transformée DCT8. Avantageusement, la DCT3 est implémentée sous la forme d'un algorithme rapide pour gagner en opérations calculatoires. L'approximation de la DCT8 sur la base de la combinaison de la DCT3 et de la matrice d'ajustement 15 telle que présentée dans l'invention peut remplacer la DCT8, pour calculer une transformation proche de la DCT8. Pour calculer la transformation inverse, V-1, on applique la transformation inverse U-1 puis la matrice transposée de la matrice d'ajustement Art . Dans ce premier mode de réalisation, Ut =U-1 est la DCT3 inverse qui est égale à la DCT2. 20 En effet analytiquement V-1= (U*At1=A1-1*u-i,xt*. u ainsi Ut est appliquée au vecteur transformé X et l'ajustement transposé lui est ensuite appliqué. Selon un second mode de réalisation, on présente maintenant une deuxième structure de matrice d'ajustement, pour laquelle on impose de restreindre le nombre de coefficients non nuls par ligne à K =4, ceci afin de réduire davantage la quantité de stockage. 25 Dans ce cas, les coefficients de la matrice prennent la forme suivante : - A -k,k - d k pour k=0, M-1 - A -k,k-kl= Uk pour k=0, M-2 - A -2k,2k+2=Vk pour k=0,...M/2-1 Les symétries sont ensuite imposées de la manière qui suit : 30 - Ak-k I,k - Ak,k+ I (10) - Ak+3,k+1= Ak,k+2 17 La Figure 8 présente la structure d'ajustement à 4 coefficients de la matrice A' selon ce deuxième mode de réalisation de l'invention. Cette matrice comporte donc M+M-1+M/2-1 coefficients à stocker soit 5M/2-2 coefficients. Si M=32, alors 78 coefficients sont à mémoriser, ce qui représente une économie substantielle par rapport à 5 l'art antérieur qui stocke 124 coefficients. En optimisant les coefficients pour minimiser les valeurs de distance E' et d'orthogonalité O' présentées précédemment, on obtient par exemple une matrice qui prend les valeurs illustrées par la Figure 9. Elle a une orthogonalité O' de -57.20 dB et une distance E' de -44.27 dB. Elle est donc meilleure en 10 distance que la solution de l'art antérieur 30066, mais est un peu moins bonne pour ce qui est de l'orthogonalité. Néanmoins on reste à des valeurs très correctes, qui permettent une reconstruction presque parfaite pour des signaux vidéo codés sur une profondeur de 8-9 bits comme souvent rencontré en codage vidéo. Selon un troisième mode de réalisation de l'invention, on impose une contrainte de 5 15 coefficients non nuls par ligne et une structure matricielle plus simple. A cette fin, on définit ses coefficients comme suit : - A - .k,k = d k pour k=0,...M-1 - Ak,k+1= Uk pour k=0,...M-2 - A nk,kk 2 - Vk pour k=0,...M-3 20 Les symétries sont ensuite imposées de la manière qui suit : - Ak+1,k=- Ak,k+1 - Ak+ 2,k= Ak,k+2 On a donc une symétrie entre les premières diagonales inférieure et supérieure et entre les 25 deuxièmes diagonales inférieure et supérieure, mais des relations plus simples entre les coefficients autour de la diagonale. La structure obtenue est illustrée par la Figure 10. Ainsi cette structure nécessite 3M-3 coefficients, soit 93 valeurs à stocker dans le cas M=32. En relation avec la Figure 11, on présente un exemple de valeurs concrètes de coefficients d'une matrice d'ajustement présentant la structure à 5 coefficients qui vient d'être présentée. 18 Les valeurs optimisées, présentées ci-dessous présentent une orthogonalité O' et une distance E' respectives de -60.1 dB et -44.98 dB, ce qui est significativement mieux que l'art antérieur présenté par 30066 pour 124 coefficients stockés. Bien sûr, plusieurs compromis distance / orthogonalité sont possibles lors de l'optimisation des 5 paramètres et conduisent à des réalisations de matrices différentes. En relation avec la Figure 12, on illustre différents exemples de compromis entre Orthogonalité! Distance en fonction d'un nombre K = 4, 5 ou 6 coefficients non nuls par ligne. On valide ainsi que le principe de réduction du nombre de coefficients non nuls permet d'offrir de bons compromis Orthogonalité / Distance en contraignant plus ou moins ces deux mesures de 10 performance par la recherche de coefficients adaptés. On vérifie aussi que l'augmentation du nombre de coefficients non nuls permet d'obtenir des meilleurs compromis Orthogonalité/Distance au prix d'un coût de stockage plus élevé. Enfin, la valeur K = 4 semble conduire aux meilleurs compromis entre performances de transformation et coût de stockage. On présente maintenant des exemples de structures alternatives de matrices d'ajustement. 15 Selon la transformation à a pproximer, d'autres structures de matrices peuvent être adoptées. En relation avec la Figure 13, on présente une structure de matrice à 6 coefficients non nuls par ligne, selon laquelle les coefficients des diagonales secondaires supérieure et inférieure sont décalés par rapport à la structure du premier mode de réalisation. En relation avec la Figure 14, une telle structure peut également être modifiée pour réduire 20 le nombre de coefficients à 4 par ligne. Ainsi les coefficients wk peuvent être mis à zéro, et un coefficient vk sur deux peut être mis à zéro. De plus les symétries, tout en étant conservées peuvent être modifiées par exemple au prix d'un changement de signe. Ainsi une structure de matrice à 4 coefficients peut être dérivée simplement d'une structure à 6 coefficients sans changement important. 25 L'invention s'applique également à des matrices de taille inférieures. Par exemple pour une taille 16, on prendra le quart supérieur à gauche, de taille 16 par 16, des matrices définies précédemment pour la taille 32. Pour des tailles 64, la matrice sera prolongée par l'ajout de coefficients, par exemple d32 à d63, u30 30 à u62 et v15 à v30. On décrit maintenant un quatrième mode de réalisation de l'invention, selon lequel on mutualise les coefficients stockés pour plusieurs matrices d'ajustement de tailles distinctes d'une 19 même transformée de référence._L'objectif est de_réduire encore l'espace mémoire requis pour le stockage des matrices de transformations, par rapport aux modes de réalisation présentés précédemment. Dans les trois premiers modes de réalisation on a imposé des structures de matrices d'ajustement 5 spécifiques pour chaque dimension M par M. Par exemple, pour la structure de matrice de la Figure 8, selon le deuxième mode de réalisation, on a 5M/2-2 coefficients à stocker et les empreintes de stockage sont les suivantes : - Pour une taille de transformée de 16, la matrice d'ajustement contient 38 valeurs distinctes en valeur absolue. 10 - Pour une taille de transformée de 32, la matrice d'ajustement contient 78 valeurs distinctes en valeur absolue. - Pour une taille de transformée de 64, la matrice d'ajustement contient 158 valeurs distinctes en valeur absolue. Pour limiter l'impact mémoire, ce quatrième mode de réalisation propose de réutiliser les coefficients 15 d'une transformée de taille M pour construire la matrice de transformation de taille M/2. Par exemple, si on reprend la transformée de taille 32 de la figure 8, on peut réutiliser ses coefficients pour définir la structure d'ajustement de taille 16, comme illustré par la Figure 15. A cette fin, les coefficients de cette matrice d'ajustement sont prélevés de façon régulière dans la matrice d'ajustement de taille double (32). 20 - Les valeurs de la diagonale principale (dk) de la matrice 16 sont prises comme les valeurs d'indice paire de la matrice d'ajustement de taille 32, ce qui revient à prélever un coefficient sur 2 dans l'ordre des indices croissants ; - Les valeurs de la première diagonale supérieure sont prises comme les valeurs d'indice paire de la matrice d'ajustement de taille 32, ce qui revient à prélever un coefficient sur 2 dans 25 l'ordre des indices croissants ; - Les valeurs de la seconde diagonale supérieure sont prises comme les valeurs d'indice paire de la matrice d'ajustement de taille 32, ce qui revient à prélever un coefficient non nul sur deux, soit un coefficient sur 4 dans l'ordre des indices croissants. De ce fait, la matrice de taille 16 ne nécessite pas de stockage additionnel. 30 Elle possède donc une structure similaire à celle d'une matrice d'ajustement de taille 16 selon le premier mode de réalisation de l'invention, mais avec des valeurs modifiées. 20 Pour choisir les valeurs numériques des coefficients de cette paire de matrices deux solutions sont envisagées: - Soit on définit le compromis orthogonalité / distance (métrique 3 ou 3' du premier mode de réalisation) sur la matrice d'ajustement 32, puis on détermine indépendamment la matrice 5 d'ajustement 16 par décimation ; - Soit on optimise de façon combinée le compromis orthogonalité / distance par pondération des métriques relevées sur les deux tailles, l'ajustement de taille 16 étant déterminé par décimation. La pondération peut être alors de la forme p*3132+(1-2)3116. Avec 3'16 et 3'32 qui représentent les compromis orthogonalité / distance pour les deux tailles de matrice. Par 10 exemple, p=0.8 est une pondération convenable. La figure 16 illustre cette approche, dans le cas M=64 et l'optimisation combinée en vue d'obtenir un ajustement de taille 32. L'ajustement de taille 64, combiné avec une DCT3 de taille 64, donne une bonne approximation de la DCT8 de taille 64, l'ajustement de taille 32, combiné avec une DCT3 de taille 32, donne une bonne approximation de la DCT8 de taille 32. 15 On observe que les performances obtenues dans le plan orthogonalité / distance sont raisonnablement similaires, en ce sens où les versions combinées, par apprentissage conjoint de l'ajustement 64 et 32, ont des caractéristiques proches des versions optimisées individuellement. En procédant ainsi, on a réduit le stockage de 158+78=236 à 158 coefficients (-33%) sans perte majeure sur la qualité de l'approximation et donc la qualité du codage suivant l'application de 20 l'invention. Bien sûr, cette méthode de décimation s'applique également aux autres structures d'ajustement proposées plus haut. On procèdera plus généralement par décimation et décalage, le décalage permettant de sélectionner les indices de matrice d'ajustement pairs ou impairs. Généralisation 25 Les modes de réalisation sont basés sur l'approximation de DCT ou DST mais s'étendent à tous types de matrice orthogonales ou quasi-orthogonales si elles sont à virgule fixe. Ainsi une transformation de type KLT (Karhunen Loeve Transform) ou une transformation optimisée selon un critère débit distorsion, telle que celles décrites dans le document de Sezer et al., intitulé "Spa rse Orthonormal Transforms for Image Compression," publié dans les proceedings de la conférence IEEE ICIP, pp. 30 149-152, en 2008, peuvent également être approximées sous la forme d'un ajustement au sens de l'invention et une transformation trigonométrique disposant d'un algorithme rapide, comme la DCT de type 2 ou la DCT de type 4 par exemple. 21 L'invention qui vient d'être décrite permet donc d'approximer des transformées de sorte à économiser à la fois la quantité de coefficients à stocker en mémoire et le nombre d'opérations à effectuer pour appliquer cette transformée à un signal. En relation avec la Figure 17, on décrit maintenant un procédé de codage d'une image ou 5 d'une séquence d'images numériques (II) avec I représentant un indice entier compris entre 1 et L non nul, mettant en oeuvre l'invention. Une image (II) est découpée en blocs rectangulaires Mn* M, ou carrés lorsque Mh= M. Les blocs rectangulaires peuvent comporter un nombre différent de pixels que celui de l'exemple qui vient d'être décrit, par exemple 2, 4, 8, 16, 32 etc, voire un nombre impair. 10 En EO, on sélectionne un bloc C à traiter. En El, on détermine une prédiction P du bloc original C. Il s'agit d'un bloc de prédiction construit par des moyens connus, typiquement par compensation de mouvement (bloc issu d'une image de référence précédemment décodée) dans le cas d'une prédiction dite INTER, ou par prédiction INTRA (bloc construit à partir des pixels décodés immédiatement adjacents au bloc courant dans l'image ID). Les informations de prédiction liées à P 15 sont codées dans le train binaire TB ou fichier compressé FC. On suppose ici qu'il y a J modes de prédiction possibles MPI, MP2,..., MP), avec J entier non nul, et que le mode de prédiction choisi pour le bloc C est le mode MP3. Au cours d'une étape E2, un résidu original x est formé, par soustraction x = C-P de la prédiction P du bloc courant C au bloc courant C. 20 Au cours d'une étape E3, le résidu x est transformé en un bloc résidu transformé, appelé RT, par une transformée. On précise que les étapes El et E2 sont optionnelles et que l'étape E3 peut aussi s'appliquer au bloc courant. La transformée est appliquée en deux étapes interchangeables de transformation verticale et horizontale. La transformation verticale opère sur les colonnes du bloc résidu original, alors que la 25 transformation horizontale opère sur les lignes du bloc transformé lors de la première étape. Les transformations verticales et horizontales sont adaptées pour traiter des blocs rectangulaires au sens large (donc y compris carrés) d'une taille définie de My par Mry pixels, avec Mv, Mh entiers non nuls, avec Mry colonnes et Mv lignes. Par exemple, on a Mh=4..64 et M=4.. .64 selon le logiciel de référence JEM déjà cité. Leurs matrices de transformation comprennent donc Mh lignes et Mh 30 colonnes, respectivement Mv lignes et Mv colonnes. Dans un système de compétition de transformées, les transformations horizontales et verticales sont sélectionnées parmi une pluralité de transformations prédéterminées To, T1 et TN-1, avec N entier supérieur ou égal à 2, connues du codeur et du décodeur. Dans la suite de la description, on suppose que cette pluralité de transformées comprend, selon l'invention, au moins une 22 transformation de référence U, dont les coefficients sont stockés en mémoire et au moins une transformation V qui peut être appliquée en appliquant successivement une transformée d'ajustement A' et V, comme précédemment décrit. En E30, on initialise l'indice n de transformées à zéro et on identifie la transformée Tn = TU en E31. 5 En E32, on applique la transformée Tn obtenue au bloc résiduel x et on obtient le bloc transformé Xn. Les coefficients du bloc transformé sont stockés en mémoire. A ce stade, deux cas sont possibles : - Les coefficients des sous-transformées horizontale et verticale (Tv,n0 et Th,n0) qui composent la transformée Tn sont stockés en mémoire et le codeur y accède directement ; 10 ou - Au moins une sous-transformée Th,n0 ou Tv,n0 est approximée par le produit matriciel d'une transformée d'ajustement A' inverse, dont au moins une partie des coefficients est stockée en mémoire puis d'une transformée de référence U inverse, dont les coefficients sont stockés en mémoire. Les transformées inverses peuvent être obtenues par transposition des 15 transformées dans le cas orthogonal. En relation avec la Figure 18, on décrit maintenant l'application de la transformation Tn au signal résiduel x selon l'invention. L'étape E31 d'identification de la transformation Tn comprend l'identification de la transformation de référence U dont les coefficients sont stockés en mémoire et 20 d'une transformation d'ajustement A', dont au moins une partie des coefficients est stockée en mémoire. Cette partie comprend les coefficients diagonaux et les coefficients non nuls de la partie supérieure ou inférieure de A'. En E32, on applique la transformée identifiée en combinaison de sous transformées obtenue comme suit : 25 X=rv,no*(Th,no *xt)t (12) Pour au moins une sous-transformée Tv,n0 et/ou h,n0, l'étape d'E32 d'application de la transformation Tn, selon l'invention comprend les sous-étapes suivantes : - Lecture E321 dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie supérieure respectivement inférieure de la matrice d'ajustement ; 30 Application E322 de la matrice d'ajustement A' au signal résiduel, comprenant une utilisation modifiée des coefficients lus, un coefficient non nul de la partie supérieure respectivement inférieure de la matrice étant déduit d'un coefficient lu dans la partie inférieure respectivement supérieure, par une relation prédéterminée qui conserve la valeur absolue du coefficient lu. Avantageusement, comme précédemment décrit en 23 relation avec les modes de réalisation des figures 6 à 16, cette relation existe entre les coefficients des diagonales supérieures et inférieures, qui sont positionnés de façon symétrique par rapport à la diagonale principale. Un coefficient lu par exemple dans la partie inférieure de la matrice A' est donc utilisé 5 de façon classique pour transformer le signal x, mais il est aussi modifié selon la relation prédéterminée pour obtenir le coefficient qui lui est associé dans la partie supérieure de la matrice A'. Un signal intermédiaire Y est alors obtenu. Comme précédemment évoqué en relation avec les équations (9), le produit matriciel peut être avantageusement remplacé par un calcul basé sur les seuls coefficients non 10 nuls de la matrice A' ; - Lecture E323 dans une mémoire des coefficients de la matrice de transformation de référence U ; et - Application E324 de la matrice U au signal Y. L'autre sous-transformée Tv,n0 et/ou hen° est ensuite appliquée au résultat précédent, soit de façon 15 classique, soit selon l'invention si cette sous-transformée est elle aussi par l'application successive d'une transformée de référence et d'une transformée d'ajustement. Le signal transformé X est enfin obtenu. Le signal X est ensuite quantifié en E33 de façon classique avec une précision de quantification donnée, appelée par exemple QP (pour « Qua ntisation Parameter », en anglais) dans la norme HEVC, 20 puis les valeurs quantifiées sont scannées dans un ordre prédéterminés de façon à constituer un vecteur monodimensionnel RQ[i], où l'indice i varie de 0 à MvxMh-1. L'indice i est appelé fréquence du coefficient RQ[i]. Classiquement, on scanne ces coefficients par ordre croissant de fréquence, par exemple selon un parcours en zigzag, qui est connu de la norme de codage d'image fixes JPEG. Le vecteur obtenu est ensuite codé en E34 sous forme classique à l'aide d'un code binaire de type CABAC 25 tel que décrit dans D. Marpe, H. Schwarz, T. Wiegand, « Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard » IEEE Transactions on Circuits and Systems for Video Technology (Volume:13 , Issue: 7 ), pages 620 - 636, July 2003 , sous la forme d'un flux de données codées STR. En E35, on évalue les performances de la transformée Tn = TU sur le bloc résiduel x selon 30 un critère débit-distorsion. Un coût R de codage binaire des coefficients de XOQ est évalué. Une quantification inverse est appliquée au bloc résidu transformé quantifié XOQ, la transformée inverse de TO lui est appliquée. L'application de cette transformée inverse comprend généralement l'application successive d'une sous-transformée verticale et d'une transformée horizontale. L'application d'au moins une de ces deux sous-transformées peut être approximée par l'application 24 successive d'une sous-transformée de référence et d'une transformée d'ajustement, comme précédemment décrit. On évalue les performances de la transformée selon une mesure de type RDO (pour « Rate Distortion Optimisation en anglais) entre le bloc x' obtenu et le bloc résiduel x d'entrée, par 5 exemple à l'aide d'une mesure de coût Lagrangien J = D + À x R, où D est la distorsion mesurée sur le bloc x', R le débit généré lors du codage et À le multiplicateur de Lagrange, dont la valeur est prédéterminé par exemple selon le débit considéré. Ce coût est stocké en mémoire. En E36, on vérifie s'il reste des transformées à tester. Si n REVENDICATIONS1. Procédé de décodage d'un signal numérique, ledit signal étant découpé en vecteurs de M éléments, à partir de données codées, comprenant les étapes suivantes, mises en oeuvre pour un vecteur courant : - Décodage (Dl) du vecteur courant (X) à partir des données codées ; - Transformation (D5) du vecteur courant (X) en un vecteur transformé (x) par applications successives d'une matrice de transformation de référence (U), comprenant M lignes et M colonnes et d'une matrice d'ajustement (A') comprenant M lignes et M colonnes, ladite matrice d'ajustement (A') comprenant au plus un nombre prédéterminé K de coefficients non nuls par ligne, avec K entier supérieur ou égal à 3, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre de la diagonale de la matrice; - Reconstruction du signal numérique à partir du vecteur transformé (x) ; Caractérisé en ce que l'étape de transformation comprend en outre, pour l'application de la matrice d'ajustement (A'), les sous-étapes suivantes : - Lecture (D53) dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie supérieure respectivement inférieure de la matrice d'ajustement (A') ; - Utilisation modifiée (D54, D55) des coefficients lus, un coefficient non nul de la partie supérieure respectivement inférieure de la matrice étant déduit d'un coefficient lu dans la partie inférieure respectivement supérieure, par une relation prédéterminée qui conserve la valeur absolue du coefficient lu. 2. Procédé de codage d'un signal numérique, ledit signal étant découpé en vecteurs de M éléments, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un vecteur courant : - Obtention (EO, E2) du vecteur courant ; - Transformation (E32) du vecteur courant (x) en un vecteur transformé (X), par applications successives d'une matrice d'ajustement (A') comprenant M lignes et M colonnes et d'une matrice de transformation de référence (U), comprenant M lignes et M colonnes, ladite matrice d'ajustement (A') comprenant au plus un nombre prédéterminé K de coefficients non nuls par ligne, avec K entier supérieur ou égal à 3, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre du coefficient diagonal ; Encodage (E39) du vecteur transformé (X) destiné à produire des données codées représentatives du signal numérique; caractérisé en ce que l'étape de transformation comprend, pour l'application de la matrice 35 d'ajustement, les sous-étapes suivantes : - Lecture (E321) dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie inférieure, respectivement supérieure, de la matrice d'ajustement (A'); 5 - Utilisation modifiée (E322, E323) des coefficients lus, les coefficients de la partie supérieure respectivement inférieure de la matrice étant déduits des coefficients lus dans la partie inférieure respectivement supérieure, selon une relation prédéterminée qui conserve leurs valeurs absolues. 3. Procédé selon l'une des revendications précédentes, caractérisé en ce que les coefficients 10 Ak+1,k, avec k entier compris entre O et M-2, de la première diagonale inférieure sont liés aux coefficients Ak,k+1 de la première diagonale supérieure sont liés par des valeurs absolues identiques et des signes opposés. 4. Procédé selon la revendication 3, caractérisé en ce que, lorsque le nombre prédéterminé K de coefficients non nuls par ligne est supérieur ou égal à 4, les coefficients Ak+3,k+1 et Ak,k+2, 15 avec k entier compris entre 0 et M-3, des deuxièmes diagonales inférieure et supérieure sont liés par des valeurs identiques. 5. Procédé selon la revendication 4, caractérisé en ce que, lorsque le nombre prédéterminé K de coefficients non nul par ligne est supérieur ou égal à 6, les coefficients Ak+5,k+2 et Ak,k+3, avec k entier compris entre O et M-6, des troisièmes diagonales inférieure et supérieure ont des 20 valeurs identiques. 6. Procédé selon la revendication 3, caractérisé en ce que, lorsque le nombre prédéterminé K de coefficients non nuls par ligne est supérieur ou égal à 4, les coefficients Ak+2,k et Ak,k+2, avec k entier compris entre 0 et M-2, des deuxièmes diagonales inférieure et supérieure sont liés par des valeurs identiques. 25 7. Procédé selon l'une des revendications 4 à 6, caractérisé en ce que, pour la diagonale inférieure, respectivement supérieure, comprenant des coefficients non nuls et la plus éloignée de la diagonale, les coefficients lus sont associés à des indices de lignes paires respectivement impaires de la matrice d'ajustement, les coefficients impairs respectivement pairs étant mis à zéro. 30 8. Procédé selon l'une des revendications précédentes, caractérisé en ce que, la mémoire comprenant les coefficients d'une matrice d'ajustement (A'2M) comprenant 2M lignes et 2M colonnes, l'étape de lecture comprend la lecture d'un coefficient sur deux dans la diagonale et d'un coefficient non nul sur deux dans les diagonales inférieures respectivement supérieures selon un ordre de parcours croissant des indices des coefficients. 35 9. Dispositif (200) de décodage d'au moins une image numérique, à partir de données codées, ladite image étant découpée en blocs d'éléments d'images, adapté à et/ou configuré pour, pour 36 un bloc courant : - Décoder un signal (X) de M coefficients à partir des données codées ; - Transformer le signal de M coefficients en un signal d'éléments d'image par applications successives d'une matrice d'ajustement comprenant M lignes et M 5 colonnes et d'une matrice de transformation de référence, comprenant M lignes et M colonnes et, ladite matrice d'ajustement (A') comprenant un nombre prédéterminé K de coefficients non nuls par ligne, avec K entier supérieur ou égal à 2, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre du coefficient diagonal ; 10 Caractérisé en ce que il est en outre adapté à et/ou configuré pour, lors de l'application de la matrice d'ajustement : - Lire dans une mémoire les coefficients diagonaux et des coefficients non nuls d'une partie supérieure respectivement inférieure de la matrice d'ajustement ; - Réaliser une utilisation modifiée des coefficients lus, un coefficient non nul de la partie 15 supérieure respectivement inférieure de la matrice étant déduit d'un coefficient lu dans la partie inférieure respectivement supérieure, par une relation prédéterminée qui conserve la valeur absolue du coefficient lu. 10. Dispositif (100) de codage d'au moins une image numérique, ladite image étant découpée en blocs d'éléments d'images, adapté à et/ou configuré pour, pour un bloc courant : 20 - Obtention d'un signal (x) de M éléments d'image ; Transformation du signal (x) en un signal transformé (X), par applications successives d'une matrice d'ajustement comprenant M lignes et M colonnes et d'une matrice de transformation de référence, comprenant M lignes et M colonnes, ladite matrice d'ajustement (A') comprenant un nombre prédéterminé K de coefficients non nuls par 25 ligne, avec K entier supérieur ou égal à 2, lesdits coefficients non nuls d'une ligne étant adjacents et situés de part et d'autre du coefficient diagonal ; Encodage du signal transformé destiné à produire des données codées; caractérisé en ce que l'étape de transformation comprend, pour l'application de la matrice d'ajustement, les sous-étapes suivantes : 30 - Lecture dans une mémoire des coefficients diagonaux et des coefficients non nuls d'une partie inférieure respectivement supérieure de la matrice d'ajustement ; - Utilisation modifiée des coefficients lus, 37 un coefficient non nul de la partie supérieure respectivement inférieure de la matrice étant déduit d'un coefficient lu dans la partie inférieure respectivement supérieure, par une relation prédéterminée qui conserve la valeur absolue du coefficient lu. 5 11. Equipement terminal d'utilisateur (TU, TU') caractérisé en ce qu'il comprend un dispositif de décodage (200) d'au moins une image numérique selon la revendication 9 et/ou un dispositif de codage (100) d'au moins une image numérique selon la revendication 10. 12. Programme d'ordinateur (Pg1,Pg2) comprenant des instructions pour la mise en oeuvre du procédé selon l'une des revendications 1. à 8, lorsqu'il est exécuté par un processeur. 10 13 Support d'enregistrement lisible par un ordinateur, sur lequel est enregistré un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications 1 à 8.