Brevet FR3057429A1 — publié le 20180413

Procédé de codage d'une image numérique, procédé de décodage, dispositifs, 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. L'invention concerne plus particulièrement la signalisation d'une transformée appliquée à un bloc de pixels, dans un contexte de 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 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 (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc), et au décodage correspondant. 2. Présentation de l'art antérieur On considère un schéma de compression classique d'une image numérique, selon lequel l'image est divisée en blocs de pixels. Un bloc courant à coder, qui constitue une unité de codage initiale, est généralement découpé en un nombre variable de sous-blocs selon un mode de découpage prédéterminé. En relation avec la Figure 1, on considère une séquence d'images numériques Ii, 12, 1K, avec K entier non nul. Une image II( est découpée en unités de codage initiales ou CTU (pour « Coding Tree Unit » en anglais) selon la terminologie de la norme HEVC, telle que spécifiée dans le document "ISO/IEC 23008-2:2013 - High efficiency coding and media delivery in heterogeneous 3057429 2 environments -- Part 2: High efficiency video coding », International Organization for Standardization, publié en novembre 2013. Les codeurs standards proposent généralement un partitionnement régulier, qui s'appuie sur des blocs carrés ou rectangulaires, appelés CU (pour « Coding Units », en anglais) de taille fixe. Le partitionnement se fait toujours à partir de l'unité de 5 codage initiale, non partitionnée, et le partitionnement final est calculé puis signalé à partir de cette base neutre. Chaque CU subit une opération d'encodage ou de décodage consistant en une suite d'opérations, comprenant de manière non exhaustive une prédiction, un calcul de résidu, une transformation, une quantification et un codage entropique. Cette suite d'opérations est connue de 10 l'art antérieur. L'étape de transformation joue un rôle crucial dans un tel schéma de codage vidéo : en effet c'est elle qui concentre l'information avant l'opération de quantification. Il en résulte qu'un ensemble de pixels résiduel avant encodage se voit représenté sur un faible nombre de coefficients fréquentiels non-nuls représentant la même information. Ainsi, au lieu de transmettre un grand nombre de 15 coefficients, seul un petit nombre sera nécessaire pour reconstituer avec fidélité un bloc de pixels. En codage d'image et vidéo, on utilise généralement des transformées blocs (4x4, 8x8 etc), orthogonales ou quasi-orthogonales. Les transformées les plus employées sont à base de bases cosinus. La DCT est ainsi présente dans la plupart des standards pour l'image et la vidéo. Récemment la norme HEVC a également introduit la DST (pour « Discrete Sine Transform », en 20 anglais) pour le codage de résidus particuliers dans le cas de blocs de taille 4x4. Dans les faits, ce sont des approximations de ces transformées qui sont employées, les calculs étant effectués sur des entiers. En général, les bases de transformées sont approximées à l'entier le plus proche, sur une précision donnée (généralement de 8 bits). Plus récemment la notion de compétition de transformées a été introduite. Pour une taille de bloc 25 et un mode de prédiction donnés, l'encodeur a le choix entre T transformées, avec T entier non nul, généralement supérieur ou égal à 2. De la même manière que pour le partitionnement d'un bloc, il les applique chacune à leur tour au bloc courant, puis les évalue selon un critère débit-distorsion. La transformée choisie est celle qui obtient les meilleures performances : La norme HEVC prévoit, pour les blocs 4x4, le choix entre une transformation de type DST ou une 30 absence de transformée « Transform Skip » (c'est-à-dire que les coefficients résiduels ne subissent pas de transformée). 3057429 3 Dans la publication de A. Arrufat et al, intitulée « Rate-distortion optimised transform competition for intra coding in HEVC », publiée dans les Proceedings de la conférence IEEE Visual Communication on Image Processing, en décembre 2014, qui s'est tenue à La Valette, Malta. pp.73, l'encodeur a le choix entre de multiples transformées. Par exemple, il est proposé 5 5 transformées pour les blocs de taille 4x4 et 17 transformées pour les blocs de taille 8x8. L'étape E3 identifie donc une transformées parmi celles disponibles en fonction de la taille du bloc courant. Concernant la transformée appliquée, dans le cas de la norme HEVC, on indique au décodeur par un bit, appelé transform skip flag, la transformée inverse à appliquer parmi les deux alternatives DST ou absence de transformée. 10 Dans le cas de la publication de A. Arrufat et al, on la signale au décodeur par une approche indicateur plus signalisation explicite : l'encodeur signale par un indicateur (indicateur en position 0) si la transformée est une transformée de type HEVC (selon la taille, il s'agit d'une DCT ou d'une DST) ou une transformation particulière (indicateur en position 1). Si l'indicateur indique une transformation particulière, l'indice de la transformation particulière utilisée est signalé au 15 décodeur sur un code de longueur fixe (2 pour les blocs 4x4 et 4 pour les blocs 8x8 afin de signaler respectivement les 4 et 16 transformations particulières possibles). Grâce à l'augmentation du nombre de transformées, la performance de codage est améliorée, car chaque transformée est adaptée à la statistique d'un type de signal résiduel donné. Des gains sur les signaux de type texte et graphique sont rapportés par la technique « transform 20 skip » et sur des signaux de nature quelconque (images contenant des textes, graphiques synthétiques, ou représentant des scènes filmées naturelles) par la technique présentée dans la publication A. Arrufat. 3. Inconvénients de l'art antérieur Les inconvénients de l'art antérieur sont les suivants : 25 - la multiplication du nombre de transformées induit une signalisation accrue pour indiquer la transformée choisie par l'encodeur au décodeur. - ce coût accru en signalisation, qui est pris en compte lors de la compétition entre transformées, impacte les performances de compression. 4. Objectifs de l'invention 30 L'invention vient améliorer la situation. L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur. 3057429 4 Plus précisément, un objectif de l'invention est de proposer une solution qui, en réduise les besoins en ressources de calcul et le volume de données transmises, tout en préservant les performances de compression d'un codeur d'images numériques. 5. Exposé de l'invention 5 Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé de codage d'une image d'une séquence d'images, ladite image étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc de l'image courante, dit bloc courant : - Prédiction des valeurs du bloc courant à partir d'au moins un bloc déjà traité issu d'au 10 moins une image précédente ou suivante, dite de référence, - Calcul d'un bloc résidu par soustraction des valeurs prédites aux valeurs originales du bloc courant, - Transformation du bloc résidu par application d'une transformée; - Codage du bloc résidu transformé ; 15 - Codage d'une information d'identification de la transformée appliquée ; Selon l'invention, le procédé comprend en outre une étape d'obtention d'au moins un bloc voisin déjà traité, une étape d'obtention parmi une pluralité de listes de transformées prédéterminées d'au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et l'information d'identification de la transformée dépend de la au moins une liste obtenue. 20 L'invention s'appuie sur une approche tout-à-fait nouvelle et inventive de la compression vidéo, qui consiste à exploiter, lors du codage d'un bloc courant, le degré de similarité qu'il partage avec au moins un bloc voisin déjà traité et la connaissance de la liste des transformées utilisée pour le codage de ce bloc voisin pour proposer une signalisation optimisée de la transformée appliquée au bloc courant. 25 De façon correspondante l'invention concerne aussi un procédé de décodage d'une image d'une séquence d'images à partir de données codées représentatives de ladite image, ladite image étant divisée en une pluralité de blocs traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc, dit bloc courant : - Prédiction du bloc courant à partir d'au moins un bloc déjà traité issu d'une image 3057429 5 précédente ou suivante, dite de référence; - Décodage d'un bloc résidu transformé à partir des données codées; - Décodage d'une information d'identification d'une transformée à appliquer au bloc courant ; - Transformation inverse du bloc résidu transformé par application de la transformée 5 identifiée; - Reconstruction du bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; Selon l'invention, le procédé comprend une étape d'obtention d'au moins un bloc voisin déjà traité, une étape d'obtention parmi une pluralité de listes de transformées disponibles, d'une liste de transformées associée audit au moins un bloc voisin déjà traité et en ce que l'étape de 10 décodage d'une information d'identification de la transformée appliquée au bloc courant prend en compte la au moins une liste obtenue. Le décodeur reproduit de façon correspondante les étapes d'obtention du bloc voisin déjà traité et d'obtention de la liste utilisée pour ce bloc. Il exploite cette connaissance pour identifier la transformée à appliquer au bloc courant. 15 Selon un aspect de l'invention, ledit au moins un bloc voisin déjà traité appartient à un voisinage spatial du bloc courant dans l'image courante. On considère un voisinage spatial, composé par exemple de blocs directement adjacents au bloc courant ou comprenant au moins un sommet commun avec le bloc courant. Un avantage est de tenir compte du voisinage spatial du bloc courant, voisinage qui a une 20 probabilité forte de partager les mêmes propriétés de résidus et donc d'orienter correctement la signalisation du bloc courant. Avantageusement, l'étape de sélection sélectionne le au moins un bloc voisin déjà traité en fonction d'un critère de similarité d'une caractéristique de codage.De cette manière on ne sélectionne que les blocs voisins qui possèdent un degré de similarité suffisant avec le bloc 25 courant. Par exemple, l'étape de prédiction comprenant au moins une estimation d'un vecteur mouvement entre le bloc courant et ladite au moins une image de référence, l'étape de sélection d'au moins un bloc voisin comprend une comparaison d'une caractéristique de son vecteur mouvement avec celui du bloc voisin déjà traité. 3057429 6 Un avantage de comparer les vecteurs mouvements est que cette comparaison donne une bonne indication de la similarité de prédiction du bloc courant par rapport à ses voisins, et donc de sa propension à générer un résidu similaire et nécessitant la même liste. Selon un autre aspect de l'invention, le au moins un bloc voisin déjà traité sélectionné est 5 colocalisé par rapport au bloc courant dans une image précédente ou suivante de la séquence. On considère un voisinage temporel, composé des blocs localisés à la même position spatiale que le bloc courant dans des images précédentes ou suivantes. Un avantage est que ces blocs ont une forte probabilité de partager les mêmes propriétés que le bloc courant, la liste de transformées qui leur a été appliquée a donc toutes les chances d'être pertinente pour le bloc courant. 10 Selon encore un autre aspect de l'invention, l'image précédente ou suivante est une image de référence pour la prédiction du bloc courant. Un avantage est que l'image de référence est connue du codeur/décodeur qui l'utilise pour la prédiction. Il peut l'exploiter pour déterminer la sous liste de transformées, sans effort supplémentaire pour y accéder. 15 Selon un autre aspect de l'invention, lorsque plusieurs blocs voisins sont obtenus, l'étape d'obtention d'une liste comprend la sélection d'une liste dans un groupe comprenant au moins : - la liste comprenant le plus grand nombre de transformées ; - la liste comprenant le plus petit nombre de transformées ; - la liste majoritairement représentée parmi les blocs voisins identifiés. 20 Selon encore un autre aspect de l'invention, l'étape de transformation applique au bloc courant une transformée appartenant à la liste obtenue. Selon ce mode de réalisation de l'invention, on impose au codeur de choisir pour le bloc courant une transformée de la liste utilisée pour le bloc voisin, en se basant sur une similarité présumée entre le contenu des deux blocs. Un avantage est de permettre non seulement de 25 réduire la quantité de données à signaler, du fait que le décodeur met en oeuvre de façon correspondante les étapes d'identification d'un bloc voisin et d'obtention d'une liste associée à ce bloc, mais aussi d'abaisser la complexité du codage, puisque la transformée est sélectionnée dans un sous-ensemble des transformées disponibles. 3057429 7 Avantageusement, lorsque la liste identifiée comprend plus d'une transformée, l'étape de codage code une information d'identification comprenant un index de position de la transformée dans la liste. Selon ce mode de réalisation, lorsque la liste obtenue comprend plus d'une transformée, 5 l'étape de décodage d'une information d'identification décode un index de position de la transformée dans la liste obtenue. Un avantage de cette signalisation est d'être simple et peu coûteuse. Selon encore un autre aspect, le procédé de codage comprend une étape de sélection d'une liste de transformées parmi la pluralité de listes disponibles, l'étape de transformation applique au 10 bloc courant une transformée appartenant à la liste sélectionnée et l'étape de codage de l'information d'identification de la transformée comprend le codage d'une information représentative d'une différence entre la liste sélectionnée pour le bloc courant et la au moins une liste associée au bloc voisin déjà traité. Une compétition est mise en oeuvre entre listes de transformées. La meilleure est celle qui 15 réalise les meilleures performances selon un critère débit distorsion. La signalisation optimisée proposée par l'invention est donc prise en compte dans cette évaluation de performances. Selon ce mode de réalisation de l'invention, le codeur choisit la liste de transformées et la connaissance de la liste utilisée par le bloc voisin est exploitée pour optimiser la signalisation. Un avantage de cette signalisation est qu'elle est très courte, par exemple 0 si la transformée 20 appartient à la liste associée au bloc voisin, 1 sinon. Elle peut être d'autant plus optimisée que la probabilité que la liste sélectionnée pour le bloc courant soit celle du bloc voisin est élevée. On peut dans ce cas recourir à des codes à longueur variable et affecter un code court aux listes les plus probables sachant celle utilisée par le bloc voisin. Avantageusement, lorsque la liste sélectionnée comprend plus d'une transformée, 25 l'information d'identification comprend en outre un index de position de la transformée dans la liste. Selon cet autre mode de réalisation, le procédé de décodage comprend en outre une étape d'identification d'une liste sélectionnée pour le bloc courant à partir de l'information d'identification de la transformée comprise dans les données codées, ladite information comprenant une 3057429 8 information représentative d'une différence entre la liste identifiée et la liste associée au bloc voisin déjà traité. Avantageusement, lorsque la liste sélectionnée comprend plus d'une transformée, l'étape d'identification décode en en outre un index de position de la transformée dans la liste. 5 Ces caractéristiques peuvent être considérées individuellement ou en combinaison. 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 décodage, et ne sont pas détaillés plus amplement. 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 15 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. Corrélativement, l'invention concerne un signal porteur d'un train binaire et comprenant des données codées représentatives d'une image d'une séquence d'images, ladite image étant 20 divisée en blocs de pixels traités dans un ordre défini, les valeurs d'un bloc courant étant prédites à partir des valeurs d'au moins un bloc déjà traité d'une image de référence, les valeurs d'un bloc résidu étant calculées par soustraction des valeurs prédites aux valeurs originales du bloc courant, un bloc résidu transformé étant obtenu par application d'une transformée à des pixels du bloc résidu, le signal comprenant une information codée d'identification de la transformée. 25 Selon l'invention l'information d'identification de la transformée appliquée au bloc courant dépend d'au moins une liste de transformées destinée à être obtenue par un décodeur du train binaire, ladite liste étant associée à au moins un bloc voisin déjà traité du bloc courant. L'invention concerne aussi un terminal d'ordinateur comprenant un dispositif de codage 30 d'une image numérique selon l'invention et un dispositif de décodage d'une image numérique selon l'invention, qui viennent d'être décrits dans leurs différents modes de réalisation. 3057429 9 L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la mise en oeuvre des étapes d'un procédé de décodage d'une image tel que décrit précédemment, lorsque ce programme est exécuté par un processeur. Ces programmes peuvent utiliser n'importe quel langage de programmation. Ils peuvent être 5 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 numérique et au dispositif de décodage d'une image numérique selon l'invention, éventuellement amovible, mémorisant respectivement un 10 programme d'ordinateur mettant en oeuvre un procédé de codage et un programme d'ordinateur mettant en oeuvre un procédé de décodage, tels 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 15 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 (déjà décrite) présente de façon schématique une séquence d'images numériques découpées en blocs de pixels ; 20 - la figure 2 illustre de façon schématique un exemple de voisinage spatial d'un bloc courant ; la figure 3 présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon un premier mode de réalisation de l'invention ; 25 les figures 4A et 4B présentent deux exemples de découpage d'un bloc CTU en sous-blocs CU et leur transformée associée, dans un contexte de compétition de transformées ; la figure 5 présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon un deuxième mode de réalisation de l'invention 3057429 10 la figure 6 présente de façon schématique les étapes d'un procédé de décodage selon un premier mode de réalisation de l'invention ; la figure 7 présente de façon schématique les étapes d'un procédé de décodage selon un deuxième mode de réalisation de l'invention ; 5 la figure 8 illustre un modèle de structure temporelle hiérarchique d'un groupe d'images mis en oeuvre par un mode de réalisation de l'invention ; la figure 9 présente de façon schématique une compensation de mouvement mise en oeuvre lors de la prédiction en mode inter d'un bloc courant par rapport à une ou plusieurs images 10 de référence passées ou futures selon l'art antérieur ; les figures 10A et 10B présentent un exemple de stockage des listes de transformées, basé sur deux tables associant pour la première table un numéro de couche temporelle à un nombre de transformées, à identifier dans une liste de transformées indiquée dans la deuxième table, selon l'invention ; 15 - les figures 11A et 11B présentent un exemple de signalisation par différence de la liste associée au bloc courant selon le deuxième mode de réalisation de l'invention ; la figure 12 présente de façon schématique la structure matérielle d'un dispositif de codage d'une image numérique selon l'invention ; et la figure 13 présente de façon schématique la structure matérielle d'un dispositif de décodage 20 d'une image numérique selon l'invention. 7. Description d'un mode de réalisation oarticulier de l'invention Le principe général de l'invention repose sur la signalisation de la transformée utilisée pour le bloc courant en fonction d'une liste de transformées utilisée pour le codage d'un bloc voisin 25 déjà traité. Dans la suite de la description, on considère une vidéo originale constituée d'une suite de K images Il, 12, ...IK, avec K entier non nul, telle que celle déjà présentée en relation avec la Figure 1. Les images sont encodées par un encodeur, les données codées sont insérées un train binaire TB transmis à un décodeur via un réseau de communication, ou un fichier compressé FC, destiné à être 30 stocké sur un disque dur par exemple. Le décodeur extrait les données codées, puis reçues et 3057429 11 décodées par un décodeur dans un ordre prédéfini connu de l'encodeur et du décodeur, par exemple dans l'ordre temporel Ii, puis I2, puis IK, cet ordre pouvant différer suivant le mode de réalisation. On se place dans un contexte de compétition de transformées, selon lequel le codeur teste 5 toutes les transformées disponibles pour le codage du bloc courant et choisit celle qui réalise les meilleures performances de compression selon un critère débit-distorsion. Dans la suite de la description, on désigne par bloc voisin déjà traité ou causal, un bloc d'un voisinage spatial ou temporel du bloc courant. On entend par voisin au sens spatial un bloc situé à proximité du bloc courant, avec au moins un sommet commun. Sur la figure 2, on a 10 représenté un exemple de voisinage spatial du bloc C. Il dépend d'un ordre de parcours OP des blocs de l'image courante. Dans cet exemple on considère 3 blocs voisins BV1, BV2, BV3 du bloc C. On entend par bloc voisin au sens temporel, le bloc colocalisé avec le bloc courant C, c'est- à-dire ayant les mêmes coordonnées spatiales, dans une image passée ou future, déjà traitée et proche de l'image courante. 15 7.1 Procédé de codage d'une image d'une séquence En relation avec la Figure 3, on considère maintenant les étapes d'un procédé de codage selon un mode de réalisation de l'invention. Dans la suite de la description, on se place en particulier dans un contexte de compétition de transformées. Une image II( est découpée en blocs CTU (pour « Coding Tree Unit », en anglais) de taille, 20 par exemple égale à 64x64 pixels. Au cours d'une étape EO, on sélectionne un bloc à traiter, dit bloc courant c. Par exemple, il s'agit d'un bloc CU (pour « Coding Unit », en anglais), carré ou rectangulaire, de dimensions MxN, avec M et N entiers non nuls, obtenu par partitionnement d'un bloc CTU. Au cours d'une étape El, il est procédé à une étape de prédiction du bloc c. Cette 25 opération, conforme à l'art antérieur, est réalisée à partir de pixels issus de l'image en cours de codage (codage intra) ou reposant sur une image déjà traitée par l'opération d'encodage (codage inter). On obtient un bloc prédit Pr. 3057429 12 Dans la suite de la description, on suppose que le bloc courant est prédit selon un mode de prédiction inter, c'est-à-dire par rapport à un ou plusieurs images précédemment traitées, dites images de référence. Au cours d'une étape E2, le bloc de pixels courant est soustrait, pixel à pixel, au bloc prédit 5 au cours de l'opération précédente. On obtient un bloc de pixels résiduels R. Selon l'invention, on obtient en E3 au moins un bloc voisin déjà traité. Plusieurs modes de réalisation de cette étape seront détaillés ci-après. On suppose que pour ce bloc voisin déjà traité, le codeur a sélectionné une transformée dans une liste transformées parmi une pluralité de listes de transformées possibles. On désigne par 10 transformées possibles une pluralité T de transformées disponibles en mémoire de l'encodeur de façon préétablie, avec T entier non nul, par exemple T est égal à 32, à partir desquelles on a préalablement formé plusieurs listes distinctes. On notera qu'une même transformée peut appartenir à plusieurs listes. Plusieurs cas sont envisagés : 15 - le bloc voisin déjà traité est le premier bloc de l'image ou de la séquence, de telle sorte qu'il n'a pas de bloc voisin déjà traité. Dans ce cas, la liste est prédéterminée et connue du codeur comme du décodeur. Elle peut dépendre par exemple du mode de prédiction considéré et de la taille du bloc courant ; 20 - le bloc voisin déjà traité n'est pas le premier bloc de l'image ou de la séquence de telle sorte qu'au moins un bloc voisin déjà traité a pu être identifié ;. On note que plusieurs blocs voisins peuvent être identifiés. Au cours d'une étape E4, on identifie la liste de transformées utilisée par le bloc voisin. Elle peut dépendre par exemple du mode de prédiction considéré et de la taille du bloc courant. 25 Si on a identifié plusieurs blocs voisins déjà traités, plusieurs cas sont envisagés : - soit on choisit une seule liste parmi les listes utilisées par ces blocs voisins, par exemple en fonction d'un critère prédéterminée, tel que la liste la plus longue, la liste la plus courte ou encore la liste majoritairement représentée parmi les listes utilisés par les blocs voisins ; - soit on choisit de garder plusieurs listes. 3057429 13 Dans la suite, on suppose qu'on a sélectionné une seule liste Lv. Selon l'invention, cette liste Lv de transformées est associée à un identifiant du bloc voisin. Par exemple, une table stockée en mémoire du codeur comprend des enregistrements EGj, avec j entier, qui font chacun correspondre à un identifiant de bloc, une liste Lj ou un identifiant de cette 5 liste ou encore un pointeur vers une adresse de stockage de cette liste en mémoire. Un exemple de table sera présenté ci-après en relation avec les figures 10A et 10B. La liste Lv du bloc voisin ayant été identifiée, on considère à ce stade deux modes de réalisation de l'invention. Selon un premier mode de réalisation, on impose au codeur de choisir une transformée 10 pour le bloc courant dans la liste Lv utilisée par le bloc voisin. Selon un deuxième mode de réalisation, le codeur est libre de choisir une transformée dans la liste de son choix. 7.1.2 Sélection d'une transformée pour le bloc courant dans la liste Lv du bloc voisin Au cours d'une étape E5, le codeur identifie une transformée Tri dans la liste Lv. 15 Au cours d'une étape E6, pour la transformée Tri identifiée, avec i entier non nul compris entre 0 et T-1, il est procédé à la transformation du signal résiduel R. Un signal résiduel transformé RT, est obtenu. En E7, de façon connue dans l'état de l'art, les coefficients du bloc résiduel transformé sont scannés dans un ordre prédéterminé de façon à constituer un vecteur monodimensionnel RTi[m], 20 où l'indice m varie de 0 à Nb-1, avec Nb nombre de pixels dans le bloc courant c. L'indice m est appelé fréquence du coefficient R[m]. Classiquement, on scanne ces coefficients par ordre globalement croissant ou décroissant de valeurs de fréquence, par exemple selon un parcours en zigzag, qui est connu de la norme de codage d'image fixes JPEG. Ce mode de parcours (pour « scanning » en anglais) peut aussi dépendre de la transformée appliquée. Comme le mode de 25 parcours influence nécessairement l'ordre final des coefficients transformés dans le vecteur RTi[m], on considère dans la suite qu'une transformée identifiée Tri dans la liste L est associée à un mode de parcours particulier. Autrement dit, la même transformée associée à un autre mode de parcours se verra affecter un autre identifiant de transformée dans la liste L et sera de ce fait considérée comme une transformée distincte. 3057429 14 Les composantes du vecteur RTi sont ensuite quantifiées suivant une méthode de quantification donnée, scalaire ou vectorielle connue de l'homme de l'art, avec un paramètre de quantification QP réglant la précision de l'approximation réalisée dans cette étape. On obtient un vecteur quantifié RTQi. 5 En E8, les informations relatives au bloc courant, comprenant notamment les données quantifiées et des éléments de description du bloc tels que le mode de prédiction, sont encodées par une technique de codage entropique connue, telle que par exemple un codage de Huffman, codage arithmétique ou encore codage CABAC tel qu'utilisé dans la norme HEVC. EnE9, on examine s'il est nécessaire de signaler une information d'identification de la 10 transformée Tri appliquée au bloc courant. Selon ce premier mode de réalisation, la transformée appartient à la liste Lv de transformées du bloc voisin déjà traité. Elle est connue du décodeur. On distingue donc deux cas : - Lorsque la liste Lv ne comprend qu'un seul identifiant de transformée, il n'est pas nécessaire de signaler quoi que ce soit. En effet, comme nous le verrons ci-après, le décodeur selon 15 l'invention est agencé pour obtenir la liste Lv de façon correspondante à celle de l'encodeur. Un avantage de ce mode est qu'il est simple à mettre en oeuvre et qu'il ne nécessite pas de signalisation, dans la mesure où la configuration de la liste Lv est fixée. - Lorsque la liste Lv comprend plus d'un identifiant de transformée, alors le codeur signale au décodeur une information d'identification de la transformée dans la liste Lv, apr exemple un 20 index de position POS de la transformée Tri appliquée au bloc courant dans une séquence ordonnée de transformées de la liste LV. Pour ce faire, il est nécessaire que le codeur et le décodeur partagent la connaissance des positions des transformées dans la liste. Un avantage est que peu de bits sont nécessaires pour signaler la transformées Tri dans le train binaire, contrairement à l'état de l'art qui transmet explicitement son identifiant complet. 25 En E10, les performances de codage du bloc courant, pour cette transformée Tri sont évaluées, de façon connue de l'homme du métier, à partir d'une fonction de coût. La transformée choisie est celle qui maximise les performances de compression, selon un critère débit distorsion. Par exemple à travers une mesure de coût Lagrangien J = D + À x R, où D est la distorsion mesurée sur le bloc reconstruit, R le débit généré lors du codage et À le multiplicateur de Lagrange. 30 En E11, on vérifie si toutes les transformées de la liste Lv ont été testées. 3057429 15 Si ce n'est pas le cas, on retourne à l'étape E6 au cours de laquelle une autre transformée de la liste Lv est identifiée. Les étapes E6 à E10 sont répétées pour la nouvelle transformée. Si c'est le cas, une fois que toutes les transformées de la liste Lv ont été testées, on évalue le coût de codage du bloc pour chacune des transformées et on décide au cours d'une étape E12 de 5 la meilleure transformée de la liste pour le bloc courant à partir des valeurs de fonction de coût obtenues par chacune des transformées testées et selon un critère d'optimisation débit-distorsion. On note que quand le bloc courant est un bloc CTU, il peut être subdivisé en sous-blocs CU pour chacun desquels le codeur sélectionne une transformée dans la liste. La compétition concerne donc à la fois le découpage et le choix de la transformée. En relation avec les Figures 4A et 4B, on 10 a représenté deux exemples de découpages D1, D2 d'un même bloc CTU en CUs. Par exemple, la liste Lv comprend les transformées {TO, T1 ; T2}. On évalue donc, pour chaque découpage D1, D2, le coût du codage d'un bloc CTU en comptabilisant le coût de chaque transformée, le coût de découpage en CU et le coût des prédictions associées. Le codeur est donc en mesure d'obtenir un coût total associé à chaque découpage de CTU. 15 A l'issue de cette étape, on a choisi conjointement le meilleur découpage du bloc CTU courant et la meilleure transformée dans la liste Lv pour chacun des sous-blocs CU. En E13, on insère les données codées correspondant à ce choix dans le train binaire ou fichier compressé. En E14, on teste s'il reste des blocs à traiter dans l'image courante. Si oui, le procédé 20 continue avec l'étape EO de sélection d'un bloc C à traiter. Sinon, le traitement est terminé pour cette image et on passe à l'image suivante selon l'ordre d'encodage. Le fichier compressé ou train binaire produit par le procédé de codage qui vient d'être décrit est transmis à un décodeur par exemple via un réseau de télécommunications. En relation avec la Figure 5, on décrit maintenant le deuxième mode de réalisation de 25 l'invention, selon lequel le codeur peut sélectionner la transformée dans la liste de son choix parmi la pluralité de listes disponibles. Les étapes EO à E4 sont inchangées. Au cours d'une étape E4', le codeur sélectionne une liste de transformées Lk parmi la pluralité de listes disponibles. En E5 il identifie une transformée dans cette liste. 3057429 16 Les étapes E6 à E8 sont inchangées. En E9, on signale la transformée choisie dans la liste. Selon ce mode de réalisation il faut aussi signaler la liste sélectionnée. Selon l'invention, cette signalisation est fonction de la liste Lv du bloc voisin. Avantageusement, on signale par différence le fait que la transformée appartient ou 5 n'appartient pas à la liste LV du bloc voisin déjà traité. Par exemple, on code un zéro pour indiquer que la transformée appartient à Lv et un autre code sinon. En ce qui concerne la position de la transformée dans la liste, on procède de la même façon que pour le mode de réalisation précédent. En E10 la transformée Tri est évaluée.En Ell on vérifie s'il reste des transformées à tester dans cette liste. Si c'est le cas, on retourne à l'étape E5. 10 Sinon, en EU', on teste si toutes les listes ont été testées. Si ce n'est pas le cas, on retourne à l'étape E4' pour sélectionner une nouvelle liste. Une fois que toutes les listes de transformées ont été testées, on décide au cours de l'étape E12' de la meilleure liste, à partir des valeurs de fonction de coût obtenues par chacune des listes testées et selon un critère d'optimisation débit-distorsion. 15 On obtient ainsi la meilleure liste et on récupère la (ou les) meilleure(s) transformée(s) de cette liste, déjà sélectionnée lors de l'étape E10. 7.2 Procédé de décodage d'image d'une séquence d'images On suppose que le train binaire TB a été reçu par un dispositif de décodage mettant en 20 oeuvre un procédé de décodage selon l'invention. Ce procédé de décodage va maintenant être décrit en relation avec les Figures 6 et 7. En DO, on commence par sélectionner comme bloc courant C' le premier bloc à traiter. Par exemple, il s'agit du premier bloc (dans l'ordre lexicographique). Ce bloc comporte MxN pixels, avec M et N entiers non nuls. 25 Comme décrit pour le procédé d'encodage, le bloc C' considéré peut être un bloc CTU ou un sous-bloc CU obtenu par découpage du bloc CTU ou encore un bloc ou sous-bloc résidu obtenu par soustraction d'une prédiction du bloc courant au bloc courant. Au cours d'une étape D1, les données codées relatives au bloc courant C' sont lues et décodées. Les données codées, comprennent des paramètres de codage, tels que par exemple le 3057429 17 mode de prédiction utilisé et les valeurs relatives aux amplitudes et aux signes des coefficients résidus quantifiés du bloc courant. Lorsque le mode de prédiction déterminé indique qu'une prédiction a été faite par l'encodeur, le bloc courant est prédit en D2, selon le mode de prédiction déterminé à partir d'un 5 bloc déjà traité. Un bloc prédit Pr' est obtenu. Au cours d'une étape D3, on décode les données lues représentatives des valeurs quantifiées, résiduelles du bloc courant (valeurs et signes des coefficients), sous la forme d'un vecteur de valeurs RQ'. On comprend qu'il s'agit de l'opération inverse de celle de codage entropique précédemment décrite en relation avec le procédé d'encodage. 10 Au cours d'une étape D4, on déquantifie les coefficients du vecteurs RQ' à l'aide d'un pas de quantification prédéterminé ou lu dans le fichier compressé. En D5, on reconstruit un bloc résidu transformé RT' à partir du vecteur déquantifié. En D6, selon l'invention, on obtient au moins un bloc voisin déjà traité, de façon correspondante à celle du codeur. Plusieurs modes de réalisation vont être détaillés ci-après. 15 En D7, on obtient la liste de transformées Lv utilisée par le bloc voisin identifié. Par exemple, un identifiant de cette liste est stocké en mémoire en association avec un identifiant du bloc voisin déjà traité. On verra que, dans certains modes de réalisation, plusieurs blocs sont identifiés, ce qui conduit potentiellement à l'obtention de plusieurs listes et nécessite de faire un choix. 20 Dans la suite, on considère qu'on a finalement obtenu une liste Lv A ce stade, deux cas sont envisagés : Selon un premier mode de réalisation de l'invention, décrit en relation avec la Figure 6, la liste de transformées utilisée pour le bloc courant est la liste Lv du bloc voisin. Le procédé de décodage comprend une étape D8 d'identification de la transformée dans la liste Lv. Si la 25 liste Lv ne contient qu'une seule transformée, le décodeur y accède directement sans besoin d'information supplémentaire ; Si elle contient plus d'une transformée, le décodeur lit dans les données codées une information d'identification de la transformée, qui, si on suppose la liste ordonnée et la connaissance de cet ordonnancement partagée par le codeur et le décodeur, prend avantageusement la forme d'un index de position de la transformée dans la 30 liste ; 3057429 18 Selon un deuxième mode de réalisation de l'invention décrit en relation avec la Figure 7, la liste de transformée utilisée pour le bloc courant n'est pas nécessairement la liste Lv du bloc voisin. Le décodeur lit dans les données codées une information d'identification de la transformée comprenant un code représentatif d'une différence entre la liste Lk et la liste Lk 5 utilisée par le bloc voisin et il identifie en D7' la liste Lk sélectionnée par le codeur pour le bloc courant. Un exemple de code sera détaillé ci-après. Il identifie la transformée Tri de la liste Lk en D8. Si la liste Lv comprend plus d'une transformée, l'information d'identification de la transformée Tri comprend en outre un index de position de la transformée dans la liste Lk. 10 En D9, la transformée inverse de Tri est appliquée au bloc résidu R'. Un bloc résidu de pixels r' est obtenu. En D10, le bloc c' est reconstruit à partir de sa prédiction Pr' et du bloc résidu r'. Il est stocké dans une mémoire Ml, de façon à pouvoir servir de prédiction pour un bloc suivant. Au cours d'une étape D11, on vient tester si le bloc courant est le dernier bloc à traiter le 15 décodeur, compte tenu de l'ordre de parcours défini précédemment. Si oui, le procédé de décodage a terminé le traitement de l'image courante et passe à l'image suivante. Si non, l'étape suivante est l'étape de sélection du bloc suivant DO et les étapes de décodage D1 à D11 précédemment décrites sont répétées pour le bloc suivant sélectionné. 20 7.3 Identification d'au moins un bloc voisin déjà traité du bloc courant On décrit maintenant plusieurs modes de réalisation des étapes E3/D6 et E4/D7 par le codeur respectivement le décodeur. 7.3.1 Identification d'un bloc déjà traité dans un voisinage temporel du bloc courant On considère, dans une image déjà traitée, le bloc colocalisé avec le bloc courant. Comme 25 précédemment évoqué, le bloc C ou C' considéré peut être un bloc CTU ou un sous-bloc CU obtenu par découpage du bloc CTU ou encore un bloc ou sous-bloc résidu obtenu par soustraction d'une prédiction du bloc courant au bloc courant. Selon l'invention, l'identification d'un bloc voisin déjà traité peut donc être faite aussi bien au niveau CTU et valoir pour les blocs CU issus de ce CTU qu'au niveau CU directement. 3057429 19 Avantageusement, on considère le bloc colocalisé d'une image de référence pour la prédiction du bloc courant. En relation avec la Figure 8, une image de référence IR1, IR2 est une image passée ou future appartenant à un même groupe d'images ou GoP (pour « Group of Pictures », en anglais). Cette figure illustre le modèle hiérarchique de couches temporelles décrit par Wien, selon 5 lequel on regroupe dans une même couche temporelle les images qui sont au même niveau dans la hiérarchie des images servant de références. Par exemple, une première couche tid0 comprend les images I ou Intra, qui sont éloignées les unes des autres, mais ne sont pas prédites, une deuxième couche tiid1 comprend les images prédites à partir des images I de la couche précédente et qui s'intercalent entre les images I, une troisième couche tid2 comprend des images qui s'intercalent 10 temporellement entre des images de la deuxième et des images de la première couche et qui sont prédites par rapport à des images des couches précédentes, etc. On comprend que plus on monte dans les couches, plus la distance temporelle entre l'image courante et sa référence diminue. Un avantage est que le codeur comme le décodeur sont agencés pour accéder aux images 15 de référence pendant le traitement du bloc courant. En effet, les images de référence à disposition pour la prédiction temporelle sont indexées dans une ou plusieurs listes prédéterminées. Par exemple, dans le cas de la norme HEVC il s'agit de listes d'images de référence LO et L1, comme décrit dans la section 8.3.4 de la Recommandation ITU-T H.265/HEVC. Le codeur comme le décodeur sont en outre configurés pour en stocker une version décodée reconstruite en mémoire 20 en vue de la prédiction des blocs de l'image courante en mode Inter. En particulier, le bloc prédit est compensé en mouvement à l'aide du vecteur mouvement estimé entre le bloc courant et cette image de référence. Par exemple, en relation avec la Figure 9, pour un bloc de l'image courante Ik, on identifie comme bloc voisin déjà traité le bloc colocalisé BV1, BV2 de l'image passée de l'image de référence 25 IR1 et/ou celui de l'image de référence IR2. Comme déjà évoqué, on peut aussi identifier les deux. En E4/D7, on obtient la liste Lv1, Lv2 utilisée par le ou les blocs voisins BV1, BV2 identifiés. Par exemple, le codeur/décodeur lit un identifiant de cette liste associé au bloc voisin déjà traité dans une mémoire, sous la forme d'une table. Lorsque plusieurs voisins déjà traités ont été identifiés, l'étape E4/D7 comprend une étape de sélection d'une liste Lv parmi les listes Lv1, Lv2 de blocs 30 voisins obtenues. Le choix est fait selon un critère prédéfini. Par exemple, on choisit la liste contenant le plus ou le moins de transformées. Selon une variante on choisit la liste majoritairement représentée parmi les blocs voisins identifiés. 3057429 20 Si aucun bloc voisin déjà traité n'est disponible, le codeur choisit une liste prédéterminée, selon une ou plusieurs règles connues du décodeur. En variante, le codeur signale cette liste au décodeur par exemple par un code fixe dans le train binaire. Selon le premier mode de réalisation de l'invention, cette liste Lv est utilisée pour y choisir 5 la transformée à appliquer au bloc courant. Les inventeurs ont mis en oeuvre ce premier mode de réalisation de l'invention dans un logiciel de référence appelé JEM-3.0 utilisé actuellement dans le groupe de normalisation JVET (pour Joint Video Exploration Team), groupe conjoint formé par des experts de MPEG et VCEG, respectivement rattachés à l'ISO/IEC et l'ITU). Une description du logiciel est disponible dans le document JVET- 10 C1001 à l'adresse htto://phenix.it- sudoaris.eu/ivet/doc end user/documents/3 Geneva/m11/JVET-C1001-v3.zip. Ils l'ont expérimenté sur un ensemble de 70 séquences de résolutions (jusqu'à 3840x2160) et contenus variés, dans le cas du codage inter random-access. Cette configuration de codage est largement utilisée dans le monde de la diffusion (pour « broadcast », en anglais), et met en oeuvre 15 le codage de la séquence par groupes d'images ou GoP (pour Group of Picture en anglais), évoquée précédemment. Cette configuration permet notamment l'introduction de points d'accès aléatoires dans la séquence, au niveau desquelles les dépendances de codage sont réinitialisées. Il est ainsi de décoder le train binaire correctement sans avoir accès aux informations de codage précédentes. Dans cette configuration, les listes de transformées suivantes ont été mises à 20 disposition du codeur: - LO 4 {TO} - L1 4 {T0, T1, T2} - L2 4 {T0, T1, T2, T3, T4} - L3 4 {T0, T1, T2, T3, T4, T5, T6, T7, T8} 25 En relation avec les Figures 10A et 10B, on présente un exemple d'ensemble de transformées disponibles au niveau d'un codeur. Dans le tableau de la figure 10A, les listes LO à L3 sont définies par un nombre de transformées, TO = 1 pour LO, T1 = 3 pour L1, T2 = 5 pour L2 et T3 =9 pour L3. Le tableau stocke, pour chaque ligne ou taille de bloc, T = 8 transformées, qui peuvent être différentes d'une taille à l'autre. Pour une taille de bloc particulière, on obtient les 30 transformées d'une liste Li en prenant les Ni-1 premières transformées de la ligne correspondante, auxquelles on ajoute la transformée TO commune à toutes les listes. 3057429 21 Pour la signalisation, selon ce premier mode de réalisation, il n'y a rien à signaler si Lv = LO , car elle ne contient qu'une transformée, et pour les autres, il suffit de coder un index de position de la transformée dans la liste Lv du bloc voisin déjà traité, par exemple 0 pour T0, 1 pour T1 etc. En effet, cette méthode permet d'atteindre des gains de -0.31% comparé au JEM-3 tout en 5 réduisant le temps d'encodage de 40% comparé à une méthode qui n'imposerait pas la liste. Selon le deuxième mode de réalisation de l'invention, l'étape E4' identifie une liste de transformées Lk pour le bloc courant parmi la pluralité de listes disponibles. On se place par exemple dans le cas où le codeur peut choisir entre les 4 listes déjà décrites : 10 - LO 4 {TO} - L1 4 {T0, T1, T2} - L2 4 {T0, T1, T2, T3, T4} - L3 4 {T0, T1, T2, T3, T4, T5, T6, T7, T9} En ce qui concerne la signalisation de la liste utilisée pour le bloc courant, elle est réalisée par 15 différence par rapport à la liste Lv du bloc voisin identifié. En relation avec la Figure 11A, on considère une différence D entre les indices de la liste Lv du bloc voisin temporel et de la liste Lk sélectionnée par le codeur pour le bloc courant. On peut exprimer la probabilité de D sachant la liste Lv utilisée par le bloc voisin temporel comme p(DILv =W. On note que cette étude statistique a été réalisée sur un ensemble de 70 séquences de contenus 20 variés, et de résolutions variées. On peut avantageusement tirer profit de ces probabilités pour définir une signalisation adaptée de la différence D entre la liste Lk du bloc courant et la liste Lv du bloc voisin. Par exemple, on choisit les codes de la table de la Figure 11B. Du fait que les codes le plus courts sont affectés aux occurrences les plus probables, ces codes sont adaptés à la distribution de 25 probabilités de la Figure 11A et permettent de réduire le débit nécessaire à la transmission de l'index de liste. On note en outre que les probabilités de sélection de chacune des listes de transformées sont réparties de façon non uniforme, ce qui procure un contexte favorable au codage entropique et donc garantir une performance de compression accrue. 3057429 22 Les résultats des tests réalisés sur une implémentation de ce mode de réalisation de l'invention dans le logiciel de référence JEM3, sur l'ensemble de séquences d'images évoqué plus haut, mettent en évidence une amélioration des performances de compression -0.38% (en utilisant 2 bits pour signaler la liste ) à -0.51% (signalisation selon la méthode proposée ci-dessous). 5 7.3.2 Identification d'au moins un bloc voisin déjà traité dans un voisinage spatial du bloc courant Selon un troisième mode de réalisation de l'invention, on considère en E3/D6 les blocs déjà traités de l'image courante qui possèdent au moins une frontière ou un sommet commun avec le bloc 10 courant C. Dans l'exemple de la Figure 2, il s'agit des blocs BV1, BV2 et BV3. Le premier bloc de l'image Ik n'a pas de voisin déjà traité. En E4/D7, on obtient la liste associée à chacun des blocs voisins identifiés. Dans le cas où il a le choix entre plusieurs listes, le codeur/décodeur en choisit une selon une règle prédéterminée et partagée par le codeur et le décodeur. Comme précédemment évoquée en relation avec les 15 premier et deuxième modes de réalisation, il sélectionne par exemple la liste qui comprend le plus de transformées, ou au contraire celle qui en comporte le moins ou encore la plus représentée parmi les listes des blocs voisins. Dans le cas où le bloc courant n'a aucun voisin déjà traité, le codeur choisit une liste prédéterminée selon une règle connue du décodeur et signale son choix dans le train binaire par exemple à l'aide 20 d'un code fixe. 7.3.3 Identification d'au moins un bloc voisin déjà traité dans un voisinage spatial et un voisinage temporel du bloc courant Selon un quatrième mode de réalisation de l'invention, on combine les modes de réalisation précédents en considérant à la fois un voisinage spatial et un voisinage temporel du bloc courant. 25 En E3/D6 on identifie potentiellement plusieurs blocs voisins déjà traités. En E4/D7, on obtient donc potentiellement plusieurs listes de transformées. Pour choisir une liste parmi les listes obtenues, le codeur applique l'une ou plusieurs des règles prédéterminées, connues à l'avance du décodeur, qui ont déjà été évoquées pour les modes de réalisation précédents. 3057429 23 Les troisième et quatrième modes de réalisation peuvent bien sûr se combiner avec les premier et deuxième modes de réalisation précédemment décrits. D'une part, le choix d'un bloc voisin spatial peut être mis en oeuvre aussi bien dans le mode où la liste Lv de ce bloc est imposée au codeur pour sélectionner une transformée pour le bloc courant que dans le mode où le codeur choisit 5 librement la liste parmi une pluralité de listes et signale cette liste en fonction de la liste Lv du bloc voisin. La figure 12 présente la structure simplifiée d'un dispositif de codage 100 adapté pour mettre en oeuvre le procédé de codage selon l'un quelconque des modes particuliers de réalisation de l'invention, qui viennent d'être décrits en relation avec les figures 3 et 5. Le dispositif de codage 10 100 est adapté pour coder au moins une image découpée en blocs sous la forme d'un train binaire TB ou fichier compressé FC. Le dispositif de codage 100 est notamment configuré pour: - Prédire (PRED) des valeurs du bloc courant à partir d'au moins un bloc précédemment traité d'une image précédente ou suivante, dite image de référence, 15 - Calculer (CALC) un bloc résidu (R) par soustraction des valeurs prédites aux valeurs originales du bloc courant, - Transformer (TRANS) un bloc résidu par application d'une transformée; - Coder le bloc (COD) résidu transformé; Selon l'invention, le dispositif est en outre configuré pour obtenir (OBT BV) au moins un bloc voisin 20 déjà traité, obtenir (OBT LV) parmi une pluralité de listes de transformées disponibles, au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et coder (COD T-ID) une information d'identification de la transformée appliquée au bloc courant en fonction de la au moins une liste obtenue. Selon un mode de réalisation de l'invention, il est en outre configuré pour sélectionner une 25 liste Lk parmi la pluralité de listes de transformées disponibles. Selon un mode particulier de réalisation de l'invention, les étapes du procédé de codage sont mises en oeuvre par des instructions de programme d'ordinateur. Pour cela, le dispositif de codage 100 a l'architecture classique d'un ordinateur et comprend notamment une mémoire MEM1, 30 une unité de traitement UT1, équipée par exemple d'un microprocesseur pl, et pilotée par le 3057429 24 programme d'ordinateur Pgl stocké en mémoire MEM1. Le programme d'ordinateur Pgl comprend des instructions pour mettre en oeuvre les étapes du procédé de codage tel que décrit ci-dessus, lorsque le programme est exécuté par le processeur pl. A l'initialisation, les instructions de code du programme d'ordinateur Pgl sont par exemple 5 chargées dans une mémoire RAM avant d'être exécutées par le processeur PROC. Le processeur pl de l'unité de traitement UT1 met notamment en oeuvre les étapes du procédé de codage décrit ci-dessus, selon les instructions du programme d'ordinateur Pgl. Selon un autre mode particulier de réalisation de l'invention, le procédé de codage est mis en oeuvre par des modules ou unités fonctionnel(le)s. Pour cela, le dispositif de codage 100 comprend 10 en outre les modules suivants: - Prédiction des valeurs du bloc courant à partir d'au moins un bloc précédemment traité d'une image précédente ou suivante, dite image de référence, - Calcul d'un bloc résidu par soustraction des valeurs prédites aux valeurs originales du bloc courant, 15 - Transformation du bloc résidu par application d'une transformée; - Codage du bloc résidu transformé ; Selon l'invention, le dispositif comprend en outre une unité d'obtention d'au moins un bloc voisin déjà traité, d'obtention, parmi une pluralité de listes de transformées disponibles, d'au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et de codage d'une 20 information d'identification de la transformée appliquée au bloc courant en fonction de la au moins une liste obtenue. L'unité de traitement UT1 coopère avec les différents modules fonctionnels décrits ci-dessus et la mémoire MEM1 afin de mettre en oeuvre les étapes du procédé de codage. Selon un mode de réalisation de l'invention, le dispositif 100 comprend en outre une unité 25 M1 de stockage d'une table comprenant des enregistrements associant à des blocs déjà traités la liste de transformées qui leur a été associée. Ces unités sont pilotées par le processeur µl de l'unité de traitement 110. De façon avantageuse, un tel dispositif de codage 100 peut être intégré à un équipement terminal d'utilisateur TU, tel qu'un ordinateur personnel, une tablette, une caméra numérique, un 3057429 25 téléphone mobile intelligent (pour « smartphone », en anglais), etc. Le dispositif 100 est alors agencé pour coopérer au moins avec le module suivant du terminal TU : - un module E/R d'émission/réception de données, par l'intermédiaire duquel le train binaire TB ou le fichier compressé FC est transmis dans un réseau de télécommunications, par 5 exemple un réseau filaire, radio, ou hertzien. Les différents modules fonctionnels décrits ci-dessus peuvent être sous forme matérielle et/ou logicielle. Sous une forme logicielle, un tel module fonctionnel peut comprendre un processeur, une mémoire et des instructions de code de programme pour mettre en oeuvre la fonction correspondante au module lorsque les instructions de code sont exécutées par un le processeur. 10 Sous une forme matérielle, un tel module fonctionnel peut mis en oeuvre par tout type de circuits d'encodage adaptés, tels que par exemple et de manière non limitative des microprocesseurs, des processeurs de traitement du signal (DSP pour Digital Signal Processor en anglais), des circuits intégrés spécifiques à des applications (ASICs pour Application Specific Integrated Circuit en anglais), des circuits FPGA pour Field Programmable Gate Arrays en anglais, un câblage d'unités 15 logiques. La figure 13 présente la structure simplifiée d'un dispositif de décodage 200 adapté pour mettre en oeuvre le procédé de décodage selon l'un quelconque des modes particuliers de réalisation de l'invention qui viennent d'être décrits en relation avec la Figure 7. Le dispositif de décodage 200 est adapté pour décoder un train binaire ou un fichier comprenant des données codées 20 représentatives d'au moins une image, ladite image étant découpée en blocs. Le dispositif de décodage 200 est notamment configuré pour: - Prédire (PRED) le bloc courant à partir d'au moins un bloc précédemment traité d'une image précédente ou suivante, dite image de référence; - Décoder (DEC) les valeurs codées des coefficients du bloc résidu transformé extraites du 25 train binaire ; - Identifier (ID TR) une transformée à appliquer au bloc courant au moins à partir d'une information d'identification décodée ; - Transformer (TRANS-1) le bloc résidu transformé à l'aide de la transformée identifiée; - Reconstruire (RECONST) le bloc décodé à partir du bloc résidu et de la prédiction du bloc 30 courant; 3057429 26 Selon l'invention, il est en outre configuré pour obtenir (OBT BV) au moins un bloc voisin déjà traité, obtenir (OBT LV) parmi une pluralité de listes de transformées disponibles, au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et identifier (ID TR) la transformée en fonction de la au moins une liste obtenue.Selon un mode de réalisation de 5 l'invention, il est en outre configuré pour identifier une liste Lk sélectionnée par le codeur pour le bloc courant. Selon un mode particulier de réalisation de l'invention, le dispositif de décodage 200 a l'architecture classique d'un ordinateur et comprend notamment une mémoire MEM2, une unité de traitement UT2, équipée par exemple d'un microprocesseur p.2, et pilotée par le programme 10 d'ordinateur Pg2 stocké en mémoire MEM2. Le programme d'ordinateur Pg2 comprend des instructions pour mettre en oeuvre les étapes du procédé de décodage tel que décrit ci-dessus, lorsque le programme est exécuté par le processeur Q. A l'initialisation, les instructions de code du programme d'ordinateur Pg2 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur p.2. Le processeur p.2 de 15 l'unité de traitement UT2 met notamment en oeuvre les étapes du procédé de décodage décrit ci- dessus, selon les instructions du programme d'ordinateur Pg2. Selon un autre mode particulier de réalisation de l'invention, le procédé de décodage est mis en oeuvre par des modules fonctionnels. Pour cela, le dispositif de décodage 200 comprend en outre les modules suivants : 20 - Prédiction du bloc courant à partir d'au moins un bloc précédemment traité d'une image précédente ou suivante, dite image de référence; - Décodage des valeurs codées des coefficients du bloc résidu transformé extraites du train binaire ; - Identification d'une transformée à appliquer au bloc courant au moins à partir d'une 25 information d'identification décodée ; - Transformation du bloc résidu transformé à l'aide de la transformée identifiée; - Reconstruction du bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; Selon l'invention, il comprend en outre une unité d'obtention d'au moins un bloc voisin déjà traité, d'obtention parmi une pluralité de listes de transformées disponibles, d'au moins une liste de 30 transformées associée audit au moins un bloc voisin déjà traité et l'unité d'identification de la transformée appliquée au bloc courant dépend de la au moins une liste identifiée. 3057429 27 L'unité de traitement p.2 coopère avec les différents modules fonctionnels décrits ci-dessus et la mémoire MEM2 afin de mettre en oeuvre les étapes du procédé de décodage. Le dispositif 200 comprend en outre une unité M2 de stockage d'une table associant à une valeur ou plage de valeur de l'indicateur de variabilité une liste de transformées. 5 Ces unités sont pilotées par le processeur p.2 de l'unité de traitement 4. Les différents modules fonctionnels décrits ci-dessus peuvent être sous forme matérielle et/ou logicielle. Sous une forme logicielle, un tel module fonctionnel peut comprendre un processeur, une mémoire et des instructions de code de programme pour mettre en oeuvre la fonction correspondante au module lorsque les instructions de code sont exécutées par un le processeur. 10 Sous une forme matérielle, un tel module fonctionnel peut mis en oeuvre par tout type de circuits d'encodage adaptés, tels que par exemple et de manière non limitative des microprocesseurs, des processeurs de traitement du signal (DSP pour Digital Signal Processor en anglais), des circuits intégrés spécifiques à des applications (ASICs pour Application Specific Integrated Circuit en anglais), des circuits FPGA pour Field Programmable Gate Arrays en anglais, un câblage d'unités 15 logiques. De façon avantageuse, un tel dispositif 200 peut être intégré à un terminal d'utilisateur TU, par exemple un décodeur, un boitier de connexion TV (pour « Set-Top-Box », en anglais), un téléviseur numérique, un ordinateur, une tablette, un téléphone mobile intelligent, etc. Le dispositif 200 est alors agencé pour coopérer au moins avec le module suivant du terminal TU : 20 - un module E/R d'émission/réception de données, par l'intermédiaire duquel le train binaire TB ou le fichier compressé FC est reçu du réseau de télécommunications. - un module DISP d'affichage des images numériques décodées. L'invention qui vient d'être présentée peut être utilisée dans tout système de codage d'images 25 ou de vidéo. Notamment elle a vocation à être valorisée dans un futur standard de compression ITU/MPEG. Elle peut trouver de nombreuses applications, nécessitant une compression de signal vidéo, audio (paroles, son), d'images fixes, d'images acquises par un module d'imagerie médicale. Elle s'applique par exemple aussi bien aux contenus bidimensionnels (2D), tridimensionnels (3D) incluant une carte de profondeur, ou encore d'images multispectrales (dont les intensités de 30 couleur sont différentes des trois bandes rouge vert bleu) ou enfin d'images intégrales. L'invention. 3057429 28 Il va de soi que les modes de réalisation qui ont été décrits ci-dessus ont été donnés à titre purement indicatif et nullement limitatif, et que de nombreuses modifications peuvent être facilement apportées par l'homme de l'art sans pour autant sortir du cadre de l'invention. 5 REVENDICATIONS1. Procédé de codage d'une image d'une séquence d'images, ladite image étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc de l'image courante, dit bloc courant : - Prédiction (El) des valeurs du bloc courant à partir d'au moins un bloc déjà traité issu d'au moins une image précédente ou suivante, dite de référence, - Calcul (E2) d'un bloc résidu (R) par soustraction des valeurs prédites aux valeurs originales du bloc courant, - Transformation (E6) du bloc résidu par application d'une transformée; - Codage (E7) du bloc résidu transformé ; - Codage (E8) d'une information d'identification de la transformée appliquée ; caractérisé en ce que le procédé comprend en outre une étape d'obtention (E3) d'au moins un bloc voisin déjà traité, une étape d'obtention (E4) parmi une pluralité de listes de transformées prédéterminées, d'au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et en ce que l'information d'identification de la transformée dépend de la au moins une liste obtenue. 2. Procédé de décodage d'une image d'une séquence d'images à partir de données codées représentatives de ladite image, ladite image (Ik) étant divisée en une pluralité de blocs traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc (C'), dit bloc courant : - Prédiction (D2) du bloc courant à partir d'au moins un bloc précédemment traité issu d'une image précédente ou suivante, dite de référence; - Décodage (D3) d'un bloc résidu transformé à partir des données codées; - Décodage (D8) d'une information d'identification d'une transformée à appliquer au bloc courant ; - Transformation (D9) inverse du bloc résidu transformé par application de la transformée identifiée; - Reconstruction (D10) du bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; 3057429 ledit procédé étant caractérisé en ce qu'il comprend une étape d'obtention (D6) d'au moins un bloc voisin déjà traité, une étape d'obtention (D7) parmi une pluralité de listes de transformées disponibles, d'une liste de transformées associée audit au moins un bloc voisin déjà traité et en ce que l'étape de décodage d'une information d'identification de la transformée appliquée au 5 bloc courant prend en compte la au moins une liste identifiée. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que ledit au moins un bloc voisin déjà traité appartient à un voisinage spatial du bloc courant dans l'image courante. 4. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que le au moins un bloc voisin déjà traité obtenu est colocalisé par rapport au bloc courant dans une image précédente ou 10 suivante de la séquence. 5. Procédé selon la revendication 4, caractérisé en ce que l'image précédente ou suivante est une image de référence pour la prédiction du bloc courant. 6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que, lorsque plusieurs blocs voisins sont obtenus, l'étape d'obtention comprend la sélection d'une liste dans un groupe 15 comprenant au moins : la liste comprenant le plus grand nombre de transformées ; la liste comprenant le plus petit nombre de transformées ; la liste majoritairement représentée parmi les blocs voisins identifiés, Procédé selon l'une des revendications 1 à 6, caractérisé en ce que l'étape de transformation 20 applique au bloc courant une transformée appartenant à la liste obtenue. 8. Procédé selon la revendication 7, caractérisé en ce que, lorsque la liste obtenue comprend plus d'une transformée, l'information d'identification comprend un index de position de la transformée dans la liste. 9. Procédé de codage d'une image numérique selon l'une des revendications 1 ou 3 à 6, caractérisé 25 en ce que le procédé comprend une étape de sélection d'une liste de transformées parmi la pluralité de listes disponibles, en ce que l'étape de transformation applique au bloc courant une transformée appartenant à la liste sélectionnée et en ce que l'étape de codage codage une information d'identification de la transformée comprenant une information représentative d'une 3057429 31 différence entre la liste sélectionnée pour le bloc courant et la au moins une liste associée au bloc voisin déjà traité. 10. Procédé de décodage d'une image selon l'une des revendications 2 à 6, caractérisé en ce que le procédé comprend en outre une étape (D7) d'identification d'une liste sélectionnée pour le bloc 5 courant à partir de l'information d'identification de la transformée comprise dans les données codées, ladite information comprenant une information représentative d'une différence entre la liste identifiée et la liste associée au bloc voisin déjà traité. 11. Dispositif (100) de codage d'une image d'une séquence d'images, ladite image (Ik) étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, ledit dispositif comprenant les 10 unités suivantes, aptes à être mises en oeuvre pour un bloc courant (c), de dimensions prédéterminées : Prédiction (PRED) des valeurs du bloc courant à partir d'au moins un bloc précédemment traité d'une image précédente ou suivante, dite image de référence, Calcul (CALC) d'un bloc résidu (R) par soustraction des valeurs prédites aux valeurs originales 15 du bloc courant, Transformation (TRANS) du bloc résidu par application d'une transformée, la transformée appartenant à une liste prédéterminée de transformées; Codage (COD) du bloc résidu transformé ; Codage (COD TR ID) d'une information d'identification de la transformée appliquée ; 20 caractérisé en ce que le dispositif comprend une machine dédiée ou configurée pour obtenir (OBT BV) au moins un bloc voisin déjà traité, obtenir (OBT LV) parmi une pluralité de listes de transformées disponibles, au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et en ce que l'information d'identification de la transformée appliquée au bloc courant dépend de la au moins une liste identifiée. 25 12. Dispositif (200) de décodage d'une image d'une séquence d'images à partir d'un train binaire comprenant des données codées représentatives de ladite image, ladite image étant divisée en une pluralité de blocs traités dans un ordre défini, ledit dispositif comprenant une machine de calcul dédiée à ou configurée pour Prédire (PRED) le bloc courant à partir d'au moins un bloc précédemment traité d'une image 3057429 32 précédente ou suivante, dite image de référence; - Décoder (DEC) les valeurs codées des coefficients du bloc résidu transformé extraites du train binaire ; 5 - Identification (ID TR) d'une transformée à appliquer au bloc courant au moins à partir d'une information d'identification décodée ; - Transformer (TRANS-1) le bloc résidu transformé à l'aide de la transformée identifiée; - Reconstruire (RECONST) le bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; 10 ledit dispositif étant caractérisé en ce que la machine de calcul est configurée pour obtenir (OBT BV) au moins un bloc voisin déjà traité, obtenir (OBT LV) parmi une pluralité de listes de transformées disponibles, au moins une liste de transformées associée audit au moins un bloc voisin déjà traité et en ce que l'identification de la transformée appliquée au bloc courant dépend de la au moins une liste obtenue. 15 13. Signal portant un train binaire (TB) comprenant des données codées représentatives d'une image (Ik) d'une séquence d'images, ladite image étant divisée en blocs de pixels, les valeurs d'un bloc courant étant prédites à partir des valeurs d'au moins un bloc déjà traité d'une image de référence, les valeurs d'un bloc résidu étant calculées par soustraction des valeurs prédites aux valeurs originales du bloc courant, un bloc résidu transformé étant obtenu par 20 application d'une transformée à des pixels du bloc résidu, le signal comprenant une information codée d'identification de la transformée, caractérisé en ce que l'information d'identification de la transformée appliquée au bloc courant dépend d'au moins une liste de transformées destinée à être obtenue par un décodeur du train binaire, ladite liste étant associée à au moins un bloc voisin déjà traité du bloc courant. 25 14. Equipement terminal (TU, TU') caractérisé en ce qu'il comprend un dispositif de codage d'une image selon la revendication 11 et un dispositif de décodage selon la revendication 12. 15. Programme d'ordinateur comprenant des instructions pour la mise en oeuvre du procédé selon l'une des revendications 1 à 10, lorsqu'il est exécuté par un processeur.