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 bloc de pixels.
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, Scalable AVC, scalable 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, II, Ik, IK, avec K entier non nul. Une image Ik 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. 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. Des exemples de partitionnement autorisés par la norme HEVC sont présentés en relation avec la Figure 2. Chaque CU va subir 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 3.
On sélectionne comme bloc courant b 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.
On suppose qu'il existe L partitionnements en blocs PU possibles numérotées de 1 à L, et que le partitionnement utilisé sur le bloc b correspond au partitionnement numéro I. Par exemple, il peut y avoir 4 partitionnements possibles, en sous-blocs de taille 4x4, 8x8, 16x16, et 32x32 selon un mode de découpage régulier de type « quad tree ». Comme précédemment évoqué, certains blocs PU peuvent être rectangulaires.
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 immédiatement adjacents au bloc courant dans l'image ID). Les informations de prédiction liées à P sont codées dans le train binaire TB ou fichier compressé FC. On suppose ici qu'il y a K modes de prédiction possibles ml, m2,..., mK, avec K entier non nul. Par exemple, le mode de prédiction choisi pour le bloc courant b est le mode mk. Certains modes de prédiction sont associés à une prédiction de type Intra, d'autres à une prédiction de type INTER, d'autres à une prédiction de type MERGE.
Au cours d'une étape E2, un résidu original R est formé, par soustraction R = b-Pr de la prédiction Pr du bloc courant b au bloc courant b.
Au cours d'une étape E3, le résidu R est transformé en un bloc résidu transformé, appelé RT, par une transformée de type DCT ou transformée en ondelettes, toutes les deux connues de l'homme de métier et notamment mises en œuvre dans les normes JPEG/MPEG pour la DCT et JPEG2000 pour la transformée en ondelettes.
En E4, 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. 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[i], où l'indice i varie de 0 à Nb-1. L'indice i est appelé fréquence du coefficient RQ[i] . Classiquement, on scanne ces coefficients par ordre croissant de fréquence, par exemple selon un parcours en zigzag, qui est connu de la norme de codage d'image fixes JPEG.
Lors d'une étape E5, on vient coder les informations d'amplitude des coefficients du bloc résidu RQ par codage entropique, par exemple selon une technique de codage de Huffman ou de codage arithmétique. Par amplitude, on entend ici la valeur absolue du coefficient. Classiquement, on peut coder pou r 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. En général, les signes des coefficients non-nuls sont sim plement codés par u n 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.
On répète les étapes précédentes El à E5 pour les I partitionnements possibles du bloc courant b. Pour un partitionnement I, chacun des sous-blocs CU du bloc courant b sont traités comme précédemment décrit, un type de prédiction (Inter ou Intra) étant autorisé par CU. Autrement dit, les sous-blocs PU d'un sous-bloc CU sont tous soumis au même type de prédiction.
Par exemple, les données codées pour chacun des I partitionnements possibles sont mises en compétition selon un critère débit-distorsion et le partitionnement qui obtient le meilleur résultat selon ce critère est finalement retenu.
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.
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. Ainsi un ensemble de pixels résiduel avant encodage se voit représenté sur un faible nombre de coefficients transformés, appelés aussi 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.
L'efficacité d'une transformation est communément mesurée suivant un critère de concentration d'énergie, mis également sous la forme d'un gain de codage : il représente, pour un débit donné, la réduction en distorsion (exprimée par l'erreur quadratique moyenne) lorsque qu'on code dans le domaine transformé plutôt que dans le domaine spatial.
On note fft 2 rans orm l'erreur quadratique moyenne après quantification réalisée dans le domaine transformé et a^patial l'erreur quadratique pour une quantification avec la même précision dans le domaine spatial, i .e. du résiduel avant transformées. Suivant ces notations, le gain de codage s'exprime alors :
Habituellement ce gain est exprimé en dB Gtc_db = 10*log l0(Gtc)
Le gain réalisé en distorsion par l'usage de transformées peut également être retranscrit en gain en débit : à haut débit le gain en dB divisé par une valeur de 6.02 permet en effet d'approcher l'économie en débit réalisée, exprimée en bit par pixel.
En codage d'image et vidéo, les transformées les plus utilisées sont des transformées blocs (4x4, 8x8 etc), linéaires, orthogonales ou quasi-orthogonales. Une transformée linéaire peut être exprimée sous forme de matrice comme suit. Une transformée orthogonale présente comme propriété caractéristique le fait que la matrice de transformation inverse est la transposition de la matrice de transformation directe. Ainsi une telle transformation a pour propriété :
Où A est la matrice présentant la transformation directe et I la matrice identité et c une valeur numérique. Quand c vaut 1, la matrice A est orthonormale. Une matrice quasi-orthogonale, multipliée pas son inverse présente une quantité proche de la matrice identité à un facteur près.
Les transformées les plus employées sont à base de bases cosinus. La DCT est ainsi présente dans la plupart des normes de compression d'image et de 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 4A et 4B, les transformées utilisées par la norme HEVC sur les blocs de taille 4x4 : II 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.
En pratique, un bloc de pixel est transformé par les opérations suivantes :
X = A - {A - xt)t (1)
A désigne la matrice de transformation de taille NxN, x représente les pixels ou pixels résiduels à transformer (domaine spatial), X le bloc dans le domaine transformé (appelé domaine fréquentiel) et t l'opérateur de transposition.
Le bloc dans le domaine spatial s'écrit (ici en 4x4) :
Le bloc de pixels dans le domaine transformé prend la forme
La matrice A prend la forme d'une matrice 4x4 dans notre cas, avec les coefficients égaux à ceux présentés dans les tables des Figures 4A et 4B.
L'équation présentée ci-dessus procède donc de la façon suivante : · le bloc x est transposé.
• Ainsi la matrice A s'applique sur les lignes des pixels
• Le résultat (A■ x')est ensuite transposé
• Ensuite l'application de la matrice A se fait sur ce résultat.
La combinaison de ces opérations est donc de transformer les lignes puis les colonnes. Une écriture équivalente d'un point de vue codage mais différente d'un point de vue mathématique consiste à effectuer :
X = A - {A - xY (2) Dans ce cas ce sont les colonnes qui sont d'abord transformées.
Les transformées lignes et colonnes peuvent être différentes, comme décrit dans l'art antérieur cité. Les formules précédentes peuvent être étendues à ce cas, par exemple si on souhaite opérer sur les colonnes d'abord puis sur les lignes :
X = L - (C - xY (3)
L représente la transformée spécifique aux lignes et C la transformation spécifique aux colonnes.
Pour opérer sur les lignes au préalable, on écrit : x = C - (L - xt)t (4)
Ces deux dernières formules permettent de traiter également de traiter des blocs de pixels rectangulaires, ainsi une transformée colonne 8x8 pourra opérer sur un bloc 4x8 dans un premier temps, dans un second temps une transformée ligne de taille 4x4 opérera sur le bloc résultant pour obtenir au final les coefficients transformés. Ainsi on écrit de la même manière qu'auparavant :
X = L - (C - xY (5)
On le voit donc, on fait succéder deux transformations séparées, dans le sens ligne-colonne ou colonne-ligne. De ce fait le signal spatial est décorrélé par vecteurs lignes puis colonnes ou colonnes et ensuite lignes. ou colonnes.
La décorrélation est en effet un aspect important en transformation. Assurer une bonne décorrélation permet d'obtenir un bon gain de codage. Une transformation efficace en codage a ainsi pour vocation de décorréler les vecteurs lignes et colonnes pour obtenir un signal compact dans le domaine fréquentiel et en faciliter la transmission.
Les opérations de transformation présentées plus haut agissent de façon séparable par décorrélation ligne puis colonne ou colonne puis ligne. On parle de transformées séparables.
De ce fait elles ne permettent pas de décorréler complètement les pixels dans le domaine spatial notamment la décorrélation d'éléments diagonaux, tels que xO et x5.
Pour permettre une décorrélation complète, il est possible d'effectuer une transformation non- séparable. Pour ce faire, on applique l'opérateur suivant :
X = Ansx (6)
Ans représente la transformation non séparable à effectuer, choisie de façon avantageuse orthonormale ou quasi-orthonormale, Xet x sont alors respectivement les pixels transformés et dans le domaine spatial, mis sous forme de vecteurs. Ainsi pour u n bloc 4x4 ils prennent la forme suivante :
Ans est donc de taille 16x16 dans cet exemple et plus généralement de taille N2xN2 pour un bloc de taille NxN composé de N2 pixels.
De cette façon une transformation non séparable Ans est capable de traiter frontalement toutes les corrélations entre pixels du domaine spatial, notamment les corrélations diagonales. Par exemple, dans le cas d'un bloc 4x4, la corrélation directe entre le pixel xO et x5, est amenuisée.
De ce fait les transformées non séparables sont plus efficaces en compression, néanmoins elles présentent un certain nombre d'inconvénients :
• ce sont des transformées de taille N2xN2, ainsi N4 valeurs doivent être stockées, en comparaison au 2xN2 valeurs requises pour les deux matrices réalisant la transformée séparable. Ceci a un impact sur le coût d'implémentation d'un codeur/décodeur image/vidéo pour lesquels les mémoires rapides sont coûteuses.
• l'algorithme de transformation requiert un nombre d'opérations significativement plus élevé afin de traiter la dimension accrue du vecteur.
Par rapport aux transformations séparables les transformations non-séparables requièrent donc une complexité bien plus élevée, comme indiqué dans le tableau de la Figure 5. Dans ce tableau, sont listées les quantités de mémoire et d'opérations afférentes aux implémentations de transformées non-séparables (Nsep) et séparable (Sep) pour le traitement de blocs 4x4 et 8x8 respectivement.
On le voit, les transformations non-séparables ont un impact important en ROM et nombre d'opérations comparativement aux transformées séparables. Notamment en termes d'opérations le rapport de complexité est supérieure à M/2, pour un bloc de taille MxM .
On connaît en outre de la demande de brevet publiée sous le numéro US2013/0003828, une méthode de codage d'images, qui sélectionne des types de transformées à appliquer successivement aux lignes et aux colonnes du bloc en fonction du mode de prédiction choisi pour ce bloc, par exemple u n mode de prédiction intra de direction particulière. Plus précisément, cette méthode associe une première transformée linéaire aux lignes du bloc courant, par exemple une DCT, et une deuxième transformée, linéaire, distincte de la première, aux colonnes du bloc transformé par la première transformée.
Un avantage est de s'adapter au fait que l'ensemble des colonnes et l'ensemble des lignes du bloc ne présentent pas nécessairement les mêmes propriétés statistiques.
3. Inconvénients de l'art antérieur
Les inconvénients de l'art antérieur sont les suivants :
• Pour une transformée non-séparable, la complexité algorithmique est très importante. Elle requiert donc un coût d'implémentation très élevé, voire rédhibitoire.
• Dans le cas de transformées séparables, elles agissent de façon identique pour les lignes, respectivement les colonnes, en particulier il est implicitement supposé que respectivement l'ensemble des lignes respectivement des colonnes partage la même statistique. Ce sont les transformées les plus utilisées dans les codeurs actuels car elles réalisent un compromis entre efficacité de compression et coût de codage. Néanmoins elles n'atteignent pas les performances de compression des transformées non séparables.
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 améliore les performances de compression d'un codeur d'images numériques, sans requérir d'augmentation significative des ressources de calcul et de mémoire.
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 numérique, 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 courant, de dimensions prédéterminées :
Transformation du bloc courant en un bloc transformé, ledit bloc comprenant des coefficients, ladite étape mettant en œuvre deux sous-étapes successives de transformation, la première sous-étape s'appliquant au bloc courant, la deuxième au bloc intermédiaire, issu de la première sous-étape, ledit bloc intermédiaire comprenant des coefficients, et
Quantification et codage des coefficients du bloc transformé.
Selon l'invention, préalablement à au moins une desdites sous-étapes de transformation, ladite sous-étape s'appliquant à un bloc, dit bloc à transformer, parmi le bloc courant et le bloc intermédiaire, le procédé comprend une étape préalable de formation d'au moins un premier et un deuxième vecteurs distincts dans le bloc à transformer, un dit vecteur comprenant les pixels, respectivement les coefficients adjacents d'une séquence de longueur égale à une des dimensions du bloc à transformer et ladite au moins une sous- étape comprend l'application d'une première transformée audit au moins un premier vecteur et d'au moins une deuxième transformée, distincte de la première, audit au moins un deuxième vecteur dudit bloc.
Selon l'invention, au moins une des deux étapes successives de la transformation séparable appliquée au bloc courant, met en œuvre au moins deux transformées distinctes, qui sont appliquées à des vecteurs distincts, de dimension égale à celle d'une ligne respectivement d'une colonne du bloc courant et formés à partir d'une séquence d'éléments voisins du bloc courant.
Ainsi, l'invention repose sur une approche tout à fait nouvelle et inventive du codage d'images par transformation des pixels du bloc courant dans le domaine spatial en coefficients dans le domaine fréquentiel, qui prévoit un traitement différent pour deux vecteurs du bloc courant.
Contrairement à l'art antérieur qui se fonde sur l'hypothèse réductrice d'une statistique commune partagée par l'ensemble des lignes, respectivement des colonnes d'un même bloc de l'image à coder, l'invention prend en considération le fait que deux vecteurs distincts d'un bloc et de même dimension peuvent présenter des propriétés statistiques différentes, qui nécessitent une transformation linéaire adaptée.
L'invention présente la même complexité algorithmique que l'art antérieur, mais permet soit d'améliorer les performances de codage, c'est-à-dire d'améliorer la qualité de la séquence d'images codée pour un débit donnée, soit d'abaisser le débit de codage pour une qualité donnée.
Selon une caractéristique avantageuse de l'invention, le procédé comprend en outre une étape préalable de détermination des au moins deux transformées distinctes à appliquer auxdits vecteurs, au moins en fonction d'au moins un paramètre de codage du bloc courant.
Un avantage d'associer le choix des transformées à u n paramètre de codage est de s'adapter aux variations statistiques du bloc induites par le paramètre en question. Par exemple, le paramètre de codage considéré est la taille du bloc ou le mode de prédiction qui lui est appliqué. Par exemple, on s'appuie sur des expérimentations préalables pour associer le paramètre de codage considérée à au moins deux transformées linéaires. Un avantage est qu'on ne rend pas le codeur plus complexe ; Selon un autre aspect de l'invention, l'étape de détermination comprend la lecture d'informations stockées en mémoire, lesdites informations comprenant au moins le paramètre de codage, un identifiant de la première transformée, au moins un identifiant de premier vecteur du bloc ou du bloc intermédiaire, un identifiant d'au moins une deuxième transformée, distincte de la première et au moins un identifiant de deuxième vecteur dudit bloc.
Un avantage est qu'on ne signale pas d'informations supplémentaires dans le train binaire, les données stockées en mémoire étant dupliquées côté décodeur.
Par exemple, la mémoire est organisée selon u ne base de données. Une entrée de la base de données associe à un paramètre de codage des identifiants de transformation à appliquer à des identifiants de vecteurs.
Selon un aspect de l'invention, ladite étape de transformation comprend une sous-étape de réarrangement des coefficients des vecteurs transformés dans le bloc intermédiaire, respectivement transformé.
Suite à l'application des transformées linéaires aux vecteurs formés dans le bloc à transformer, les coefficients obtenus sont réarrangés de façon à former un bloc de coefficients. Par exemple, les coefficients du premier vecteur transformé sont placés sur la première ligne respectivement la première colonne du bloc. Ce mode de réalisation particulier présente l'avantage d'être simple et de peu impacter le codeur.
Selon encore un autre aspect de l'invention, le procédé de codage comprend en outre les étapes suivantes de :
Prédiction des valeurs du bloc courant à partir d'au moins un bloc précédemment traité selon un mode de prédiction choisi parmi une pluralité de modes prédéterminés, Calcul d'un bloc courant résidu par soustraction des valeurs prédites aux valeurs originales du bloc courant, Selon l'invention, l'étape de transformation est appliquée au bloc courant résidu et ledit au moins un paramètre de codage est le mode de prédiction du bloc courant.
On a constaté que le mode de prédiction est représentatif à lui seul des propriétés statistiques d'un bloc résidu et qu'il est pertinent de d'associer à une valeur particulière de ce paramètre de codage un choix particulier de transformées linéaires.
Selon un autre aspect de l'invention, le procédé comprend une étape de codage d'informations d'identification de ladite au moins une première transformée et de ladite au moins une deuxième transformée.
Les informations relatives aux transformées linéaires utilisées sont transmises dans le train binaire. Un avantage de ce mode de réalisation est qu'il est adapté à une détermination dynamique des transformées par le codeur pour chaque bloc traité.
Selon encore un autre aspect, la première transformée est appliquée à un premier sous- ensemble des vecteurs de dimensions égales à celle d'une ligne, respectivement à celles d'une colonne du bloc et ladite au moins une deuxième transformée est appliquée à un deuxième sous- ensemble de vecteurs de dimensions égales à celle d'une ligne du bloc, respectivement à celles d'une colonne dudit bloc. Par exemple, on met en œuvre deux transformées lignes respectivement colonnes distinctes par sous-étape de transformation. Les deux transformées sont par exemple associées à un mode de prédiction du bloc courant. Ce mode de réalisation réalise un compromis entre coût de stockage des associations entre identifiants de vecteur et identifiants de transformées et performances de compression. Selon encore un autre aspect de l'invention, ladite au moins une sous-étape de transformation met en œuvre une transformée distincte par vecteur de dimension égale à celle d'une ligne du bloc, respectivement à celle d'une colonne, formé dans le bloc.
Un avantage de ce mode de réalisation est qu'il permet de s'adapter finement aux statistiques de chaque vecteur du bloc à traiter et d'améliorer les performances du codeur, en termes de qualité et/ou de compression.
Selon un autre aspect de l'invention, les vecteurs formés appartiennent à un groupe comprenant : des vecteurs « lignes » formés des pixels respectivement coefficients d'une ligne du bloc courant ;
des vecteurs « colonnes » formés des pixels respectivement coefficients d'une colonne du bloc courant ;
des vecteurs de longueur égale à celle d'une ligne du bloc, formés de pixels adjacents respectivement coefficients, voisins du bloc courant issus d'au moins deux lignes du bloc
des vecteurs de longueur égale à celle d'une colonne du bloc, formés de pixels respectivement coefficients voisins du bloc courant issus d'au moins deux colonnes du bloc Les vecteurs formés sont de même taille que les lignes ou les colonnes du bloc courant afin de ne pas augmenter la complexité du codeur.
Un vecteur selon l'invention n'est pas nécessairement formé exclusivement à partir d'éléments d'une même ligne. Des vecteurs non linéaires peuvent avantageusement être formés d'éléments voisins du bloc issus de lignes voisines, ce qui permet de mieux tirer parti de corrélations particulières entre des éléments adjacents du bloc considéré, hors ligne et colonnes. Ce cas se présente tout particulièrement pour les modes de prédictions angulaires diagonaux, pour lesquels les blocs à coder présentent des motifs diagonaux.
Le procédé qui vient d'être décrit dans ses différents modes de réalisation est avantageusement mis en œuvre par un dispositif de codage d'une image numérique selon l'invention comprenant les unités suivantes, aptes à être mises en œuvre pour un bloc courant, de dimensions prédéterminées :
Transformation du bloc courant en un bloc transformé, ledit bloc comprenant des coefficients, ladite étape mettant en œuvre deux sous-unité successives de transformation, la première sous-unité s'appliquant au bloc courant, la deuxième au bloc intermédiaire, issu de la première sous-étape, ledit bloc intermédiaire comprenant des coefficients, et
Quantification et codage des coefficients du bloc transformé,
Un tel dispositif est particulier en ce qu'il comprend une unité de formation d'au moins un premier et un deuxième vecteurs distincts dans un bloc, dit bloc à transformer, parmi le bloc courant et le bloc intermédiaire,, un dit vecteur comprenant les pixels, respectivement les coefficients d'une séquence de pixels adjacents, respectivement coefficients adjacents, de longueur égale à une des dimensions du bloc à transformer et en ce que ladite au moins une sous-unité de transformation comprend l'application d'une première transformée au moins audit premier vecteur et d'au moins une deuxième transformée, distincte de la première audit au moins un deuxième vecteur dudit bloc.
Corrélativement, l'invention concerne aussi un procédé de décodage d'une image numérique
à 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 procédé comprenant les étapes suivantes, mises en œuvre pour un bloc, dit bloc courant :
Décodage des coefficients du bloc courant transformé à partir de données lues dans le train binaire ;
Déquantification des coefficients décodés ;
Transformation inverse du bloc courant transformé, ladite étape mettant en œuvre deux sous-étapes successives de transformation inverse, la première sous-étape s'appliquant au bloc courant, la deuxième au bloc intermédiaire, issu de la première sous-étape.
Le procédé de décodage selon l'invention est particulier en ce que : ladite au moins une sous-étape de transformation inverse s'appliquant à un bloc, dit bloc à traiter, parmi le bloc courant transformé et le bloc intermédiaire, elle comprend l'application d'une première transformée inverse à au moins un premier vecteur de longueur égale à celle d'une ligne, respectivement d'une colonne, du bloc à traiter, et d'au moins une deuxième transformée inverse, distincte de la première, à au moins un deuxième vecteur dudit bloc de longueur égale à celle d'une ligne, respectivement d'une colonne ; et elle comprend en outre une sous-étape de formation du bloc traité, par positionnement de séquences de coefficients adjacents, respectivement pixels adjacents, de longueurs égales à celle d'une colonne, respectivement d'une ligne, issues des vecteurs traités.
Selon un aspect de l'invention, le procédé comprend en outre une étape préalable de détermination des au moins deux transformées distinctes à appliquer auxdits premier et deuxièmes vecteurs, du bloc à traiter, au moins en fonction d'un paramètre de codage du bloc courant.
Selon un autre aspect, l'étape de détermination comprend une lecture dans le train binaire de données codées représentatives d'informations d'identification de ladite au moins une première transformée et de ladite au moins une deuxième transformée.
Selon encore un autre aspect de l'invention, l'étape de détermination comprend en outre une sous-étape préalable de formation des premier et deuxième vecteurs dans le bloc à traiter.
Selon encore un autre aspect, l'étape de détermination comprend une lecture d'informations dans une mémoire, lesdites informations comprenant au moins le paramètre de codage, un identifiant de la première transformée inverse, au moins un identifiant de premier vecteur, un identifiant d'au moins une deuxième transformée inverse, distincte de la première, au moins un identifiant de deuxième vecteur du bloc à traiter.
Selon encore un autre aspect de l'invention, l'étape de transformation inverse comprend en outre une sous-étape, préalable à ladite au moins une sous-étape de transformation, de réarrangement de séquences de coefficients adjacents du bloc à traiter dans lesdits premier et deuxième vecteurs, une dite séquence ayant une longueur égale à une des dimensions du bloc à traiter.
Le procédé de décodage selon l'invention met donc en œuvre les opérations inverses de celle du procédé de codage qui vient d'être décrit.
En particulier : les sous étapes de transformation inverse correspondent aux opérations inverses de celles de transformation mises en œuvre par le procédé de codage. Elles se succèdent dans l'ordre inverse de celui du codage.
la sous-étape de formation du bloc traité à partir de séquences de coefficients adjacents, respectivement pixels adjacents, issus des vecteurs traités, correspond à l'opération inverse de celle de formation des vecteurs à transformer, mise en œuvre par le procédé de codage ;
la sous-étape de réarrangement de séquences de coefficients adjacents du bloc à traiter dans lesdits premier et deuxième vecteurs correspond à l'opération inverse de celle de réarrangement des coefficients des vecteurs transformés dans le bloc transformé, mise en œuvre par le procédé de codage.
Le procédé qui vient d'être décrit dans ses différents modes de réalisation est avantageusement mis en œuvre par un dispositif de décodage d'une image numérique, à 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 les unités suivantes, aptes à être mises en œuvre pour un bloc de dimensions prédéterminées, dit bloc courant : - Décodage des coefficients du bloc cou rant transformé à partir de données lues dans le train binaire ;
Déquantification des coefficients décodés ;
Transformation inverse du bloc courant transformé, ladite unité étant apte à mettre en œuvre successivement deux sous-unités de transformation inverse, la première sous- unité s'appliquant au bloc courant, la deuxième au bloc intermédiaire, issu de la première sous-unité ;
Selon l'invention, le dispositif est particulier en ce qu'il comprend : au moins une sous-unité de transformation inverse d'un bloc, dit bloc à traiter, parmi le bloc courant transformé et le bloc intermédiaire, comprend l'application d'au moins une première transformée inverse à au moins un premier vecteur de longueur égale à celle d'une ligne respectivement colonne du bloc à traiter et d'au moins u ne deuxième transformée inverse, distincte de la première à au moins un deuxième vecteur de longueur égale à celle d'une ligne, respectivement colonne, dudit bloc à traiter; et en ce que l'unité de transformation inverse comprend en outre une sous-unité de formation inverse d'un bloc traité par positionnement de séquences de coefficients adjacents, respectivement pixels adjacents, de longueurs égales à celle d'une colonne, respectivement d'une ligne, issues des vecteurs traités.
L'invention concerne en outre un signal porteur d'un train binaire comprenant des données codées d'une image numérique, ladite image étant divisée en blocs de pixels. Un tel signal est particulier en en ce qu'il comprend, pour un bloc courant : des données codées représentatives d'une information d'identification d'au moins une première et une deuxième transformée, distinctes l'une de l'autre, mises en œuvre lors du codage du bloc courant au cours d'une étape de transformation du bloc courant en un bloc transformé, comprenant deux sous-étapes successives de transformation du bloc courant en un bloc transformé, au moins une sous-étape de transformation
comprenant l'application d'une première transformée à au moins un premier vecteur et d'au moins une deuxième transformée, distincte de la première, à au moins un deuxième vecteur d'un bloc, dit bloc à transformer, parmi le bloc courant et le bloc intermédiaire, et
des données codées représentatives d'au moins le premier et le deuxième vecteurs formés dans le bloc à transformer, à partir d'une séquence de pixels adjacents, respectivement coefficients adjacents, ladite séquence ayant une longueur égale à une des dimensions du bloc à transformer .
L'invention concerne aussi un terminal d'ordinateur comprenant un dispositif de codage d'une image numérique selon l'invention et un dispositif de décodage d'une image numérique selon l'invention.
L'invention concerne encore un programme d'ordinateur comportant des instructions pou r 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) illustre de façon schématique une séquence d'images numériques à coder et le découpage en blocs de ces images selon l'art antérieur ; la figure 2 (déjà décrite) présente différentes possibilités de partitionnement d'un bloc en sous-blocs selon l'art antérieur ; la figure 3 (déjà décrite) présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon l'art antérieur ; les figures 4A et 4B (déjà décrites) présentent deux exemples de transformées en fréquence approximées selon l'art antérieur ; la figure 5 (déjà décrite) présente un tableau comparatif de mesures de complexité de transformées séparables et de transformées non séparables ; la figure 6 présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon un mode de réalisation de l'invention ; la figure 7A illustre les éléments d'un bloc courant ; les figures 7B, 7C et 7D illustrent des exemples de formation de vecteurs « lignes » et « colonnes » à partir des éléments du bloc courant de la figure 7A, selon l'invention ; la figure 8A présente u n premier exemple d'estimation de valeu rs d'énergie au niveau des pixels d'un bloc courant et la figure 8B présente des régions homogènes déterminées dans le bloc à partir des niveaux d'énergie estimés ; la figure 9A présente un deuxième exemple d'estimation de valeurs d'énergie au niveau des pixels d'un bloc courant et la figure 9B présente des régions homogènes déterminées dans le bloc à partir des niveaux d'énergie estimés ; la figure 10 détaille les étapes de formation de vecteurs et de transformation des vecteurs formés selon un deuxième mode de réalisation de l'invention ; la figure 11 présente les gains de compression obtenus par le procédé de codage selon ce deuxième mode de réalisation par rapport à l'art antérieur ; la figure 12 détaille les étapes de formation de vecteurs et de transformation des vecteurs formés selon un troisième mode de réalisation de l'invention ;
la figure 13 présente les gains de compression obtenus par le procédé de codage selon ce troisième mode de réalisation par rapport à l'art antérieur ; la figure 14 présente de façon schématique les étapes d'un procédé de décodage d'une image numérique selon un mode de réalisation de l'invention ; et - la figure 15 présente un exemple de structure simplifiée d'un dispositif de codage d'une image numérique et d'u n dispositif de décodage d'une image numérique selon un mode de réalisation de l'invention.
7. Description d'un mode de réalisation particulier de l'invention
Le principe général de l'invention repose sur l'application de transformées distinctes à différents vecteurs de dimension égale à celle d'une ligne, respectivement d'une colonne, d'un bloc à coder.
On considère une vidéo originale constituée d'une suite de M images II, 12, ...IM, avec M entier non nul, telle que celle 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 12, puis IM, cet ordre pouvant différer suivant le mode de réalisation.
En relation avec la Figure 6, on considère maintenant les étapes d'un procédé de codage selon un mode de réalisation de l'invention.
AU cours d'u ne étape TO, on sélectionne un bloc à traiter, dit bloc cou rant x. Par exemple, il s'agit d'un bloc CU, carré ou rectangulaire, obtenu par partitionnement d'un bloc CTU. Dans la suite, on considère que ce bloc x a pour dimensions, une hauteur H et une largeur W, entiers non nuls. A titre d'exemple illustratif, on considère le cas particulier d'un bloc WxH =4X4.
On considère une étape T2 de transformation, dans laquelle on applique au bloc courant x une transformation. L'étape T2 de transformation du bloc courant x est séparable et mise en œuvre selon deux sous-étapes de transformation linéaire :
-une première sous-étape T21 de transformation linéaire appliquée à des vecteurs VIO à VIH-1 du bloc x, de dimension W, destinée à fournir un bloc intermédiaire XI comprenant WxH coefficients ;
- une deuxième sous-étape T24 de transformation linéaire appliquée à des vecteurs VcO à VcW-1 du bloc XI, de dimension H, destinée à fournir le bloc X transformé. On notera que, selon l'invention, la première sous-étape pourrait tout aussi bien s'appliquer a des vecteurs VcO à VcW-1 du bloc x que et la deuxième sous-étape à des vecteurs VIO à VIH-1 du bloc XI.
On comprend que pour traiter des blocs rectangulaires, on fait agir des transformées de tailles différentes sur les lignes et les colonnes. Selon l'invention, au moins une des deux sous-étapes T21, T24 de transformation est mise en œuvre à partir d'au moins deux transformées linéaires distinctes, l'une s'appliquant à au moins un premier vecteur de dimension égale à celle d'une ligne du bloc et formé dans le bloc de pixels x ou dans le bloc intermédiaire de coefficients XI et l'autre à au moins un deuxième vecteur de dimension égale à celle d'une ligne du bloc et formé dans ce même bloc. A l'issue de la ou les sous- étapes mettant en œuvre deux transformées linéaires distinctes, on obtient des vecteurs transformés dont les coefficients sont réarrangés dans un bloc XI, X de dimension MxN en T22, T25.
A cet égard, on notera qu'il existe différentes manières de réarrange les coefficients dans un bloc et que celle utilisée par l'encodeur doit être connue du décodeur. Dans ce but, des informations représentatives d'un mode de réarrangement de ces coefficients pourront être codées et transmises au décodeur dans le train binaire.
De façon alternative, des règles de réarrangement prédéterminées seront partagées par le codeur et le décodeur.
Ainsi, la transformation T2 produit un bloc X comprenant des coefficients transformés, prêts à être parcourus par un ordre de scanning en T3, quantifiés en T4, et codés en T5. On notera que les étapes T3 et T4 peuvent être interverties.
A l'issue du traitement du bloc courant x, on vient tester en T6 si le bloc courant x est le dernier bloc à traiter par l'unité de codage, compte tenu de l'ordre de parcours de codage défini précédemment. Si oui, l'unité de codage a terminé son traitement et les données codées sont insérées dans un train binaire TB. Si non, l'étape suivante est l'étape de sélection du bloc suivant
T0. Ce bloc devient le bloc courant à traiter, et l'étape suivante est l'étape Tl de détermination des transformées à appliquer au bloc courant, déjà décrite.
Le train binaire TB peut ensuite être émis à destination d'un décodeur.
Différents modes de réalisation des étapes Tl de détermination des transformées et de transformation T2, en particulier des sous-étapes T20, T23 de formation des vecteurs, T21, T24 d'application des transformées aux vecteurs formés et T22, T25 d'arrangement des coefficients transformés dans un bloc, vont maintenant être détaillées.
Selon un premier mode de réalisation de l'invention, les au moins deux transformées sont mises en œuvre au cours de la première sous-étape de transformation T21.
Par exemple, on suppose que la première sous-étape T21 met en œuvre des transformées sur des vecteurs de dimension égale à celle d'une ligne du bloc courant x. et que la deuxième sous-étape T24 met en œuvre au moins une transformée sur des vecteurs de dimensions égale à celle d'une colonne et formés à partir des éléments du bloc intermédiaire XI.
Dans ce cas, le procédé met en œuvre une étape préalable T20 de formation de H vecteurs VIo à VIH-I de longueur W à partir des pixels du bloc courant x.
Avantageusement, ces vecteurs sont formés de façon à ce que chaque élément du bloc courant soit utilisé dans un seul vecteur.
En relation avec la Figure 7A, on considère à titre d'exemple un bloc courant x de taille 4x4. Il comprend 16 coefficients xO à xl5.
En relation avec la Figure 7B, on présente un premier exemple de vecteurs VIO à VI3 formés à partir des lignes du bloc x. Un vecteur Vlh de ce type correspond à la ligne numéro h du bloc courant x.
En relation avec la Figure 7D, on présente un deuxième exemple de vecteurs VIO à VI 3 formés à partir de 4 éléments voisins deux à deux du bloc x. Ces éléments ne sont pas tous issus de la même ligne. Par exemple, le vecteur VI'O comprend trois éléments xO, xl, x2 consécutifs de la première ligne du bloc et 1 élément x4 de la deuxième ligne du bloc, voisin avec l'élément xO de la première ligne.
On comprend que ce type de vecteur de dimension égale à celle d'une ligne peut être avantageusement utilisé pour suivre une discontinuité de texture présente dans le bloc et mieux exploiter la corrélation entre les éléments du vecteur.
Le procédé de codage selon l'invention met ensuite en œuvre une étape T2 de détermination d'au moins deux transformées linéaires distinctes LO, Ll à appliquer aux vecteurs VIO à VIH-1 formés, au moins une première transformée LO à appliquer à au moins un vecteur Vlhl formé et au moins une deuxième transformée Ll à appliquer à au moins un autre vecteur Vlh2, avec hl, h2 entiers compris entre 0 et H-l et hl≠h2.
Les transformées différenciées peuvent être du type DCT ou DST ou toute autre transformée linéaire efficace pour le codage. On peut ainsi utiliser des transformations optimales pour la décorrélation, à savoir la KLT (pour « Karhunen-Loeve Transform », en anglais), ou optimisée suivant un critère débit distorsion comme présenté dans l'article de Sezer et al, intitulé « Robust learning of 2D separable transforms for next génération video coding », publié dans les proceedings de la conférence DCC (pour « Data Compression Conférence », en anglais) en 2011. Avantageusement, on détermine les au moins deux transformations linéaires en fonction d'au moins un paramètre de codage du bloc courant, tel que par exemple la taille du bloc, ou encore le mode de prédiction INTRA choisi.
Par exemple, des expérimentations menées préalablement hors ligne ont permis de déterminer au moins deux transformations linéaires adaptées à un mode de prédiction INTRA particulier et de stocker l'association obtenue en mémoire.
Avantageusement, des identifiants de transformées linéaires associées à une valeur de paramètre de codage sont stockées dans une mémoire du codeur. Il s'agit par exemple d'une base de données BD1 qui comprend des entrées associant à un paramètre de codage, tel que par exemple le mode de prédiction INTRA précédemment évoqué, un identifiant de la première transformée, au moins un identifiant ou indice de vecteur du bloc ou du bloc intermédiaire auquel appliquer la première transformée, et un identifiant d'au moins une deuxième transformée, distincte de la première et au moins un identifiant ou indice de deuxième vecteur dudit bloc auquel appliquer la deuxième transformée.
En relation avec la Figure 8A, on présente des valeurs d'énergie moyenne estimées par pixel dans des blocs résiduels de taille 8x8, issus d'un mode de prédiction INTRA donné, en
l'espèce le mode de prédiction numéro 26 selon la norme HEVC. Une telle estimation est réalisée hors ligne.
On constate que l'énergie par pixel présente un motif horizontal en bandes qui justifierait une découpe en deux (ou plus) régions séparées. En relation avec la Figure 8B, on a représenté deux régions RI, R2 :
• la première région RI est constituée des trois premières lignes qui présentent un motif constant ;
• la deuxième région R2 est constituée des 5 dernières lignes qui présentent un profil moins constant, du fait de la discontinuité plus marquée sur la première colonne.
Avantageusement on a déterminé deux transformées Ll, L2, l'une s'appliquant aux vecteurs lignes de la région RI et l'autre aux vecteurs lignes de la région R2.
Ainsi suivant ce mode de prédiction, le codeur applique une partition en deux transformées « lignes » se partageant chacune une région. Pour la région RI, assez homogène, on a choisi une transformée de type DCT, ou une transformation définie au sens de la KLT. La DCT peut être considérée comme appropriée car elle est toute indiquée pour la transformation des motifs continus.
Pour la région R2, on a choisi une transformée capable de tenir compte de la discontinuité plus marquée sur la première colonne, par exemple DST, ou une transformation définie au sens de la KLT. La DST peut être considérée comme appropriée car elle est toute indiquée pour la transformation des motifs présentant une discontinuité en leur début. Pour la région R2 on note que l'énergie moyenne du premier pixel, sur le bord gauche, a une valeur significativement différente de celle des autres énergies de pixels.
Sans contrainte de mémoire, on définirait davantage de régions, voire autant que de lignes et on utiliserait 8 transformées, au prix d'une plus grande occupation d'espace mémoire.
La prise en compte de la contrainte d'occupation mémoire conduite à perdre légèrement en efficacité pour une baisse de performance limitée.
Selon l'exemple des Figures 8A et 8B, une entrée associe au mode de prédiction 26, la transformée LO pour les vecteurs lignes vIO à vl2 et la transformée Ll pour les vecteurs colonnes vl3 à vl7.
En relation avec la Figure 9A, on présente maintenant l'énergie moyenne, par pixel, obtenue pour un signal résiduel obtenu par pré analyse hors ligne de blocs de taille 8x8 issus d'un mode de codage donné, en l'espèce le mode de prédiction 19 tel que défini par la norme HEVC. Ce mode de prédiction présente un angle d'approximativement -53° et effectue une prédiction diagonale du haut vers le bas.
Les variations d'énergie entre pixels délimitent trois zones R'1, R'2, R'3 représentées sur la Figure 9B. Il convient de les découper afin de les traiter par trois transformées distinctes associées aux régions R'1, R'2 et R'3 et adaptées à leurs statistiques respectives. Dans cet exemple, on constate que les régions formées ne correspondent pas à une ou plusieurs lignes du bloc. Selon l'invention, il est alors intéressant de former des vecteurs de dimensions égales à celle d'une ligne, à partir d'éléments voisins qui n'appartiennent pas nécessairement tous à la même ligne, en fonction des frontières des régions considérées. Par exemple, le vecteur Vlhl représenté sur la Figure 9A correspond à la région R'1. Selon un premier aspect, une entrée de la base de données BD1 associe au mode de prédiction 19, un identifiant de la transformée L'O, un identifiant du ou des vecteurs formés dans la région R'1 et auquel appliquer la transformée L'O, un identifiant de la transformée L'1, un identifiant du ou des vecteurs formés dans la région R'2 auquel appliquer la transformée L'2, un identifiant de la transformée L'3, un identifiant du ou des vecteurs formés dans la région R'3 auquel appliquer la transformée L'3.
Le procédé de codage détermine donc comment former les vecteurs de dimensions égales à celles d'une ligne et détermine les transformées à appliquer à ces vecteurs en fonction du mode de prédiction utilisé, par lecture de l'entrée correspondante dans la base de données BD1.
Selon un autre aspect, le procédé de codage calcule en outre une corrélation entre les valeurs des pixels résidus du bloc courant à l'issue de la prédiction selon le mode de prédiction INTRA numéro 19 et le motif de région R'1, R'2, R'3 qui vient d'être présenté.
En cas de forte corrélation entre ces deux quantités, c'est-à-dire une corrélation supérieure à un seuil de corrélation établi, l'encodeur décide d'utiliser les trois transformées L'O, L'1, L'2.
L'encodeur applique les trois transformées, adaptées aux différentes zones, avec des transformées adaptées à celles-ci. Par exemple une adaptation au sens de la KLT sera effectuée.
Il signale ce choix au décodeur en insérant dans le train binaire une information codée représentative d'un indicateur de motif associé au mode de prédiction INTRA numéro 19.
On comprend que, selon ce mode de réalisation, la base de données BD1 comprend potentiellement plusieurs entrées correspondant à un même paramètre de codage, chaque entrée comprenant un indicateur de motif distinct, associé à des vecteurs différents et des transformées différentes.
A réception de l'information de mode de prédiction et du motif retenu par l'encodeur, le décodeur lira dans sa base de données BD2 les identifiants des vecteurs à former dans le bloc et des transformées à leur appliquer. Il effectuera les transformations inverses de celles effectuées au codeur.
De façon alternative, on détermine les transformées linéaires de façon dynamique par préanalyse du bloc courant à coder. Par exemple, cette pré-analyse met en œuvre des techniques connues d'analyse des contours à l'aide d'une estimation du gradient. La détection de contours est ensuite exploitée pour déterminer au moins deux régions et leur affecter des types de transformées, en fonction de leurs caractéristiques, par exemple l'homogénéité de leur texture. Dans ce cas, les identifiants des transformées linéaires déterminées et les identifiants des vecteurs concernés sont signalés dans le train binaire et transmis au décodeur.
De façon alternative cette analyse des contours est menée sur un ou plusieurs blocs voisins déjà traités et combinée à une hypothèse de continuité sur le bloc courant, par exemple en fonction d'une orientation du contour dans le bloc voisin, par rapport au bloc courant.
Lorsqu'une décision de continuité de contours est prise, les régions du bloc courant sont ensuite déterminées à partir de celles du bloc voisin déjà traité.
Dans ce cas, le codeur signale au décodeur le bloc voisin à partir duquel les régions, donc les vecteurs et les transformées à utiliser doivent être hérités, à l'aide d'une information codée représentative d'un mode d'héritage par rapport au bloc voisin concerné. On comprend que le décodeur sera amené à mettre en œuvre la même analyse de contour sur le même bloc voisin, une fois décodé, afin d'en déduire les vecteurs, transformées à utiliser.
Selon une variante de réalisation de l'invention, les au moins deux transformées linéaires distinctes sont mises en œuvre au cours de la deuxième sous-étape de transformation T31.
Dans ce cas, des vecteurs de dimension H, égale à celle des colonnes du bloc courant, sont formés en Tl l, suite à la première sous-étape de transformation T30, à partir des coefficients du bloc intermédiaire XI. W vecteurs VcO à VcW-1, de longueur H, sont obtenus.
Comme précédemment, plusieurs types de vecteurs de dimension H peuvent être formés.
En relation avec la Figure 7C, le vecteur Vcw correspond à la colonne numéro w du bloc.
En relation avec la Figure 7E, le vecteur Vc'w comprend des éléments de deux colonnes voisines.
L'étape T'2 de détermination a fourni au moins deux transformées linéaires distinctes C0, Cl destinées à être appliquées aux vecteurs VcO à VcW-1 formés.
Les différents modes de réalisation des étapes de formation des vecteurs VIO à VIH-1 et de détermination des transformées linéaires Li présentés ci-dessus, sont transposables aux étapes de formation des vecteurs VcO à VcW-1 et de détermination des transformées linéaires Cj, sachant qu'elles sont mises en œuvre pour le bloc intermédiaire XI.
Avantageusement, on met en œuvre le principe de l'invention dans les deux sous-étapes de transformation T30 et T31. Dans ce cas, le procédé de codage met en œuvre la première étape T10 de formation des vecteurs VIO à VIH-1 de dimension W à partir du bloc courant x, une première étape T20 de détermination des transformées L0, Ll à appliquer aux vecteurs VIO à VIH-1, la deuxième étape Tl l de formation de vecteurs VcO à VcW-1 de dimension H à partir du bloc intermédiaire XI et une deuxième étape T21 de détermination des transformés C0, Cl à appliquer aux vecteurs VcO à VcW-1.
Un avantage est de mieux exploiter les particularités statistiques des différents vecteurs formés, pour les deux sous-étapes de transformation. Bien sûr, ce mode de réalisation nécessite en contrepartie de stocker plus de transformées.
En relation avec la Figure 10, on présente maintenant le procédé de codage d'une image numérique selon un deuxième mode de réalisation de l'invention.
Selon ce mode de réalisation on considère H transformées lignes LO à LH-1 et W transformées colonnes CO à CW-1. Autrement dit, on applique une transformée linéaire spécifique à chaque vecteur formé dans le bloc courant que ce soit les vecteurs VIO à VIH-1 de dimension W formés en T'20, ou les vecteurs VcO à VcW-1, de dimension H, formés en T'23.
A titre d'exemple illustratif, on considère le cas d'un bloc 4X4.
Le signal XI transformé au cours de l'étape T'21, est obtenu par concaténation des opérations suivantes :
Les Lo, Li, L2 et L3 représentent les transformations lignes et sont donc des matrices de taille 4x4 dans ce mode de réalisation, qui peuvent potentiellement être implémentées sous la forme d'un algorithme rapide, à base de décomposition en papillon comme connu dans la littérature, notamment si les transformées utilisées sont de type DCT/DST.
On obtient ainsi les 16 coefficients transformés (Xlo-.-Xlis), à partir des 16 (xo,---Xis) pixels du bloc x de départ. Ils sont réarrangés en T'22 pour former le bloc XI, par exemple en considérant que chaque vecteur Vli transformé par la transformée linéaire Li a contribué à former la ligne i du bloc XI
La transformation colonne s'applique en T'24 de façon similaire comme suit
\x°] \ xi0 ]
Xi Xl4
= c0 -
X2 Xl8
[x3 ix
Les Co, Ci, C2 et C3 représentent les transformations colonnes et sont donc des matrices de taille 4x4 dans ce mode de réalisation, qui peuvent potentiellement être implémentées sous la forme d'un algorithme rapide, à base de décomposition en papillon comme connu dans la littérature, notamment si les transformées utilisées sont de type DCT/DST.
Ainsi dans le mode de réalisation sur bloc 4x4 qui vient d'être présentée ci-dessus, 8 transformées ont été provisionnées.
Un avantage de ce mode de réalisation est de prendre en compte le fait que chaque ligne et chaque colonne présente individuellement des statistiques qui lui sont propres. Les performances de compression sont améliorées.
En relation avec la Figure 11, on illustre le gain apporté par l'utilisation de transformées multiples dans un cas concret, celui du codage intra en HEVC, pour des blocs de taille 4x4. Dans ce cadre, HEVC utilise pour les blocs de taille 4x4, une transformée ligne et colonne de type DST VII, c'est cette transformation qui a démontré les meilleu rs résultats en termes de compacité du signal.
On se place dans le cadre d'une prédiction intra numéro 18. Cette prédiction est diagonale. Pour évaluer la performance d'une transformation, on mesure son gain de codage, c'est-à-dire le rapport entre énergie du signal et la moyenne géométrique des coefficients transformés.
En relation avec le tableau de la Figure 11, on présente les performances obtenues avec la DST telle qu'utilisée dans HEVC, la DCT communément utilisée en codage image/vidéo, une transformée séparable optimale au sens KLT (dénommée Sep dans le tableau) et un ensemble de transformées conforme à l'invention, optimisée au sens KLT (dénommée mSep dans la table). L'optimisation au sens KLT consiste à trouver les transformations lignes et colonnes qui permettent d'obtenir le meilleur gain de codage. Conformément à l'art antérieur, les transformations KLT sont obtenues par prise en considération des corrélations pixels à pixels des vecteurs à transformer et détermination de la transformation qui décorrèle au mieux ces pixels. La
matrice d'autocorrélation des pixels est ainsi déterminée, puis une diagonalisation est effectuée : les vecteurs propre engendrant la décorrélation forment la transformée KLT.
Ces résultats démontrent une performance accrue à l'aide de l'invention ou un gain significatif est constaté par rapport aux méthodes de l'art antérieur.
En relation avec la Figure 12, on présente maintenant le procédé de codage d'une image numérique selon un troisième mode de réalisation de l'invention.
Selon ce mode, on forme des vecteurs « ligne » en T"20 à partir du bloc de pixels x et on leur applique deux transformées lignes distinctes au cours de la première sous-étape T"21. On réarrange les coefficients obtenus en T"22 pour former un bloc intermédiaire XI, on forme des vecteurs « colonne » en T"23 et on leur applique deux transformées colonnes distinctes au cours de la deuxième sous-étape de transformation T"24. On réarrange les coefficients transformés en T"25 pour former le bloc transformé X.
Ainsi la transformation ligne mise en œuvre par la première sous-étape T"21 différencie la transformation pour la première ligne de celle utilisée pour les autres et peut s'exprimer de la façon suivante, pour un bloc x de dimension 4x4 :
On n'a donc plus que deux transformées (Lo et Li) plutôt que 4 auparavant.
Pour les colonnes, on peut procéder de manière analogue, c'est-à-dire ne conserver que 2 transformées pour différencier les colonnes (par exemple la première des suivantes). On peut également dans un mode réalisation ne conserver qu'une seule transformation pour l'ensemble des
colonnes, ou dans un autre mode conserver les 4 transformations distinctes tel qu'exposé dans le premier mode de réalisation.
Ainsi on réduit significativement l'impact lié au stockage des transformées.
Pour illustrer les performances obtenues par ce troisième mode de réalisation permettant une réduction de mémoire, on présente à nouveau les gains de codage obtenus dans le cadre des blocs 4x4 pour la prédiction 18 du mode intra de HEVC.
On retient deux transformations distinctes pour les lignes et les colonnes. On a ainsi 4 transformations au total au lieu de 8 comme présenté dans le premier mode de réalisation (on note cette configuration 4Sep). Selon une variante, on retient deux transformations distinctes pour les lignes et une seule transformée pour les colonnes (pour les colonnes on se rapproche ainsi de l'état de l'art). On a ainsi 3 transformations au total au lieu de 8 comme présenté dans le premier mode de réalisation (on note cette configuration 3Sep).
Les résultats sont présentés dans le tableau de la Figure 13. On voit donc que ces versions, à mémoire réduite, permettent d'approcher les résultats obtenus par la version à 8 transformées (mSep) avec la moitié ou moins de mémoire utilisée. On conserve un avantage significatif en compression par rapport aux transformées de l'état de l'art.
En relation avec la Figure 14, on présente maintenant les étapes d'un procédé de décodage selon un mode de réalisation de l'invention.
On suppose qu'un train binaire TB a été reçu par un dispositif de décodage mettant en œuvre le procédé de décodage selon l'invention.
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. En D2, les données décodées relatives au bloc courant C sont déquantifiées. On obtient un vecteur de coefficients déquantifiés DQ[k], avec k entier compris entre 0 et MxN -1.
Au cours d'une étape D3, les coefficients du vecteur DQ sont arrangés dans un bloc transformé Χ'. Il s'agit de l'opération inverse du parcours T3 mis en œuvre par le procédé de codage.
En D4, on détermine les transformées à appliquer au bloc courant X' au cours des sous- étapes successives de transformation inverse D51, D54. Selon l'invention, l'une d'elles au moins mettant en œuvre deux transformées linéaires distinctes. On comprend qu'il s'agit des transformées inverses de celles appliquées par le procédé de codage selon l'invention.
Au niveau du décodeur, les transformées inverses à appliquer à des vecteurs de dimension égale à celle d'une ligne, respectivement d'une colonne peuvent être déterminées de différentes manières, parmi lesquelles on peut citer à titre d'exemple : par lecture dans le train binaire TB d'information d'identification d'au moins une première transformée et d'une deuxième transformée ; par lecture d'informations d'identification des transformées utilisées par l'encodeur dans une mémoire locale ou distante ;
Avantageusement, le choix des première et deuxième transformée peut être associé à un paramètre de codage du bloc courant, par exemple sa taille ou son mode de prédiction.
Selon un mode de réalisation de l'invention, les transformées à appliquer sont obtenues par lecture d'une mémoire, par exemple l'entrée d'une base de données BD2 associant à un paramètre de codage, un identifiant de la première transformée à au moins un identifiant de premier vecteur du bloc ou du bloc intermédiaire, un identifiant d'au moins une deuxième transformée, distincte de la première à au moins un identifiant de deuxième vecteur dudit bloc.
Avantageusement, au cours de D4, on a aussi déterminé comment les vecteurs ont été formés dans le bloc courant au niveau de l'encodeur. Par exemple l'identifiant de vecteur correspond à un type connu de vecteur formé dans un bloc de taille MxN
On comprend qu'il est nécessaire que le décodeur sache former les vecteurs de la même manière que le codeur. Plusieurs types de vecteurs colonne ou lignes peuvent être formés. De
façon similaire à ce qui a été décrit pour les transformées à appliquer, plusieurs modes de réalisation sont envisagés, parmi lesquels : le décodeur dispose localement des mêmes règles de formation des vecteurs que l'encodeur. Ces règles sont par exemple stockées en mémoire ;
- Avantageusement, le décodeur accède à des informations stockées dans une base de données, comprenant des entrées associant à un paramètre de codage, des indications permettant la formation de H vecteurs de dimension W et de W vecteurs de dimension H dans le bloc courant. Cette base de données est dupliquée au niveau du codeur et du décodeur ;
- le décodeur extrait du train binaire des informations représentatives d'un type de vecteur formé par l'encodeur. Cette variante est particulièrement intéressante, lorsque le type de vecteur formé est choisi de façon dynamique, su r la base d'une pré-analyse du contenu du bloc courant mise en œuvre au niveau de l'encodeur.
A l'issue de cette étape, on connaît donc le nombre, les indices et les types de vecteurs associés à un identifiant de transformée linéaire.
Dans la suite de la description, on suppose qu'à l'encodage, la première sous-étape mettait en œuvre au moins deux transformées sur des vecteurs de dimension égale à celle d'une ligne et la deuxième sous-étape une ou plusieurs transformées sur des vecteurs de dimension égale à celle d'une colonne.
Au niveau du décodage, les opérations inverses seront menées dans un ordre inversé de celui effectué lors du codage. Dans cet exemple de réalisation, la première sous-étape D51 de transformation inverse s'applique donc à des vecteurs de dimension égale à celle d'une colonne.
Au cours d'une étape D50 on forme dans le bloc X' des vecteurs de coefficients de longueur égale à celle d'une colonne du bloc Χ'. Il s'agit de l'opération inverse de celle d'arrangement T25 des coefficients des vecteurs transformés dans un bloc X mise en œuvre par le procédé de codage.
Par exemple, côté encodeur, on avait simplement positionné les coefficients du vecteur colonne Vcj transformé par une transformée linéaire C0, Cl ou Cj de l'étape T24, dans la colonne j du bloc X. Au cours de l'étape D50 du procédé de décodage, on forme à l'inverse un vecteur Vcj de longueur égale à celle d'une colonne à partir des coefficients de la colonne j du bloc X'. On comprend donc que selon cet exemple, une colonne de X' comprend les coefficients issues de la transformation
linéaire appliquée par le procédé de codage au vecteur vcj associé. Dans ce cas simple, l'étape D50 consiste alors simplement à former des vecteurs « colonnes » Vcj à partir des colonnes du bloc X'.
Avantageusement, l'étape D50 s'appuie sur des informations relatives à ce réarrangement obtenues au cours de l'étape de détermination D4. Par exemple, le réarrangement qui consiste à associer la colonne cjO à l'entrée de la transformée linéaire C0"1 et la colonne cjl à l'entrée de la transformée linéaire Cl-1 est indiqué par une information représentative d'un type de réarrangement prédéterminé ou bien associe des identifiants de vecteurs à chaque transformée linéaire.
De tels identifiants de vecteur comprennent avantageusement un type de vecteur et un indice de vecteur. Par exemple, le type de vecteur considéré est le type colonne et le vecteur à former est le no j, c'est-à-dire celui qui correspond à la colonne j du bloc.
En D51, on applique les transformées linéaires inverses C0 l' Cl 1 aux vecteurs V'cjO, V'cjl formés en D50, par exemple les colonnes cjO, cjl, sous forme transposée si elles sont orthogonales ou à l'aide d'un algorithme rapide.
On obtient des vecteurs v'cjO, v'cjl.
Au cours d'une étape D52, on positionne les coefficients des vecteurs v'cjO, v'cjl traités pour former un bloc X'I intermédiaire. Pour ce faire, on utilise les informations d'identification des vecteurs déterminées au cours de l'étape D4 et relatives à la formation des vecteurs côté encodeur et on procède à l'opération inverse
Par exemple, si les vecteurs sont des vecteurs colonnes, les informations d'identification comprennent un indice de colonne et les éléments du vecteur sont placés dans la colonne correspondante.
Si les vecteurs ne sont pas linéaires, les informations d'identification identifient un type de vecteur non linéaire connu du décodeur, dont il sait positionner les éléments dans le bloc MxN. Par exemple, si les informations d'identification des vecteurs déterminées indiquent que le vecteur vcj formé dans le bloc X'I côté encodeur était du type de ceux décrits en relation avec la Figure 7E, avec un indice correspondant au vecteur vcO, alors les coefficients seront placés en X'I, X'O, X'4, X'8.
Avant d'être soumis à la deuxième sous-étape de transformation inverse D54, le bloc intermédiaire X'I obtenu est ensuite mis en œuvre dans une étape D53 de formation, similaire à
l'étape D50, mais qui forme un vecteur V'Ii dans le bloc X'I à partir des informations de réarrangement obtenues en D4, et lui associe une des transformées linéaires LO"1 et Ll 1 déterminées elle aussi en D4.
En D54, les transformées inverses sont appliquées, sous forme transposée si elles sont orthogonales ou à l'aide d'un algorithme rapide, et produisent des vecteurs V'liO, Vlil de dimension égale à celle d'une ligne. Les opérations mises en œuvre par le décodeur selon l'invention sont de même nature que celles utilisées par l'état de l'art : la complexité est donc inchangée pour effectuer les transformations.
En D55, on positionne les vecteurs obtenus pour former le bloc de pixels χ'. Il s'agit de l'opération inverse de celle de formation T20 des vecteurs mise en œuvre dans le procédé de codage selon l'invention.
En D6, on reconstruit le bloc de pixels de l'image décodée à partir du bloc x' obtenu et on l'intègre à l'image ID en cours de décodage. Si le bloc x' est un bloc résidu, on lui ajoute une prédiction du bloc courant obtenue à partir d'une image de référence précédemment traité.
Au cours d'une étape D7, 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é son traitement. Si non, l'étape suivante est l'étape de sélection du bloc suivant DO et les étapes de décodage Dl à D7 précédemment décrites sont répétées pour le bloc suivant sélectionné.
On notera que l'invention qui vient d'être décrite, peut être mise en œuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, les termes « module » et « entité », utilisés dans ce document, peuvent correspondre soit à un composant logiciel, soit à un composant matériel, soit encore à un ensemble de composants matériels et/ou logiciels, aptes à mettre en œuvre la ou les fonctions décrites pour le module ou l'entité concerné(e).
En relation avec la figure 15, on présente maintenant un exemple de structure simplifiée d'un dispositif 100 de codage d'une image numérique selon l'invention. Le dispositif 100 met en œuvre le procédé de codage selon l'invention qui vient d'être décrit en relation avec la Figure 6.
Par exemple, le dispositif 100 comprend une unité de traitement 110, équipée d'un processeur μΐ, et pilotée par un programme d'ordinateur Pgl 120, stocké dans une mémoire 130 et mettant en œuvre le procédé de selon l'invention.
A l'initialisation, les instructions de code du programme d'ordinateur Pgi 120 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 110. Le processeur de l'unité de traitement 110 met en œuvre les étapes du procédé décrit précédemment, selon les instructions du programme d'ordinateur 120.
Dans cet exemple de réalisation de l'invention, le dispositif 100 comprend au moins une unité TRANS de transformation d'un bloc courant en un bloc transformé X comprenant une première sous-unité de transformation TRI du bloc courant en un bloc intermédiaire et une deuxième sous-unité TR2 de transformation du bloc intermédiaire en le bloc transformé, u ne unité QUANT de quantification du bloc transformé, une unité COD de codage du bloc quantifié et une unité INSERT d'insertion des données codées dans le train binaire TB.
Selon l'invention, l'unité de transformation comprend au moins une sous-unité FORM de formation d'au moins deux vecteurs à partir d'éléments (pixels, respectivement coefficients) d'un desdits blocs parmi le bloc courant et le bloc intermédiaire, apte à être mise en œuvre préalablement à au moins une desdites sous-unités de transformation et une sous-unité ARR d'arrangement des coefficients obtenus dans un bloc. Le dispositif comprend aussi une unité DET de détermination des au moins deux transformées distinctes à appliquer auxdits vecteurs, au moins en fonction d'un paramètre de codage du bloc courant.
Avantageusement, le dispositif 100 comprend en outre une mémoire, par exemple une unité BD1 de stockage d'une table comprenant des entrées associant à un paramètre de codage un identifiant de la première transformée à au moins un identifiant de vecteur du bloc ou du bloc intermédiaire, un identifiant d'au moins une deuxième transformée, distincte de la première à au moins un identifiant de deuxième vecteur dudit bloc.
Ces unités sont pilotées par le processeur μΐ de l'unité de traitement 110.
De façon avantageuse, le dispositif 100 peut être intégré à un terminal d'utilisateur TU. 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 via un réseau de télécommunications à un dispositif de décodage;
Par exemple, le dispositif de décodage 200 comprend une unité de traitement 210, équipée d'un processeu r μ2, et pilotée par u n programme d'ordinateur Pg2 220, stocké dans une mémoire 230 et mettant en œuvre le procédé de décodage selon l'invention, qui vient d'être décrit en relation avec la Figure 14.
A l'initialisation, les instructions de code du programme d'ordinateur Pg2 220 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 210. Le processeur de l'unité de traitement 210 met en œuvre les étapes du procédé décrit précédemment, selon les instructions du programme d'ordinateur 220.
Dans cet exemple de réalisation de l'invention, le dispositif 200 comprend au moins une unité DEC de décodage des coefficients du bloc courant transformé à partir de données lues dans le train binaire, une unité DEQUANT de déquantification des coefficients décodés, une unité TRANS"1 de transformation inverse du bloc courant transformé, apte à mettre en œuvre deux sous-unités successives de transformation inverse, la première sous-unité TRI-1 s'appliquant au bloc courant transformé, la deuxième TR2 1 au bloc intermédiaire, issu de la première sous-unité . Selon l'invention, au moins une des sous-unités TRI-1, TR2 1 met en œuvre au moins une première et une deuxième transformée linéaire, distinctes l'un de l'autre, sur un bloc dit bloc à traiter, parmi le bloc courant transformé et le bloc intermédiaire.
Selon l'invention, l'unité de transformation inverse comprend en outre une sous-unité FORM-1 apte à réarranger les coefficients des vecteurs traités par la première et la deuxième transformées dans le bloc traité.
Avantageusement, le dispositif comprend aussi une unité ARR-1 de formation d'au moins deux vecteurs à partir des coefficients du bloc à traiter, lesdits vecteurs ayant une longueur égale à une des dimensions du bloc courant, auxquels seront appliquées les première et deuxièmes transformées linéaires et une unité DET de détermination des au moins deux transformées linéairesdistinctes à appliquer auxdits vecteurs, au moins en fonction d'un paramètre de codage du bloc courant.
Ces unités sont pilotées par le processeur μ2 de l'unité de traitement 210.
De façon avantageuse, le dispositif 200 peut être intégré à un terminal d'utilisateur TU. 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 d'un réseau de télécommunications ;
Un dispositif DISP de restitution d'images, par exemple un écran de terminal, par l'intermédiaire duquel l'image numérique décodée ou la suite d'images décodées est restituée à un utilisateur.
De façon avantageuse, le terminal d'utilisateur TU peut intégrer à la fois un dispositif de codage et un dispositif de décodage selon 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.