Brevet FR3071690A1 — publié le 20190329

Procédé de décodage d'une image, procédé de codage, dispositifs, équipement terminal et programmes d'ordinateurs associés 1. Domaine de l'invention Le domaine de l'invention est celui de la compression de signal, en particulier d'une image numérique ou d'une séquence d'images numériques, divisée en blocs de pixels. L'invention concerne plus particulièrement la transformation d'un bloc de pixels, issu ou non d'une prédiction. Elle trouve notamment son application dans un contexte de compétition de transformées. Le codage/décodage d'images numériques s'applique notamment à des images issues d'au moins une séquence vidéo comprenant : - des images issues d'une même caméra et se succédant temporellement (codage/décodage de type 2D), - des images issues de différentes caméras orientées selon des vues différentes (codage/décodage de type 3D), - des composantes de texture et de profondeur correspondantes (codage/décodage de type 3D), - etc. La présente invention s'applique de manière similaire au codage/décodage d'images de type 2D ou 3D. L'invention peut notamment, mais non exclusivement, s'appliquer au codage vidéo mis en oeuvre dans les codeurs vidéo actuels AVC (pour « Advanced Video Coding », en anglais) et HEVC (pour « High Efficiency Video Coding », en anglais) et leurs extensions futures (MVC, 3D-AVC, MVHEVC, 3D-HEVC, post-HEVC, etc), et au décodage correspondant. 2. Présentation de l'art antérieur La compression de séquences d'images et de vidéo fait appel à des transformations. Celles-ci sont généralement appliquées sur un signal résiduel, différence entre les pixels de l'image et la prédiction qui en est faite pour un bloc donné. Les transformations peuvent être implémentées sous forme de matrices de coefficients, oà l'aide d'algorithmes rapides. Dans les deux cas elles nécessitent de stocker les coefficients de transformées. 2 Le nombre de coefficients est d'autant plus grand que les transformations sont grandes. Le nombre de coefficients est également démultiplié dans le cas où le codeur/décodeur font appel à plusieurs transformées, dans un contexte de compétition de transformées, par exemple décrit dans la publication de A. Arrufat et al., intitulée « Rate-distortion optimised transform competition 5 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. La meilleure transformée pour le bloc courant est sélectionnée parmi plusieurs transformées disponibles à l'encodage, selon un critère d'optimisation débit-distorsion. Par exemple, il est proposé 5 transformées pour les blocs de taille 4x4 et 17 transformées pour les blocs de taille 8x8. 10 Pour diminuer la quantité de coefficients à stocker, il est connu de recourir à des transformées trigonométriques, dont le nombre de coefficients est limité. Cependant, le choix est restreint, car il n'y a que 16 transformées trigonométriques de type DCT/DST. Par ailleurs le fait de se restreindre à ces transformées limite la performance du codage car ces transformées ne sont pas toujours adaptées aux signaux codés. 15 Si on utilise des transformées non trigonométriques, la quantité de coefficients à stocker est plus importante et croît linéairement avec le nombre de transformées. Par exemple, une transformation de taille 8x8 requiert l'application successive d'une sous-transformée horizontale et d'une transformée verticale, ce qui nécessite 2x64 coefficients= 128. Si 17 transformées sont stockées conformément à la publication de Arrufat, (17*128= 2176 coefficients 20 sont à stocker. 3. Inconvénients de l'art antérieur La compétition de transformées permet d'améliorer les performances de compression, mais au prix d'un besoin accru en ressources de stockage. 25 4. Objectifs de l'invention L'invention vient améliorer la situation. L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est de proposer une solution qui permette une utilisation d'un nombre important de transformées distinctes, tout en réduisant la quantité de 30 ressources de stockage requise. 3 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 décodage d'au moins une image numérique, à partir de données codées et 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é 5 comprenant les étapes suivantes, mises en oeuvre pour un bloc, dit bloc courant, comprenant un nombre prédéterminé (Mv) de lignes et un nombre prédéterminé (Mh) de colonnes: - Décodage des coefficients du bloc courant à partir de données codées ; - Décodage d'un index représentatif d'un identifiant d'une transformée parmi une pluralité de transformées et identification de la transformée, une transformée s'exprimant sous 10 la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée horizontale de taille Mh*Mh ; - Transformation du bloc courant en un bloc décodé transformé, à partir de la transformée obtenue, par application successive de la sous-transformée verticale puis de la sous-transformée horizontale ou respectivement de la sous-transformée horizontale puis de 15 la sous-transformée verticale ; - Reconstruction de l'image à partir du bloc décodé transformé ; Selon l'invention, l'étape de transformation comprend, pour l'application d'au moins une sous-transformée de la transformée sélectionnée : - la lecture dans une mémoire des coefficients d'au moins une sous-transformée distincte 20 , dite transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. Corrélativement, l'invention concerne aussi un procédé de codage d'au moins 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 oeuvre pour un bloc courant, comprenant un nombre 25 prédéterminé (Mv) de lignes et un nombre prédéterminé (Mh) de colonnes: - Sélection d'une transformée parmi une pluralité de transformées, une transformée s'exprimant sous la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée horizontale de taille Mh*Mh ; - Transformation du bloc courant en un bloc transformé, par la transformée sélectionnée ; 30 - Encodage du bloc transformé destiné à produire des données codées représentatives du bloc transformé ; 4 - Insertion des données codées dans un train binaire représentatif de l'image codée ; Selon l'invention, l'étape de transformation comprend, pour l'application d'au moins une sous-transformée de la transformée sélectionnée : - la lecture dans une mémoire des coefficients d'au moins une sous-transformée distincte, dite 5 transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. Le principe de l'invention consiste à réaliser au moins deux sous-transformations distinctes à partir des coefficients d'une seule sous-transformée noyau. L'invention propose ainsi de réaliser un système 10 de transformées à partir de sous-transformées séparables construites à partir d'une ou plusieurs transformations noyaux. De la sorte, le nombre de coefficients de transformées à stocker en mémoire est réduit. Ce principe est applicable aussi bien au codeur qu'au décodeur. Les modes de réalisations qui vont maintenant être présentés s'appliquent aussi bien au procédé de 15 codage qu'au procédé de décodage. Selon un aspect de l'invention, la au moins une sous-transformée noyau comprend un nombre de lignes Mh', M'v de coefficients non nuls inférieur au nombre de lignes Mh et/ou au nombre de colonnes Mvdu bloc courant et les coefficients lus sont utilisés pour les Mh premières lignes respectivement les Mv premières colonnes du bloc. 20 Cela revient à appliquer des coefficients nuls aux (M-M') lignes suivantes du bloc. On exploite le fait que les composantes basses fréquences sont celles qui portent le plus d'informations et sont les plus utiles en codage vidéo pour réduire le nombre de coefficients stockés. Selon un autre aspect de l'invention, l'utilisation modifiée des coefficients de la sous-transformée noyau comprend un renversement des lignes de la sous-transformée noyau. 25 Cette construction de sous transformée, aux motifs horizontaux, respectivement verticaux, inversés par rapport à la représentation offerte par le noyau permet, sans stockage de coefficients supplémentaires, de mieux représenter certains blocs résiduels. Par exemple, un vecteur ligne de la sous-transformée noyau comprenant des coefficients décroissants est transformée en un vecteur ligne croissant capable de considérer un gradient 5 croissant dans le bloc à encoder. Les performances de codage sont donc améliorées pour ce type de bloc. Selon un autre aspect de l'invention, l'utilisation modifiée des coefficients de la sous-transformée noyau comprend au moins une permutation de deux coefficients et au moins un changement de 5 signe d'un coefficient. Cette construction de sous-transformée permet, sans stockage de coefficients supplémentaires, de mieux représenter des blocs résiduels aux motifs horizontaux, respectivement verticaux, avec des motifs décalés spatialement par rapport à la représentation offerte par le noyau. Par exemple, un vecteur ligne du noyau comprenant des coefficients aptes à représenter un contour 10 à une position donnée permettra, à la sous transformée construite, par échange de position, de traiter précisément des contours à une autre position. Les performances de codage sont donc améliorées pour ce type de bloc. L'invention permet donc de réaliser des transformations variées à partir d'un même noyau pour mieux s'adapter à différents types de blocs, sans augmenter la quantité de coefficients à stocker. 15 Selon encore un autre aspect de l'invention, le nombre de lignes du bloc courant étant égal au nombre de colonnes Mh=Mv, la pluralité de transformées comprend : - une première sous transformée verticale AvO = A de taille Mv*Mv(=Mh*Mh) qui utilise à l'identique les coefficients d'une première sous-transformée noyau K; - une deuxième sous-transformée verticale Avl = D qui utilise les coefficients de la première 20 sous-transformée noyau K avec renversement de ses lignes; - une première sous transformée horizontale Ah0 de taille Mh*Mh(=Mv*Mv) qui utilise à l'identique les coefficients de la première sous-transformée noyau K; - une deuxième sous-transformée horizontale Ahl = D qui utilise les coefficients de la première sous-transformée noyau avec renversement de ses lignes. 25 Avantageusement on réalise ainsi un système comprenant les 4 transformées suivantes : TO = AvOxAhO = AxA Ti. = AvOxAhl = AxD T2 = AviyAh0 = DxA T3 = AvlxAhl = DxD 6 Ce système ne nécessite le stockage que de la sous-transformée A, ce qui représente Mh2 coefficients, alors que l'art antérieur en a besoin de 8*Mh2. Si, en outre, la transformée noyau ne comprend que Mh' >Nbit (5) Dans ce cas, le terme offset représente une valeur entière, par exemple offset=2Nbit-1, Nbit est lié à la précision binaire souhaitée. 20 Selon l'invention, on considère au moins une sous-transformée K, dite noyau, dont on stocke en mémoire les coefficients et on utilise les coefficients de ce noyau pour réaliser au moins deux sous-transformées distinctes, sans nécessité de stocker en mémoire des coefficients supplémentaires. Il en résulte que selon l'invention, pour appliquer la sous-transformée Ah,n ou Av,n, il est nécessaire de lire les coefficients de la sous-transformée noyau en mémoire et de les utiliser directement pour 25 calculer le résultat de la transformation du bloc par la sous-transformée Ah,n ou Av,n. Selon l'invention cette utilisation peut comprendre une modification de la position et/ou du signe d'au moins un coefficient de la sous-transformée noyau, sans changement de sa valeur absolue. 11 On comprend qu'il n'est pas nécessaire de passer par une étape de stockage des coefficients de la sous-transformée déduite du noyau pour l'appliquer au bloc courant. Dans le cas où le bloc x est rectangulaire avec Mh différent de Mv, on peut considérer une sous-transformée noyau verticale Kv et une sous-transformée noyau horizontale Kh distinctes. 5 Avantageusement, Kh peut être déduite de Kv ou l'inverse. On peut donc déduire plusieurs sous-transformées distinctes à partir de la sous-transformée noyau, tant que cette déduction ne nécessite pas la lecture de coefficients supplémentaires en mémoire, ni de transformation de la valeur absolue des coefficients du noyau par calcul. Par exemple, on déduit simplement une première sous-transformée A du noyau K en appliquant tous 10 les coefficients de K aux mêmes éléments du bloc. A ou une partie de A est identique au noyau K, selon les dimensions de K par rapport à la sous-transformée A. Selon une première option, K et A ont les mêmes dimensions. On a donc A = K. Selon une deuxième option, K comprend un nombre de lignes M' inférieur au nombre de lignes M de A. On réalise alors la transformation par A en appliquant les coefficients des M' premières lignes de 15 K au bloc. Cela revient à construire la sous-transformée illustrée par la Figure 4 pour la sous- transformée horizontale Ah,n. On déduit en outre une deuxième sous-transformée D de A, par permutation ou changement de position des coefficients de A. Selon l'invention, D s'écrit sous la forme D-f(A), avec f opérateur de modification. D dépend uniquement de A et s'écrit sous la forme d'une permutation des valeurs de 20 la matrice A. Ses coefficients sont donc utilisés sans modification, mais à des éléments différents du bloc, c'est-à-dire positionnés différemment. Un opérateur f selon l'invention peut appartenir au groupe comprenant : 1. Une inversion des positions des coefficients de chacune des lignes, comme présenté ci-dessous les indices de la matrice d(A) sont inversés sur chacune des lignes par rapport à la 25 matrice A. En relation avec la Figure 5, on voit que le second indice est inversé suivant la ligne ; 2. Un changement de signe sur les lignes ; 3. Une combinaison des 2 premiers points, qu'on appelle « permutation au signe près ». 12 En permettant d'appliquer plusieurs sous-transformations distinctes à partir d'un même noyau, l'invention économise de l'espace mémoire. En effet, considérons le cas d'une transformée T composée d'une sous-transformée horizontale de dimensions Mh*Mh et d'une sous-transformée verticale de dimensions Mv*Mv. Son utilisation 5 nécessite le stockage de Mh*Mh + Mv*Mv coefficients. Par exemple, dans le cas d'une compétition avec N=3 transformées et pour des blocs de taille 8x4, un codeur ou un décodeur selon l'art antérieur a besoin de stocker 3*(64+16) = 240 coefficients. Avec l'invention, un noyau K permet de déduire au moins une sous-transformée Ah et une sous-transformée Dh = f(Ah) d'un même noyau K. Supposons que ce noyau K soit de taille Mh*Mh. On 10 économise alors le stockage d'au moins 64 coefficients. On considère maintenant la variante selon laquelle le noyau est de taille Mh'*Mh avec Mh' REVENDICATIONS1. Procédé de décodage d'au moins une image numérique (Ij), à partir de données codées par un encodeur et représentatives de ladite image, ladite image (Ij) étant divisée en une pluralité de blocs traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc, dit bloc courant (C), comprenant un nombre prédéterminé (Mv) de lignes et un nombre prédéterminé (Mh) de colonnes : - Décodage (Dl) des coefficients du bloc courant à partir de données codées ; - Décodage d'un index représentatif d'un identifiant d'une transformée parmi une pluralité de transformées et identification de la transformée, une transformée s'exprimant sous la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée horizontale de taille Mh*Mh ; - Transformation (D5) du bloc courant en un bloc décodé transformé, à partir de la transformée obtenue, par application successive de la sous-transformée verticale puis de la sous-transformée horizontale ou respectivement de la sous-transformée horizontale puis de la sous-transformée verticale ; - Reconstruction (D8) de l'image à partir du bloc décodé transformé ; caractérisé en ce que l'étape de transformation comprend, pour l'application d'au moins une sous-transformée de la transformée sélectionnée : - la lecture dans une mémoire des coefficients d'une sous-transformée distincte, dite transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. 2. Procédé de codage d'au moins une image numérique, ladite image (Ii) étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, ledit procédé comprenant les étapes suivantes, mises en oeuvre pour un bloc courant, comprenant un nombre prédéterminé (Mv) de lignes et un nombre prédéterminé (Mh) de colonnes: - Sélection d'une transformée (E37) parmi une pluralité de transformées, une transformée s'exprimant sous la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée horizontale de taille Mh*Mh; - Transformation (E382) du bloc courant en un bloc transformé, par la transformée sélectionnée ; 30 31 - Encodage (E39) du bloc transformé destiné à produire des données codées représentatives du bloc transformé ; - Insertion des données codées dans un train binaire représentatif de l'image codée ; caractérisé en ce que l'étape de transformation comprend, pour l'application d'au moins une 5 sous- transformée de la transformée sélectionnée : la lecture dans une mémoire des coefficients d'au moins une sous-transformée distincte, dite transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que la au moins une sous- 10 transformée noyau comprend un nombre de lignes (Mh', M'v) de coefficients non nuls inférieur au nombre de lignes et/ou au nombre de colonnes du bloc courant et en ce que les coefficients lus sont appliqués aux Mh', Mv' premières lignes du bloc. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que l'utilisation modifiée des coefficients de la sous-transformée noyau comprend un renversement des lignes de la sous- 15 transformée noyau. 5. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que l'utilisation modifiée des coefficients de la sous-transformée noyau comprend au moins une permutation de deux coefficients et au moins un changement de signe d'un coefficient. 6. Procédé selon les revendications 4 et 5, caractérisé en ce que, le nombre de lignes du bloc 20 courant étant égal au nombre de colonnes Mh=Mv, la pluralité de transformées comprend : - une première sous transformée verticale AvO = A de taille Mv*Mv (=Mh*Mh) dont l'application utilise à l'identique les coefficients d'une première sous-transformée noyau K; - une deuxième sous-transformée verticale Av1 = D dont l'application utilise les coefficients de la première sous-transformée noyau avec renversement de ses lignes; 25 une première sous transformée horizontale Ah0 de taille Mh*Mh(=Mv*Mv) dont l'application utilise à l'identique les coefficients de la première sous-transformée noyau K ; - une deuxième sous-transformée horizontale Ah1 = D dont l'application utilise les coefficients de la première sous-transformée noyau avec renversement de ses lignes. 7. Procédé selon les revendications 4 à 5, caractérisé en ce que, la pluralité de transformées 30 comprend : 32 - une première sous transformée verticale AvO = A de taille Mv*Mv dont l'application utilise à l'identique les coefficients d'une première sous-transformée noyau K de taille Mv'xMv avec Mv' inférieur à Mv; - une deuxième sous-transformée verticale Avl = C dont l'application utilise les coefficients de 5 la première sous-transformée noyau K avec renversement de ses lignes; - une première sous transformée horizontale Ah0 = B de taille Mh*Mh dont l'application utilise à l'identique les coefficients d'une deuxième sous-transformée noyau K' de taille Mh'xMh avec Mh' inférieur à Mh; une deuxième sous-transformée horizontale Ahl = D dont l'application utilise les coefficients 10 de la deuxième sous-transformée noyau K' avec renversement de ses lignes. 8. Dispositif (200) de décodage d'un flux de données codées représentatif d'au moins une image (lm), ladite image étant découpée en blocs, caractérisé en ce qu'il comprend une machine de calcul configurée pour ou dédiée à : Pour un bloc courant, comprenant un nombre prédéterminé (Mv) de lignes et un nombre 15 prédéterminé (Mh) de colonnes : - Décoder des coefficients du bloc courant à partir de données codées ; Décoder un index représentatif d'un identifiant d'une transformée et identifier la transformée parmi une pluralité de transformées, une transformée s'exprimant sous la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée 20 horizontale de taille Mh*Mh ; Transformer le bloc courant en un bloc décodé transformé, à partir de la transformée identifiée, par application successive de la sous-transformée verticale puis de la sous- transformée horizontale ou respectivement de la sous-transformée horizontale puis de la sous-transformée verticale ; 25 Reconstruire l'image à partir du bloc décodé transformé ; caractérisé en ce que la transformation du bloc courant comprend, pour au moins une transformée de la pluralité de transformées et pour l'application d'au moins une sous-transformée de la transformée sélectionnée : - la lecture dans une mémoire des coefficients d'au moins une sous-transformée distincte, 30 dite transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. 33 9. Dispositif (100) de codage d'un flux de données représentatif d'au moins une image (Im), ladite image étant découpée en blocs, caractérisé en ce qu'il comprend une machine de calcul configurée pour ou dédiée à : pour un bloc courant, comprenant un nombre prédéterminé (Mv) de lignes et un nombre 5 prédéterminé (Mh) de colonnes : - Sélectionner une transformée parmi une pluralité de transformées, une transformée s'exprimant sous la forme d'une sous-transformée verticale de taille Mv*Mv et d'une sous-transformée horizontale de taille Mh*Mh; - Transformer le bloc courant en un bloc transformé, à l'aide de la transformée sélectionnée; 10 - Encoder le bloc transformé sous la forme de données codées ; - Insérer les données codées dans un train binaire représentatif de l'image codée ; caractérisé en ce que la transformation du bloc courant comprend, pour au moins une transformée de la pluralité de transformées et pour l'application d'au moins une sous-transformée de la transformée sélectionnée : 15 - la lecture dans une mémoire des coefficients d'au moins une sous-transformée distincte, dite transformée noyau, appartenant à la pluralité de transformées, et - l'utilisation modifiée des coefficients lus, leurs valeurs absolues étant conservées. 10. Equipement terminal d'utilisateur (TU, TU') caractérisé en ce qu'il comprend un dispositif de décodage (200) d'au moins une image numérique selon la revendication 8 et/ou un dispositif 20 de codage (100) d'au moins une image numérique selon la revendication 9. 11. Programme d'ordinateur (Pg1,Pg2) comprenant des instructions pour la mise en oeuvre du procédé selon l'une des revendications 1 à 7, lorsqu'il est exécuté par un processeur. 25 12. Support d'enregistrement lisible par un ordinateur, sur lequel est enregistré un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications 1 à 7. 30