Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR ENCODING A DIGITAL IMAGE AND ASSOCIATED DECODING METHOD, DEVICES, TERMINAL EQUIPMENT AND COMPUTER PROGRAMS
Document Type and Number:
WIPO Patent Application WO/2018/065698
Kind Code:
A1
Abstract:
The invention relates to a method for encoding an image from a sequence of digital images, said image being divided into a plurality of blocks of pixels processed in a defined order, said method comprising the following steps, implemented for a so-called current block of the current image, of predetermined dimensions: - predicting (E1) values of the current block on the basis of at least one previously processed block of a preceding or following image, called the reference image, - calculating (E2) a residual block (R) by subtracting the predicted values from the original values of the current block, - transforming (E6) the residual block by applying a transform, the transform belonging to a predetermined list of transforms; and - encoding (E7) the transformed residual block and a piece of information identifying the applied transform. According to the invention, the method further comprises a step (E3) of obtaining a piece of information representative of a temporal distance of the block in relation to the at least one reference image, and a step (E4) of obtaining a list of transforms from among a plurality of predetermined lists, at least according to the information obtained, and the transformation step applies a transform from the list obtained.

Inventors:
BIATEK THIBAUD (FR)
LORCY VICTORIEN (FR)
PHILIPPE PIERRICK (FR)
Application Number:
PCT/FR2017/052603
Publication Date:
April 12, 2018
Filing Date:
September 27, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BCOM (FR)
ORANGE (FR)
TDF (FR)
International Classes:
H04N19/12; H04N19/146; H04N19/157; H04N19/159; H04N19/176; H04N19/463; H04N19/573; H04N19/58
Domestic Patent References:
WO2010087807A12010-08-05
WO2010087807A12010-08-05
Foreign References:
EP2418855A12012-02-15
EP2418855A12012-02-15
Other References:
GARY J. SULLIVAN ET AL: "Overview of the High Efficiency Video Coding (HEVC) Standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY., vol. 22, no. 12, 1 December 2012 (2012-12-01), US, pages 1649 - 1668, XP055284729, ISSN: 1051-8215, DOI: 10.1109/TCSVT.2012.2221191
A. ARRUFAT ET AL.: "Rate-distortion optimised transform compétition for intra coding in HEVC", PROCEEDINGS DE LA CONFÉRENCE IEEE VISUAL COMMUNICATION ON IMAGE PROCESSING, December 2014 (2014-12-01)
Attorney, Agent or Firm:
ERMENEUX, Bertrand (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Procédé de codage d'une image d'une séquence d'images numériques, 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 œuvre pour un bloc, dit bloc courant, de l'image courante, de dimensions prédéterminées :

Prédiction (El) des valeurs du bloc courant à partir d'au moins un bloc précédemment 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é; caractérisé en ce que le procédé comprend en outre une étape (E3) d'obtention d'une information représentative d'une distance temporelle du bloc résidu courant par rapport à la au moins une image de référence, une étape d'obtention (E4) d'une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information représentative d'une distance temporelle obtenue, une valeur ou une plage de valeurs de ladite information étant associée à une dite liste de transformées, et en ce que l'étape de transformation applique une transformée de la 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 œuvre pour un bloc (C), dit bloc courant :

Prédiction (D2) du bloc courant à partir d'au moins un bloc précédemment traité d'au moins une image précédente ou suivante, dite image de référence;

Décodage (D3) des données codées représentatives des coefficients du bloc résidu transformé ;

Transformation inverse (D9) du bloc résidu transformé;

Reconstruction (D10) du bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; ledit procédé étant caractérisé en ce qu'il comprend une étape (D6) d'obtention d'une information représentative d'une distance temporelle entre le bloc résidu courant et à ladite au moins une image de référence, une étape d'obtention (D7) d'une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information de distance temporelle obtenue, une valeur ou une plage de valeurs de ladite information étant associée à une dite liste de transformées et une étape d'identification (D8) de la transformée à appliquer dans la liste obtenue.

Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que, l'information représentative d'une distance temporelle augmente ou diminue avec la distance temporelle entre le bloc résidu et l'image de référence et en ce que le nombre de transformées de la liste obtenue augmente avec la distance temporelle.

Procédé selon la revendication 1 à 3, caractérisé en ce que, les images d'un grou pe d'images de la séquence étant réparties entre plusieurs couches temporelles, l'information représentative d'une distance temporelle comprend un identifiant de couche temporelle de l'image du bloc courant dans le groupe d'images, ledit identifiant étant associé à une liste de transformées dans une table.

Procédé selon la revendication 1 à 4, caractérisé en ce que l'information représentative d'une distance temporelle est obtenue par différence entre une information représentative d'un instant temporel associé à l'image du bloc courant et une information représentative d'un instant temporel associé à ladite au moins une image de référence.

Procédé de codage d'une image selon l'une des revendications 1 et 3 à 5, caractérisé en ce que, lorsque la liste obtenue comprend une séquence ordonnée de plusieurs transformées, l'étape de transformation est répétée pour les transformées de la liste, le procédé comprend une étape de sélection d'une transformée parmi les transformées de la liste appliquées au bloc courant selon un critère débit distorsion et une étape de codage d'une information représentative d'un index de position de la transformée sélectionnée dans la liste obtenue.

Procédé de décodage d'une image numérique selon l'une des revendications 2 à 5, caractérisé en ce que, lorsque la liste comprend plusieurs transformées, l'étape d'identification de la transformée comprend en outre une étape de décodage d'une information d'identification de la transformée dans la liste.

Dispositif (100) de codage d'une image numérique, ladite image (Ik) étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, ledit dispositif comprenant une machine de calcul dédiée à et configurée 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,

Calculer (CALC) un bloc résidu (R) par soustraction des valeurs prédites aux valeurs originales du bloc courant,

Transformer (TRANSF) le bloc résidu par application d'une transformée;

Coder (COD) le bloc résidu transformé ; caractérisé en ce que la machine de calcul est en outre configurée pour obtenir (OBT IV) une information représentative d'une distance temporelle entre le bloc résidu courant et ladite au moins une image de référence, obtenir (OBT L) une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information de distance temporelle obtenue, une valeur ou une plage de valeurs de ladite information étant associée à une dite liste de transformées, et pour appliquer au bloc résidu une transformée identifiée dans la liste obtenue.

Dispositif (200) 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 dispositif comprenant une machine de calcul dédiée à et configurée pour :

Prédire (PRED) un 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) des valeurs codées des coefficients du bloc résidu transformé extraites du train binaire ;

Réaliser une transformation inverse (TRANS-1) du bloc résidu transformé;

Reconstruire (RECONST) le bloc décodé à partir du bloc résidu et de la prédiction du bloc courant; ledit dispositif étant caractérisé en ce que la machine de calcul est en outre configurée pour obtenir (OBT IV) une information représentative d'une distance temporelle entre le bloc résidu courant et ladite au moins une image de référence, obtenir (OBT L) une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'indicateur obtenu, une valeur ou une plage de valeurs de l'indicateur étant associée à une dite liste de transformées, et identifier (ID TR) la transformée dans la liste obtenue.

10. Equipement terminal (TU) caractérisé en ce qu'il comprend un module d'émission (E/R) et un module (E/R) de réception de données vers et en provenance d'un réseau de télécommunications, un dispositif (100) de codage d'une image numérique selon la revendication 8 et un dispositif de décodage (200) selon la revendication 9.

11. Programme d'ordinateur (Pgl) comprenant des instructions pour la mise en œuvre du procédé de codage d'une image numérique selon l'une des revendications 1 et 3 à 6, lorsqu'il est exécuté par un processeur.

12. Programme d'ordinateur comprenant des instructions pour la mise en œuvre du procédé de décodage d'une image numérique selon l'une des revendications 2 à 5 et 7, lorsqu'il est exécuté par un processeur.

Description:
Procédé de codage d'une image numérique, procédé de dé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.

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 œuvre 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, , Ικ, avec K entier non nul. Une image I k 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 média delivery in heterogeneous environments -- Part 2: High efficiency video coding », International Organization for Standardization, publié en novembre 2013 ou dans la spécification ITU-T H.265 intitulée « High Efficiency Video Coding », publiée en avril 2015.

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 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 l'art antérieur et présentée en relation avec la Figure 2.

On sélectionne comme bloc courant c le premier bloc CTU à traiter. Par exemple, il s'agit du premier bloc (dans l'ordre lexicographique). Ce bloc comporte NxN pixels, avec N entier non nul, par exemple égal à 64 selon la norme HEVC. Au cours d'une étape El, on détermine une prédiction Pr du bloc original b. 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), ou par prédiction intra (bloc construit à partir des pixels décodés appartenant à l'image ID). Les informations de prédiction liées à Pr sont codées dans le train binaire TB ou fichier compressé FC. On suppose ici qu'il y a P modes de prédiction possibles mi, rri2,..., m p , avec P entier non nul. Par exemple, le mode de prédiction choisi pour le bloc courant c est le mode m p . Certains modes de prédiction sont associés à une prédiction de type Intra, d'autres à une prédiction de type INTER.

Au cours d'une étape E2, un résidu original R est formé, par soustraction R = c-Pr de la prédiction Pr du bloc courant c au bloc courant c. En E3, on identifie une transformée à appliquer au résidu R obtenu.

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 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 « Discrète Sine Transform », en 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).

A titre d'exemple on présente en relation avec les Figures 2A et 2B, les transformées utilisées par la norme HEVC sur les blocs de taille 4x4 : Il s'agit des transformées DCT et DST. Les valeurs présentées dans ce tableau sont à diviser par 128 pour retrouver les transformations quasi- orthonormales.

Plus récemment la notion de compétition de transformées a été introduite. Pour une taille de bloc 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 absence de transformée « Transform Skip » (c'est-à-dire que les coefficients résiduels ne subissent pas de transformée).

Dans la publication de A. Arrufat et al, intitulée « Rate-distortion optimised transform compétition 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 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.

Au cours d'une étape E4, le résidu R est transformé en un bloc résidu transformé, appelé RT, par la transformée identifiée. Il s'agit par exemple d'une transformée de type block (communément DCT voire DST voire des transformations adaptées) ou d'une transformée en ondelettes, toutes connues de l'homme de métier et notamment mises en œuvre dans les normes JPEG/MPEG pour la DCT/DST et JPEG2000 pour la transformée en ondelettes. En E5, de façon connue dans l'état de l'art, ces coefficients sont scannés dans un ordre prédéterminés de façon à constituer un vecteur monodimensionnel RQ[j], où l'indice j varie de 0 à Nb-1, avec Nb entier égal au nombre de pixels du bloc c. L'indice j est appelé fréquence du coefficient RQ[j] . 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.

En E6, le résidu transformé RT est quantifié par des moyens classiques de quantification, par exemple scalaire ou vectorielle, en un bloc résidu quantifié RQ comprenant autant de coefficients que le bloc résidu RQ contient de pixels, par exemple Nb, avec Nb entier non nul. Lors d'une étape E7, on vient coder les informations relatives aux coefficients du bloc résidu

RQ par codage entropique, par exemple selon une technique de codage de Huffman ou de codage arithmétique. Ces informations comprennent au moins l'amplitude des coefficients, leur signe et une signalisation de la transformée appliquée au bloc par l'encodeur. Par amplitude, on entend ici la valeur absolue du coefficient. Classiquement, on peut coder pour chaque coefficient une information représentative du fait que le coefficient est non nul . Ensuite, pour chaque coefficient non nul, une ou plusieurs informations relatives à l'amplitude sont codées. On obtient les amplitudes codées CA. On code aussi les signes des coefficients non nuls. En général, ils sont simplement codés par un bit 0 ou 1, chaque valeur correspondant à une polarité donnée. Un tel codage obtient des performances efficaces, car, du fait de la transformation, les valeurs des amplitudes à coder sont en grande majorité nulles.

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.

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 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 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.

En E8, l'encodeur évalue la transformée appliquée, sous contrôle d'un critère débit distorsion, à partir du résidu encodé.

On répète les étapes précédentes El à E8 appliquées au bloc courant c pour les T transformée disponibles à l'encodeur.

En E9, une fois que toutes les transformées disponibles ont été appliquées, elles sont mises en compétition selon un critère débit-distorsion Les résidus transformés quantifiés associés à chaque transformée candidate sont donc décodés pour évaluer une mesure de performance et la transformée qui maximise ce critère est finalement retenue.

En E10, les données codées relatives au bloc courant sont insérées dans le train binaire TB.

Les autres blocs de l'image II sont traités de la même façon, de même pour les images suivantes de la séquence. 3. Inconvénients de l'art antérieur

Les inconvénients de l'art antérieur sont les suivants :

• 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.

On connaît du document publié sous le numéro EP 2 418 855 une méthode pour réduire le nombre de transformées disponibles dans une liste prédéterminée de transformées d'une même famille, par exemple DCT, mais de tailles différentes, pour le codage d'un bloc issu du partitionnement d'un macrobloc. La réduction est réalisée en éliminant les transformées dont la taille n'est pas compatible avec le format du bloc. L'opération est reproduite par le décodeur ce qui permet au codeur de ne rien signaler.

On connaît du document publié sous le numéro WO2010/087807 un procédé de codage d'une séquence d'images qui décrit le fait de sélectionner une transformée pour le bloc courant dans un sous-ensemble de transformées choisi parmi plusieurs sous-ensembles connus à l'avance du codeur et du décodeur. Le sous-ensemble est signalé au décodeur dans le train binaire. 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, 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

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 œuvre pour un bloc, dit bloc courant, de l'image courante:

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 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é;

Selon l'invention, le procédé comprend en outre une étape d'obtention d'une information représentative d'une distance temporelle du bloc résidu courant par rapport à la au moins une image de référence, une étape d'obtention d'une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information représentative d'une distance temporelle obtenue, une valeur ou une plage de valeurs de ladite information étant associée à une dite liste de transformées, et l'étape de transformation applique une transformée de la liste obtenue.

L'invention propose de choisir la transformée à appliquer au bloc courant dans un sous ensemble de transformées adapté au bloc courant. Les inventeurs ont en effet constaté qu'il existait un lien entre la distance du bloc courant par rapport à sa ou ses références, et donc entre la qualité de la prédiction du bloc et les transformées les mieux adaptées pour compresser l'information du résidu obtenu. L'invention repose donc sur une approche tout-à-fait nouvelle et inventive du codage d'images qui consiste à regrouper les meilleures transformées candidates pour le codage du résidu d'un bloc en fonction d'une information représentative d'une variabilité du contenu du bloc à coder et à imposer au codeur de faire son choix dans ce sous-ensemble.

En choisissant la transformée dans un sous-ensemble de l'ensemble initial de transformées disponible au niveau du codeur, on réduit nécessairement le coût de l'information à transmettre.

Avantageusement, la configuration des listes peut être figée ou bien évoluer au cours du temps.

Si elle est figée, sa connaissance est partagée par le codeur et le décodeur et ne nécessite pas de signalisation. Si elle est adaptative, son évolution au cours du temps doit être signalée. Par exemple, la configuration des listes peut être destinée à un groupe d'images et son évolution est signalée au niveau des informations de syntaxe relatives à ce groupe ou bien la configuration vaut pour la séquence d'images entière et son évolution est signalée au niveau des informations de syntaxe relatives à cette séquence.

Selon un aspect de l'invention, l'étape de transformation est répétée pour les transformées de la liste obtenue, le procédé comprend une étape de sélection d'une transformée parmi les transformées de la liste selon un critère débit distorsion et une étape de codage d'une information d'identification de la transformée sélectionnée dans la liste.

Par exemple, le codeur signale un index de position de la transformée sélectionnée dans la liste, ce qui présuppose que la liste est ordonnée de façon similaire au codeur et au décodeur.

Dans un contexte de compétition de transformées, le fait d'avoir moins de transformées à tester réduit la complexité de l'encodeur et du décodeur. Cet avantage de l'invention s'ajoute à celui d'avoir moins d'informations à signaler car le nombre de transformées candidates est réduit.

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 œuvre pour un bloc, dit bloc courant :

Prédiction du bloc courant à partir d'au moins un bloc précédemment traité issu d'au moins une image précédente ou suivante, dite de référence; Décodage des données codées représentatives des coefficients du bloc résidu transformé ; Transformation inverse du bloc résidu transformé;

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'une information représentative d'une distance temporelle entre le bloc résidu courant et à ladite au moins une image de référence, une étape d'obtention d'une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information de distance temporelle obtenue, une valeur ou une plage de valeurs de ladite information étant associée à une dite liste de transformées et une étape d'identification de la transformée à appliquer dans la liste obtenue. Un avantage de l'invention est que les étapes d'obtention d'un indicateur de variabilité du bloc courant et d'obtention d'une liste de transformées en fonction de cet indicateur peuvent être réalisées au niveau du décodeur de façon correspondante au codeur, ce qui permet de réduire la signalisation. elon un aspect de l'invention, l'information représentative d'une distance temporelle augmente ou diminue avec la distance temporelle entre le bloc résidu et l'image de référence et le nombre de transformées de la liste obtenue augmente avec la distance temporelle.

En effet, la variabilité des résidus générés par la prédiction augmente avec l'éloignement temporel. Le sous-ensemble associé à une valeur ou une plage de valeurs de distance temporelle entre image courante et image de référence peut être défini lors d'une phase préalable d'apprentissage au cours de laquelle différents regroupements de transformées sont testés. Par exemple, on détermine une liste comprenant d'autant moins de transformées que la distance temporelle entre l'image courante et l'image de référence est plus faible. En effet, la variabilité des résidus entre les deux images est supposée être suffisamment faible pour qu'un petit nombre de transformées bien ciblé permette de bien compresser l'information qu'ils contiennent.

Avec une distance temporelle et donc une variabilité faible, le résidu du bloc contient peu d'énergie et sera facile à compresser. Un petit nombre de transformées sera suffisant. Au contraire, avec un indicateur de variabilité élevée, on peut s'attendre à un résidu de bloc comprenant beaucoup d'énergie et difficile à compresser. En conséquence, on choisira de tester un plus grand nombre de transformées. Ainsi l'invention proposer d'adapter la taille du sous-ensemble de transformées disponibles pour le bloc courant à sa variabilité ce qui permet d'optimiser la signalisation de la transformée en fonction du bloc courant. Dans un contexte de compétition de transformées, les coûts de calcul sont aussi réduits.

Selon un autre aspect de l'invention, les images d'un groupe d'images de la séquence étant réparties entre plusieurs couches temporelles, l'information représentative d'une distance temporelle est évaluée à partir d'un identifiant de couche temporelle de l'image du bloc courant dans le groupe. On connaît le modèle hiérarchique de couches temporelles décrit par Wien, selon 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 comprend les images I ou Intra, qui sont éloignées les unes des autres, mais ne sont pas prédites, une deuxième couche 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 comprenant des images qui s'intercalent 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.

L'information de numéro de couche est une information qui est connue du codeur, comme du décodeur et qui est facilement accessible. Par exemple, dans H .265/HEVC, l'information de numéro de couche temporelle est transmise dans l'en-tête de chaque paquet NAL unit (pour Network Abstraction Layer), et est donc directement accessible lors du décodage (voir section 7.4.2.2 de la norme ITU-T H.265, « NAL unit header semantics »). L'évaluation de distance temporelle sur la base d'une telle information est donc simple et peu coûteuse.

Selon encore un autre aspect de l'invention, l'information représentative d'une distance temporelle est évaluée par différence entre une information représentative d'un instant temporel associé à l'image du bloc courant et une information représentative d'un instant temporel associé à la au moins une image du bloc de référence.

Un avantage de ces informations est qu'elles sont connues du codeur et du décodeur lors du traitement d'un bloc courant.

Par exemple, l'information représentative d'un instant temporel est un numéro d'ordre de l'image courante dans la séquence. Un avantage de cette information est d'être facile à obtenir. La différence entre deux numéros d'images ou delta POC est même directement accessible, sans nécessiter d'opération de calcul. Par exemple dans H.265/HEVC le delta POC est un paramètre essentiel lors de la construction du RPS (pour Référence Picture Set, en anglais) comme décrit dans la section 8.3.2 de la norme ITU-T H.265 intitulée HEVC, « Decoding process for référence picture set »), et il s'agit donc un paramètre directement accessible lors de l'encodage et du décodage.

Si le bloc courant appartient à un groupe de blocs d'une image, de type slice, sa ou ses images de référence sont définies dans deux listes au niveau du slice segment header (voir 7.3.6.2 de la norme ITU-T H.265 intitulée HEVC, "Référence picture list modification syntax"). On peut imaginer une image découpée en plusieurs slices ayant chacune des listes distinctes. Il se peut donc que deux slices d'une même image n'utilisent pas les mêmes images de références pour leurs blocs, et donc que l'information de distance temporelle ne prenne pas la même valeur.

Selon un autre aspect de l'invention, la liste comprenant plusieurs transformées, le procédé de décodage comprend en outre une étape de décodage d'une information d'identification de la transformée dans la liste.

Par exemple, lorsque la liste comprend une séquence ordonnée de transformées, l'information d'identification est un index de position de la transformée dans la séquence.

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éfinis ci-dessus.

L'invention concerne également un dispositif de codage adapté pour mettre en œuvre 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 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 œuvre 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 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 aussi un équipement terminal comprenant un module d'émission et un module de réception de données vers et en provenance d'un réseau de télécommunications, un dispositif de codage et un dispositif de décodage selon l'invention.

L'invention concerne encore un programme d'ordinateur comportant des instructions pour la mise en œuvre des étapes d'un procédé de codage d'une image numérique tel que décrit précédemment, lorsque ce programme est exécuté par un processeur.

L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la mise en œuvre des étapes d'un procédé de décodage d'une image numérique 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 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 programme d'ordinateur mettant en œuvre un procédé de codage et un programme d'ordinateur mettant en œuvre 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 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 ; les figures 2A et 2B (déjà décrites) présentent les transformées DCT et DST mises en œuvre par l'encodeur de la norme HEVC ; la figure 3 présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon l'invention ; la figure 4 présente de façon schématique les étapes d'un procédé de décodage d'une image numérique selon l'invention ; la figure 5 présente de façon schématique un modèle de structure temporelle hiérarchique d'un groupe d'images mis en œuvre par un mode de réalisation de l'invention ; la figure 7 présente un premier exemple de table de transformées associant un numéro de couche temporelle à une liste selon un mode de réalisation de l'invention ; les figure 8A et 8B présente un deuxième exemple 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ées dans la deuxième table, selon un deuxième mode de réalisation de l'invention ; la figure 9 présente des exemples de configurations de listes de transformées en fonction d'un numéro de couche temporelle ; la figure 10 présente les performances réalisées par un codeur mettant en œuvre le procédé de codage selon l'invention, lorsque l'information de distance temporelle utilisée est un numéro de couche temporelle ; la figure 11 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 12 présente de façon schématique la structure matérielle d'un dispositif de décodage d'une image numérique selon l'invention.

7. Description d'un mode de réalisation particulier de l'invention

Le principe général de l'invention repose sur une association préalable de sous-ensembles de transformées à des valeurs ou à des plages de valeurs d'une distance temporelle du bloc courant par rapport à au moins u ne image de référence. Cet indicateur est estimé de façon similaire au codeur et au décodeur. Le codeur obtient une valeur d'indicateur pour le bloc courant, choisit la transformée à appliquer au bloc courant dans le sous ensemble de transformées associé à cette valeur de l'indicateur. Si besoin, il signale ensuite au décodeur quelle transformée il a utilisé dans ce sous- ensemble. De façon correspondante, le décodeur obtient une valeur de distance temporelle pour le bloc courant et accède au sous-ensemble de transformée qui lui est associé. A l'aide de la signalisation éventuelle, il identifie la transformée appliquée au bloc courant et applique la transformée inverse.

Dans la suite de la description, on considère une vidéo originale constituée d'une suite de K images Ii, ,■■■Ικ, 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 stocké sur un disque dur par exemple. Le décodeur extrait les données codées, puis reçues et 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 , puis IK, cet ordre pouvant différer suivant le mode de réalisation.

Dans la suite de la description, on se place dans un contexte de compétition de transformées, selon lequel le codeur teste les transformées d'un sous-ensemble de transformées et choisit pour le bloc courant celle qui réalise les meilleures performances de compression selon un critère débit- distorsion. 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 I k est découpée en blocs CTU (pour « Coding Tree Unit », en anglais) de taille, par exemple égale à 64x64 pixels.

Au cours d'une étape E0, 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 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. 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 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 une distance temporelle, ou indicateur de variabilité IV du bloc courant par rapport au(x) images de référence. Plusieurs modes de réalisation de cette étape seront détaillés ci-après.

Au cours d'une étape E4, on identifie les transformées possibles pour le mode de prédiction considéré et la taille du bloc courant. On désigne par 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. Par exemple, cette pluralité est stockée sous forme d'une liste L ordonnée ou non, de transformées. On notera que cette liste peut être prédéterminée ou adaptative.

Selon l'invention, une pluralité de listes Ll à U, avec J entier non nul, a été formée à partir des transformées disponibles et on associe à la valeur de distance temporelle IV obtenue une de ces listes. Par exemple, une table stockée en mémoire comprend des enregistrements EGj, avec j entier inférieur à T qui font chacun correspondre à une valeur ou une plage de valeurs particulières de cet indicateur de variabilité, une liste Lj issue de la liste L. Avantageusement, un enregistrement EGj de la table associe à chaque valeur ou plage de valeurs de l'indicateur, un pointeur vers cette liste Lj. Des exemples de tables seront présentés ci-après en relation avec les figures 7 et 8.

Dans certains cas, la configuration des listes associées aux différentes valeurs de distance temporelle peut varier au cours du temps, pour s'adapter au changement de contenu de la séquence. Par exemple, la table comprend un premier enregistrement comprenant une première liste associée à une valeur ou une plage de valeurs prédéterminées de distance temporelle. On suppose que le codeur décide, suite à un changement de scène, de remplacer le premier enregistrement par un deuxième enregistrement comprenant une deuxième liste, associée à la même plage de valeurs. Cette mise à jour doit être signalée dans le train binaire afin que le décodeur mette à jour sa propre table.

Au cours d'une étape E5, on identifie une transformée Tri particulière dans la liste Lj obtenue.

Au cours d'une étape E6, pour la transformée Tn 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é RTi 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], 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 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 Tn dans la liste Lj 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 Lj et sera de ce fait considérée comme une transformée distincte.

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.

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.

Au cours de cette étape, on examine s'il est nécessaire de signaler une information d'identification de la transformée Tri appliquée au bloc courant. On distingue deux cas :

Lorsque la liste Lj 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 l'invention est agencé pour obtenir la liste Lj de façon correspondante à celle de l'encodeur.

Un avantage de ce mode de réalisation est qu'il est simple à mettre en œuvre et qu'il ne nécessite pas de signalisation, dans la mesure où la configuration de la liste est figée.

Lorsque la liste Lj comprend plus d'un identifiant de transformée, le codeur signale au décodeu r un index de position POS de la transformée Tri appliquée au bloc courant dans la liste Lj. Pour ce faire, la liste est avantageusement ordonnée de telle sorte que le codeur et le décodeur partagent la connaissance des positions des transformées dans la liste. Par exemple un identifiant de la transformée Tri dans une liste de quatre éléments est codé sur 4 bits (transformées TrO, tri, Tr2 et Tr3 respectivement pour un code 00, 01, 10, 11) alors qu'une liste de 8 éléments coûterait 3 bits (000, 001, 010, 011, 100, 101, 110 et 111 respectivement pour les transformées TrO, Tri, Tr2, Tr3, Tr4, Tr5, Tr6, Tr7 et Tr8), dans le cas d'un code à longueur fixe.

Un avantage de l'invention 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. En E9, 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 + A x R, où D est la distorsion mesu rée su r le bloc reconstruit, R le débit généré lors du codage et λ le multiplicateur de Lagrange. En E10, on vérifie si toutes les transformées de la liste Lj ont été appliquées.

Si ce n'est pas le cas, on retourne à l'étape E5 au cou rs de laquelle une autre transformée de la liste Lj est identifiée. Les étapes E6 à E10 sont répétées pour la nouvelle transformée.

Si c'est le cas, on décide au cours de l'étape Eli de la meilleure transformée, à partir des valeurs de fonction de coût obtenues par chacune des transformées de la liste Lj et selon un critère d'optimisation débit-distorsion.

On notera que dans le cas d'un bloc CTU, la compétition de transformées est imbriquée avec la sélection du meilleur découpage en sous-blocs CU, c'est-à-dire qu'au cours de l'étape El i on choisit la meilleure transformée pour chacun des sous-blocs CU du bloc courant CTU.

Les données codées correspondant à la transformée choisie sont insérées dans le train binaire ou fichier compressé en E12.

En E13, on teste s'il reste des blocs à traiter dans l'image courante. Si oui, le procédé 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.

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 œuvre un procédé de décodage selon l'invention. Ce procédé de décodage va maintenant être décrit en relation avec la Figure 4.

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.

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 Dl, 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 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 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.

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 une distance temporelle, ou indicateur de variabilité IV, du bloc courant par rapport à sa ou ses références, de façon correspondante à celle du codeur. Plusieurs modes de réalisation vont être détaillés ci-après. On verra que, selon les mises en œuvre considérées, l'obtention peut être réalisée une fois pour tous les blocs d'une même image ou d'un même groupe d'image, ou bien doit être répétée pour chaque bloc courant.

En D7, on récupère une liste de transformées Lj associée à la valeur de la distance temporelle obtenue. Par exemple, lorsque les configurations des listes sont prédéterminées, elles sont connues du décodeur et associées respectivement à une valeur ou une plage de valeurs de la distance temporelle. Si les configurations ne sont pas prédéterminées, elles sont signalées dans le train binaire préalablement au décodage de l'image de façon à être connues du décodeur.

En D8, on identifie la transformée Tri appliquée au bloc résidu par le codeur. Deux cas sont envisagés : la liste Lj ne contient qu'une seule transformée. Le décodeur y accède directement sans besoin d'information supplémentaire ; la liste Lj contient plus qu'une transformée. Le décodeur lit dans le train binaire ou le fichier compressé une information de signalisation de la transformée Tri dans la liste. Il s'agit par exemple d'un index de position POS de la transformée dans la liste. L'hypothèse sous-jacente est que le codeur et le décodeur partagent une même connaissance d'un ordre des transformées dans la liste. .

De façon correspondante au codage, on note que le décodeur peut être amené à identifier une transformée Tri par sous-bloc CU du bloc CTU courant.

En D9, la transformée inverse de Tri est appliqué 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 M l, de façon à pouvoir servir de prédiction pour un bloc suivant.

Au cours d'une étape D12, on vient tester si le bloc courant est le dernier bloc à traiter le 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 Dl à D12 précédemment décrites sont répétées pour le bloc suivant sélectionné.

7.3 Obtention d'une information représentative d'une distance temporelle entre le bloc courant et au moins un bloc de référence On décrit maintenant plusieurs modes de réalisation de l'étape E3 d'obtention d'une distance temporelle d'un bloc courant C et de l'étape E4 d'obtention d'une liste en fonction de cette information. De façon correspondante ces modes de réalisation s'appliquent aux étapes D6 et D7 du procédé de décodage selon l'invention.

7.3.1 premier mode de réalisation

En relation avec la Figure 4, on considère un modèle de représentation hiérarchique en couches temporelles, dit modèle de Wien, d'un groupe d'images ou GoP (pour « Group of Pictures », en anglais) de la séquence, typiquement mise en œuvre par les normes successives de compression vidéo, telles que par exemple H265 ou HEVC.

Dans l'exemple représenté, le GoP comprend 9 images. Dans la séquence d'entrée, les images du GoP sont ordonnées de 10 à 18 avec des instants temporels associés tel que t0<tl <...<t8, correspondant à un ordre de restitution des images de la vidéo. A l'encodage, ces images sont traitées selon un ordre d'encodage qui diffère de l'ordre de restitution. La structure temporelle d'encodage s'appuie sur différents types d'images, parmi lesquels on distingue : les images Intra, qui sont codées indépendamment d'autres images précédemment traitées et servent de référence pour la prédiction inter d'autres images du GoP ;

les images Inter de type P, qui sont codées par prédiction temporelle à partir d'une image de référence déjà traitée, qui peut correspondre à un instant de restitution passé ou futur ; une image P peut servir elle-même de référence temporelle à une autre image ;

les images Inter de type B, qui sont codées par prédiction temporelle à partir de deux images de référence, une passée et une future. Une image B peut servir de référence temporelle à une autre image.

Dans l'exemple représenté, 10 et 18 sont des images Intra. Les images II à 17 sont des images B. Il n'y a pas d'image P.

Selon le modèle de Wien, on décompose le GoP en plusieurs couches temporelles : une première couche tidO, comprenant les images 110 et 18 . L'image 10 est codée la première, elle a donc le rang de codage rcO = 0 et l'image 18 est codée en deuxième, son rang est rc8 = 1 ;

une deuxième couche tid l, comprenant l'image 14 de type B. Ses images de référence sont 10 et 18. Son rang de codage est rc4 = 2 ; une troisième couche tid2, comprenant les images 12 et 16 de type B. 12 a pour références 10 et 14. 16 a pour références 14 et 18. Leurs rangs de codage sont rc2 = 3 et rc6 = 4 ;

une quatrième couche tid 3 comprenant les images II, 13, 15 et 17. Il a pour références 10 et 12, son rang de codage vaut rcl = 5 ; 13 a pour références 12 et 14, son rang de codage vaut rc3 = 6 ; 15 a pour références 14 et 16, son rang de codage vaut rc5 = 7 ; 17 a pour références

16 et 18, son rang de codage vaut rc 7.

On constate qu'une image est d'autant plus éloignée de ses références qu'elle appartient à une couche temporelle plus basse.

Or les inventeurs ont constaté que plus l'image courante est éloignée temporellement de ses références, plus la variabilité du bloc augmente. En effet, la probabilité que le contenu de l'image courante ait changé par rapport à celui de ses références est alors d'autant plus grande.

Selon ce mode de réalisation de l'invention, l'information représentative d'une distance temporelle du bloc comprend le numéro de couche temporelle à laquelle l'image courante appartient. Un avantage est que cette valeur est disponible au niveau du codeur et très facile à obtenir côté décodeur car, selon la norme ITU-T H265/HEVC par exemple, cette information est spécifiée dans l'élément de syntaxe nuh_temporal_id_plusl situé dans l'en-tête nal_unit_header() tel que spécifié dans la section 7.3.1.2 de la spécification ITU-T H .265 intitulée « High Efficiency Video Coding », publiée en avril 2015.

Le numéro de couche temporelle est commun à tous les blocs d'une même image ou d'un sous- ensemble de cette image, par exemple de type « slice ». Néanmoins, cette valeur est lue dans une mémoire pour chaque bloc à traiter. Côté codeur, l'étape E3 d'obtention d'une information représentative d'une distance temporelle est donc répétée pour chaque bloc courant. Côté décodeur, même si la valeur de numéro de couche temporelle est lue dans le train binaire une fois pour toutes, elle est stockée en mémoire, de telle sorte que le décodeur puisse y accéder pour le traitement du bloc courant.

En E4, on obtient donc une liste Lj de transformées associées au numéro de couche temporelle tidj du bloc courant.

On a donc créé au préalable une liste de transformées spécifique pour chaque numéro de couche temporelle. Par exemple, une table de correspondance fait correspondre un niveau temporel donné à une telle liste. Cette correspondance est soit fixe (connue du codeur et du décodeur), ou bien adaptative. Le cas adaptatif implique la signalisation des informations nécessaires, par exemple un pointeur vers une nouvelle liste. Ces informations seront par exemple placées et transmises pour une séquence d'images donnée, par exemple dans la structure syntaxique SPS (pour Séquence Parameter Set, en anglais) décrite dans la section 7.3.2.2 de la spécification ITU-T H.265, ou encore dans la structure syntaxique PPS pour (picture parameter set, en anglais), décrite dans la section 7.3.2.3 de la même norme. Ces structures syntaxiques sont transmises au décodeur dans le train binaire préalablement aux informations de décodage de la séquence d'images ut (comprenant les données codées représentatives des résidus, vecteurs de mouvements, modes de prédictions, filtres, etc).

L'étape d'obtention de la liste Lj en fonction du numéro de couche temporelle est donc elle aussi réalisée une fois pour tous les blocs de l'image ou de la slice considérée.

On détaille maintenant un exemple de mise en œuvre de ce mode de réalisation de l'invention dans le cadre du JEM-3.0, qui est le logiciel de test utilisé actuellement dans le grou pe 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). Ce logiciel est décrit dans le document JVET-C1001 à l'adresse http ://phenix.it-sudparis.eu/ivet/doc end user/documents/3 Geneva/wql l/JVET-ClOOl- v3.zip.

On considère à titre d'exemples 4 listes de transformées distinctes, de tailles croissantes :

• LO : DCT-2

• Ll : DCT-2 + {TO, Tl>

· L2 : DCT-2 + {TO, Tl, T2, T3}

• L3 : DCT-2 + {TO, Tl, T2, T3, T4, T5, T6, T7}.

En relation avec la Figure 7, on présente un exemple d'association de liste avec un numéro de couche temporelle : tid3 est associé avec LO, tid2 avec Ll, tidl avec L2 et tidO avec L3.

En variante, ces listes peuvent être obtenues à partir des tables des Figures 8A et 8B. La Figure 8A associe à un identifiant de liste un nombre de transformées, par exemple 1 pour L3, 3 pour L2, 5 pour Ll et 7 pour LO et la Figure 8B comprend une table composée de plusieurs lignes, une ligne ou enregistrement de la table associant à des valeurs particulières de taille du bloc une séquence ordonnées de T-l transformées. Cette table est avantageusement stockée en mémoire du codeur ou du décodeur. On voit que les listes Lj sont obtenues à partir de cette unique table. Les T-l transformées sont rangées selon un ordre inversement proportionnel à leur fréquence d'appartenance aux listes préconfigurées. Autrement dit, les deux premières transformées de la séquence font partie de toutes les 4 listes, les deux suivantes des 3 dernières listes L2, Ll, L0, les deux encore suivantes des 2 dernières listes Ll, L0 et les deux dernières de la plus grande liste L0. Une première transformée, en l'espèce la DCT2-2D est commune à toutes les listes et n'est pas indiquée dans le tableau .

On comprend que pour récupérer les identifiants des transformées d'une liste Lj, il suffit dans ce mode de réalisation d'aller lire dans la table de la figure 8A le nombre de transformées qu'elle comprend et de lire le nombre d'identifiants correspondant dans la bonne ligne de la table de la figure 8B

On note que la table de la Figure 8B indique des couples de transformées plutôt que des transformées uniques ce qui correspond au fait qu'en codage d'image et vidéo, les transformées les plus utilisées sont généralement des transformées blocs linéaires et orthogonales, applicables aussi bien aux lignes qu'aux colonnes du bloc courant. Dans ce cas on spécifie un couple de transformées L-C lesquelles s'appliquent respectivement aux lignes et aux colonnes du résidu selon la relation exprimée dans l'équation ci-dessous :

X = L (C χ)' , avec x bloc résidu de pixels et X bloc résidu transformé.

En relation avec la table de la Figure 9, on considère maintenant des exemples de configurations de listes par couche temporelle. Ces différentes configurations sont mises à disposition d'un codeur type JEM-3 :

Ces différentes configurations ont été testées dans le codeu r et le décodeur JEM-3.0 et ont conduit aux résultats de la Figure 10. On constate qu'une configuration de liste adaptée permet d'améliorer les performances de codage du codeur JEM-3.0. Ici, la configuration est mise à jour pour chaque nouvelle séquence.

Par exemple, pour la séquence ClassD-S02-BQSquare_416x240_60, les configurations suivantes sont utilisées :

• pour les pas de quantification QP22 et QP32, utilisation de la configuration 0 ;

• pour le pas de quantification QP27 -> utilisation de la configuration 2 ;

· pour le pas de quantification QP37 -> utilisation de la configuration 5. Sur les séquences testées, ce mode de réalisation de l'invention permet d'améliorer en moyenne de débit de 0.14% avec des résultats plus élevés su r certaines séquences (jusqu'à -0.33%). Dans cet exemple, la configuration des listes et leur association aux numéros de couches temporelles par séquence est signalée dans l'en-tête SPS. On note qu'une augmentation du niveau de granularité (par exemple en passant au niveau image ou PPS) avec une mise à jour plus régulière des listes rendrait le système encore plus performant, puisque plus adapté aux variations temporelles du contenu et donc plus à même de traiter la variété et le type de résidus rencontrés. Par exemple, si l'encodeur évalue que la -liste associée à une couche temporelle n'est plus adaptée au contenu qu'il encode, par exemple parce qu'il a détecté un changement de scène, alors il peut choisir signaler dans le train binaire, par exemple au niveau de l'en-tête PPS, les informations nécessaires à la mise à jour des listes, d'une façon que le décodeur est configuré pour décoder et interpréter.

Avantageusement, le codeur insère systématiquement un bit dans le PPS pour indiquer au décodeur si une mise à jour des listes associées aux numéros de couches temporelles doit être faite ou non. Si ce bit est à 1, alors la signalisation suivante doit être décodée (exemple pour le cas ou J =2 N listes sont disponibles) :

• Couche temporelle tidO -> N bits pour signaler le numéro de liste.

• Couche temporelle tid l -> N bits pour signaler le numéro de liste.

• Couche temporelle tid2 -> N bits pour signaler le numéro de liste.

· Couche temporelle tid 3 -> N bits pour signaler le numéro de liste.

7.3.2 Deuxième mode de réalisation

Selon un deuxième mode de réalisation de l'invention, l'information représentative d'une distance temporelle entre le bloc courant et le bloc de référence correspond à un nombre d'images séparant l'image courante de sa référence. Cette information est directement connue du codeur et elle est signalée au décodeur sous le nom de paramètre Delta POC pour différence de rang entre images (Delta Picture Order Count, en anglais) dans un en-tête du fichier compressé ou du train binaire. Elle est notamment transmise pour une séquence d'images donnée, d'une part dans le séquence parameter set (SPS, voir 7.3.2.2 de la norme ITU-T H265), ou d'autre part dans le slice_segment_header (voir 7.3.6.1 de la norme ITU-T H265). Plus précisément cette information est dérivée directement lors du décodage du short-term référence picture set (st_ref_pic_set, voir 7.3.7 de la norme ITU-T H265), qui est inclus dans le SPS et le slice_segment_header. Un avantage de cette information est qu'elle est directement disponible, sans nécessiter de calcul préalable.

En variante, on peut calculer une distance temporelle par différence entre les instants temporels associés respectivement à l'image courante et à l'image de référence.

Pour une image B, deux références sont utilisées. On peut par exemple faire une moyenne entre les deux distances temporelles obtenues ou encore conserver la distance la plus grande.

Cette mesure de distance temporelle est commune à tous les blocs d'une même image et le cas échéant d'une même slice, dont tous les blocs partagent les mêmes références. Elle peut donc être obtenue une fois pour tous les blocs de la même image/slice et stockée dans une mémoire à laquelle le codeur accède pour le traitement d'un bloc courant.

Dans ce deuxième mode de réalisation de l'invention, des listes sont donc associées aux différentes valeurs de distances temporelles obtenues.

Cette correspondance est faite préalablement, à partir d'un apprentissage basé sur un ensemble représentatif de séquences. Elle peut ensuite être fixe et dans ce cas, connue du codeur et du décodeur ou bien être adaptative, ce qui nécessite une signalisation appropriée. L'encodeur peut choisir de transmettre dans le train binaire les informations nécessaires à la mise à jour de la table de correspondance.

Le codeu r obtient la liste associée à la mesure de distance temporelle de l'image /slice avec sa ou ses références et l'utilise pour tous les blocs qu'elle comprend.

Pour chaque bloc de l'image, le codeur applique successivement les transformées de la liste obtenue à son résidu, choisit la meilleure transformée et code un index correspondant à une position de la transformée choisie dans la liste. :

Les procédés de codage et de décodage décrits précédemment peuvent être intégrés dans des codeurs/décodeurs vidéo standards tels que HEVC/H.265, AVC/H.264, les codeurs/décodeurs d'une norme à venir ou tout type de codeurs/décodeurs vidéo propriétaires. Les procédés de codage et de décodage selon l'invention s'appliquent également à tous types de signaux utilisant un codage prédictif. La figure 11 présente la structure simplifiée d'un dispositif de codage 100 adapté pour mettre en œuvre 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 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 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,

calculer un bloc résidu (R) par soustraction des valeurs prédites aux valeurs originales du bloc courant,

transformer un bloc résidu par application d'une transformée, la transformée appartenant à une liste prédéterminée de transformées;

coder le bloc résidu transformé et d'une information d'identification de la transformée appliquée ;

Selon l'invention, le dispositif est en outre configuré pour : obtenir une information représentative d'une distance temporelle du bloc par rapport du au moins un bloc de référence ;

obtenir une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information obtenue ; et

- appliquer une transformée identifiée appartenant à la liste obtenue.

Selon un mode particulier de réalisation de l'invention, les étapes du procédé de codage sont mises en œuvre 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, une unité de traitement UT1, équipée par exemple d'un microprocesseur μΐ, et pilotée par le programme d'ordinateur Pgl stocké en mémoire MEM1. Le programme d'ordinateur Pgl comprend des instructions pour mettre en œuvre les étapes du procédé de codage tel que décrit ci-dessus, lorsque le programme est exécuté par le processeur μΐ.

A l'initialisation, les instructions de code du programme d'ordinateur Pgl sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur PROC. Le processeur μΐ de l'unité de traitement UT1 met notamment en œuvre les étapes du procédé de codage décrit ci-dessus, selon les instructions du programme d'ordinateur Pg l.

Selon un autre mode particulier de réalisation de l'invention, le procédé de codage est mis en œuvre par des modules ou unités fonctionnel(le)s. Pour cela, le dispositif de codage 100 comprend 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,

- 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'une information représentative d'une distance temporelle du bloc courant par rapport à au moins une image de référence, une unité d'obtention d'une liste de transformées parmi une pluralité de listes prédéterminées au moins à partir de l'information obtenue et l'unité de transformation applique une transformée de la liste déterminée.

L'unité de traitement UT1 coopère avec les différents modules fonctionnels décrits ci-dessus et la mémoire MEM 1 afin de mettre en œuvre les étapes du procédé de codage.

Selon un mode de réalisation de l'invention, le dispositif 100 comprend en outre une unité Mi de stockage des tables précédemment décrites dans les différents modes de réalisation de l'invention, telles que par exemple une table comprenant des enregistrements associant à une valeur ou une plage de valeurs de de l'information une liste de transformées.

Ces unités sont pilotées par le processeur μι 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 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 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 œuvre la fonction correspondante au module lorsque les instructions de code sont exécutées par un le processeur. Sous une forme matérielle, un tel module fonctionnel peut mis en œuvre 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 Spécifie Integrated Circuit en anglais), des circuits FPGA pour Field Programmable Gâte Arrays en anglais, un câblage d'unités logiques. La figure 12 présente la structure simplifiée d'un dispositif de décodage 200 adapté pour mettre en œuvre 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 les Figures 4 et 5. Le dispositif de décodage 200 est adapté pour décoder un train binaire ou un fichier comprenant des données codées 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 un 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 des valeurs codées des coefficients du bloc résidu transformé extraites du train binaire ;

- Réaliser une transformation inverse du bloc résidu transformé;

Reconstruire le bloc décodé à partir du bloc résidu et de la prédiction du bloc courant;

Selon l'invention, il est en outre configuré pour obtenir une information représentative d'une distance temporelle du bloc courant par rapport à au moins une image de référence, obtenir une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information obtenue et identifier la transformée à appliquer dans la liste déterminée.

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 μ2, et pilotée par le programme d'ordinateur Pg2 stocké en mémoire MEM2. Le programme d'ordinateur Pg2 comprend des instructions pour mettre en œuvre les étapes du procédé de décodage tel que décrit ci-dessus, lorsque le programme est exécuté par le processeur μ2. 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 μ2. Le processeur μ2 de l'unité de traitement UT2 met notamment en œuvre 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 œuvre par des modules fonctionnels. Pour cela, le dispositif de décodage 200 comprend en outre les modules suivants :

Prédiction d'un 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 ;

Transformation inverse du bloc résidu transformé par application d'une transformé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'une information représentative d'une distance temporelle du bloc courant par rapport à au moins une image de référence, une unité d'obtention d'une liste de transformées parmi une pluralité de listes prédéterminées au moins en fonction de l'information obtenue et une unité d'identification de la transformée dans la liste obtenue.

L'unité de traitement μ2 coopère avec les différents modules fonctionnels décrits ci-dessus et la mémoire MEM2 afin de mettre en œuvre 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'information une liste de transformées.

Ces unités sont pilotées par le processeur μ2 de l'unité de traitement μ2.

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 œuvre la fonction correspondante au module lorsque les instructions de code sont exécutées par un le processeur. Sous une forme matérielle, un tel module fonctionnel peut mis en œuvre 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 Spécifie Integrated Circuit en anglais), des circuits FPGA pour Field Programmable Gâte Arrays en anglais, un câblage d'unités logiques. De façon avantageuse, un tel dispositif 200 peut être intégré à un terminal d'utilisateur TU, par exemple un décodeur, un boîtier 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 : - 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 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 u n 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 couleur sont différentes des trois bandes rouge vert bleu) ou enfin d'images intégrales. L'invention.

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.