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 et HEVC et leurs extensions (MVC, 3D- AVC, MV-HEVC, 3D-HEVC, etc), et au décodage correspondant.
L'invention peut s'appliquer aussi au codage audio, par exemple mis en œuvre dans les codeurs audio actuels (EVS, OPUS, MPEG-H, etc) et leurs extensions 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é. Les codeurs standards proposent un partitionnement régulier, qui s'appuie sur des blocs carrés ou rectangulaires 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. En relation avec la Figure la, on présente un exemple de partitionnement de bloc de taille 16x16, 8x8 ou 4x4 autorisé par la norme. En relation avec la Figure lb, on illustre un exemple de partitionnement permis par la norme HEVC. Cette norme est 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. On voit qu'il s'agit d'un partitionnement en QuadTree, qui reste régulier, mais qui est plus flexible que celui de la norme AVC, à partir de blocs de taille 64x64. Le partitionnement selon la norme HEVC a pour avantage d'adapter le codage à la structure de l'image, notamment à la présence de zones de texture homogènes et inhomogènes. A titre d'exemple, la figure 2a propose un bloc 64x64 présentant une zone homogène et 2 zones de détails. La figure 2b montre le partitionnement possible de HEVC pour coder le bloc de la figure 3. Un inconvénient de ce partitionnement est de ne pas être encore assez flexible pour permettre de coller aux variations de texture de l'image, alors qu'il engendre déjà une signalisation non négligeable en termes de coût de codage. Par exemple, pour coder le partitionnement final de la Figure 4, on remarque qu'il faudrait transmettre 28 vecteurs de mouvement, et que la signalisation du partitionnement final pourrait être : 1 0 1 100001000000 1 00010000 1 001000010000.
On connaît de la demande de brevet publiée sous le numéro WO2011/127966, un procédé de codage d'une image numérique en 3D, par plans, selon lequel le partitionnement mis en œuvre pour le codage d'un plan de cette image, par exemple le plan de texture, est hérité lors du codage du plan de profondeur associé. Il en résulte une économie substantielle en termes de signalisation.
3. Inconvénients de l'art antérieur
Un inconvénient de cet art antérieur est que le partitionnement proposé par l'art antérieur reste trop contraint et ne permet toujours pas de s'adapter finement aux formes et aux textures des objets contenus dans l'image à coder.
4. Objectifs de l'invention
L'invention vient améliorer la situation.
L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur.
Plus précisément, un objectif de l'invention est de proposer une solution qui permette de prédire et coder plus efficacement des structures d'images complexes.
Un autre objectif de l'invention est de proposer une solution qui soit plus performante en compression.
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 (Im) étant divisée en une pluralité de blocs de pixels traités dans un ordre défini, caractérisé en ce que ledit procédé comprend les étapes suivantes, mises en œuvre pour un bloc courant (b) : a) Obtention d'un vecteur mouvement, dit vecteur mouvement de base du bloc courant par rapport à une image de référence précédemment décodée;
b) Obtention d'un partitionnement en sous-blocs de la zone pointée dans l'image de référence par le vecteur mouvement de base et application du partitionnement obtenu au bloc courant (b);
c) Parcours des sous-blocs du bloc courant selon un ordre de parcours prédéterminé et codage des sous-blocs parcourus, ledit codage comprenant une étape de modification du partitionnement du bloc courant en sous-blocs selon des règles prédéterminées, une étape de codage des sous-blocs du partitionnement modifié comprenant le codage d'informations de signalisation de la modification du partitionnement et une étape de validation du partitionnement modifié par application d'un critère débit-distorsion aux sous-blocs codés du partitionnement modifié.
Ainsi, l'invention repose sur une approche tout à fait nouvelle et inventive du codage d'images, qui consiste à appliquer au bloc courant le partitionnement de la zone de même taille de l'image de référence pointée par le vecteur mouvement de base obtenu pour le bloc courant.
Contrairement à l'art antérieur qui, dans un cas calcule et signale un nouveau partitionnement complet par bloc courant, et dans l'autre cas fait hériter le bloc courant d'un plan de l'image à coder du partitionnement utilisé pour le bloc co-localisé d'un autre plan de l'image à coder, par exemple le plan de profondeur, l'invention tire parti des similitudes de texture qui existent entre le bloc courant de l'image courante et la zone pointée dans l'image de référence, pour optimiser le partitionnement du bloc courant.
Il en résulte que la structure de partitionnement initiale du bloc courant n'a pas besoin d'être transmise au décodeur sous forme d'informations de signalisation dans le flux de données, puisqu'elle peut être obtenue à partir de l'image de référence précédemment traitée.
Il en résulte également que la structure de partitionnement est irrégulière : contrairement aux codeurs standards qui appliquent un partitionnement régulier, par exemple de type « quadtree », le partitionnement proposé par l'invention n'est pas régulier et, bien que complexe, il reste simple à signaler, car il est en partie hérité de l'image de référence.
L'invention permet donc de mieux adapter le partitionnement d'un bloc au contenu à coder, tout en optimisant le coût de codage.
L'invention propose ainsi un nouveau mode de codage d'un bloc courant, qui peut avantageusement être mis en compétition avec d'autres modes de codage connus des schémas de codage actuellement normalisés, tels que par exemple les modes Intra, Inter, ou Merge de la norme HEVC.
Le partitionnement obtenu de l'image de référence constitue un partitionnement initial du bloc courant, que l'invention propose de modifier pour s'adapter plus finement à la texture spécifique du bloc courant. Cette modification peut consister en une fusion de partitions voisines ou en un découpage d'une partition.
Avantageusement, cette modification est validée par comparaison avec le partitionnement initial. Une fois validée, la modification est signalée dans le train binaire
par exemple par différence avec le partitionnement initial. Le fait de signaler les modifications de partitionnement permet un faible surcoût de codage associé.
Selon une caractéristique avantageuse de l'invention, l'étape d'obtention du vecteur mouvement de base comprend une estimation de mouvement du bloc courant par rapport à l'image de référence précédemment décodée selon un critère de minimisation d'erreur.
De façon avantageuse, l'invention met en œuvre une estimation de mouvement particulière du bloc courant par rapport à une image de référence. Elle fournit le vecteur mouvement de base qui sert à obtenir le partitionnement initial du bloc courant à partir de l'image de référence. Elle privilégie un critère de minimisation d'erreur, plutôt qu'un critère de coût de codage du bloc, de façon à garantir que le contenu de la zone pointée par le vecteur mouvement de base estimé soit la plus semblable possible à celui du bloc courant.
Selon une caractéristique avantageuse de l'invention, la modification comprend une fusion d'un sous bloc du partitionnement courant codé avec au moins un sous bloc voisin déjà codé.
Une modification proposée par l'invention est de fusionner deux ou plusieurs sous-blocs voisins du bloc courant pour les coder comme une seule partition. La modification du partitionnement est signalée dans le train binaire. Du fait de l'héritage du partitionnement initial, la signalisation ne constitue pas un surcoût important, surtout qu'un vecteur mouvement de base peut être économisé du fait de cette fusion. L'invention permet de faire un compromis entre le coût additionnel lié à la modification du partitionnement, et la réduction du coût associé à la signalisation du vecteur de mouvement
En effet, on peut soit faire une estimation de mouvement spécifique au sous-bloc issu de la fusion, de façon à garantir un codage plus efficace du sous-bloc fusionné, soit réutiliser le vecteur mouvement de base mis en œuvre pour au moins un des sous-blocs fusionnés, de façon à minimiser la signalisation additionnelle. Par exemple, on peut
prendre la moyenne des vecteurs mouvements des blocs fusionnés, ou bien le minimum des deux, ou encore celui qui correspond au sous bloc initial le plus grand, etc.
Selon un autre aspect de l'invention, la modification du partitionnement courant comprend en outre un découpage d'au moins un sous-bloc en au moins deux sous-blocs.
Il est aussi possible de découper davantage un sous-bloc du partitionnement initial. Les partitionnements obtenus sont codés individuellement. La modification du partitionnement est signalée dans le train binaire, ainsi que d'éventuels vecteurs mouvements de base. Avantageusement, l'étape de découpage dudit au moins un sous-bloc en au moins deux sous-blocs, dits sous-blocs découpés, comprend la mise en œuvre des étapes a) et b) d'obtention d'un vecteur mouvement de base et d'application du partitionnement de la zone pointée par le vecteur mouvement de base pour le au moins un sous-bloc courant. Le principe de définir un partitionnement initial du bloc courant à partir de celui du bloc pointé par le vecteur mouvement estimé dans l'image de référence, est ici appliqué récursivement pour les sous-blocs découpés. L'avantage est d'adapter le plus finement possible le partitionnement donc la prédiction et le codage à la structure de l'image.
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.
Un tel dispositif de codage d'une image numérique est particulier en ce qu'il est apte à mettre en œuvre les unités suivantes, mises en œuvre pour un bloc courant :
Obtention d'un vecteur mouvement, dit vecteur mouvement de base du bloc courant par rapport à une image de référence précédemment décodée;
Obtention d'un partitionnement en sous-blocs de la zone pointée dans l'image de référence par le vecteur mouvement de base et application du partitionnement obtenu au bloc courant;
Parcours des sous-blocs du bloc courant selon un ordre de parcours prédéterminé et codage des sous-blocs parcourus, ledit codage comprenant une modification du partitionnement du bloc courant en sous-blocs selon des
règles prédéterminées, un codage des sous-blocs du partitionnement modifié comprenant le codage d'informations de signalisation de la modification du partitionnement et une validation du partitionnement modifié par application d'un critère débit-distorsion aux sous-blocs codés du partitionnement modifié.
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 : a') Obtention d'un vecteur mouvement de base entre le bloc courant et une image de référence précédemment décodée, ledit vecteur mouvement pointant sur une zone de l'image de référence, de même taille que celle du bloc courant; b') Obtention d'un partitionnement en sous-blocs de la zone pointée dans l'image de référence par le vecteur mouvement de base et application du partitionnement obtenu au bloc courant; c') Parcours des sous-blocs du bloc courant selon un ordre de parcours prédéterminé et décodage des données codées lues dans le train binaire pour les sous-blocs parcourus, ledit décodage comprenant une modification du partitionnement initial, obtenu pour le bloc courant en fonction de données codées représentatives d'une signalisation de la modification du partitionnement et le décodage du partitionnement modifié.
Ainsi, le procédé de décodeur reproduit le principe d'application au bloc courant du partitionnement d'une zone de même taille pointée par le vecteur mouvement du bloc courant dans une image de référence, proposé par l'invention.
Avantageusement, la mise en œuvre de ce mode de codage propre à l'invention pour le bloc courant lui est signalée dans le train binaire, lequel comprend en outre un champ représentatif du vecteur mouvement de base à utiliser. Ce vecteur mouvement de base
peut avoir été estimé spécifiquement pour coder le bloc courant selon l'invention et dans ce cas, le champ en question code ses composantes. Selon une variante, il correspond à un vecteur mouvement estimé pour un bloc voisin et le champ comprend un index représentatif du bloc voisin. Le partitionnement initial est avantageusement modifié en fonction des données de signalisation lues dans le train binaire.
Selon une caractéristique avantageuse de l'invention, lorsque les données codées signalent une fusion, l'étape de modification du partitionnement initial remplace les au moins deux sous-blocs voisins du partitionnement initial par un sous-bloc dans le partitionnement modifié et l'étape de décodage comprend le décodage du sous-bloc.
Lorsque la modification est une fusion d'au moins deux sous-blocs voisins, la signalisation de cette fusion dans le train binaire permet au décodeur de mettre à jour le partitionnement initial.
Selon une caractéristique avantageuse de l'invention, lorsque les données codées signalent un découpage d'un sous-bloc du partitionnement courant en au moins deux sous-blocs, l'étape de modification du partitionnement applique le découpage signalé au sous-bloc courant et l'étape de décodage décode les sous-blocs obtenus selon un ordre de parcours prédéterminé.
Lorsque la modification est un découpage, la signalisation du découpage dans le train binaire permet au décodeur de mettre à jour le partitionnement initial.
Selon un aspect de l'invention, le découpage signalisé est un découpage régulier, par exemple de type « quadtree »
Selon une variante avantageuse, les données de signalisation indiquent au décodeur que le mode de codage choisi pour le sous-bloc courant est le mode de codage selon l'invention, c'est-à-dire par application du partitionnement d'une zone de l'image de référence pointée par un vecteur mouvement de base. Le décodeur met alors de nouveau en œuvre les étapes a'), b') et c') pour le sous-bloc courant, ce qui conduit à un découpage irrégulier de ce sous-bloc. Le procédé de décodage qui vient d'être décrit est avantageusement mis en œuvre par un dispositif de décodage d'une image numérique selon Un tel 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, est particulier en ce qu'il comprend les unités suivantes, aptes à être mises en œuvre pour un bloc, dit bloc courant :
- Obtention d'un vecteur mouvement de base entre le bloc courant et une image de référence précédemment décodée, ledit vecteur mouvement pointant sur une zone de l'image de référence de même taille que celle du bloc courant;
- Application au bloc courant du partitionnement en sous-blocs de la zone pointée dans l'image de référence par le vecteur mouvement de base ;
- Parcours des sous-blocs du bloc courant selon un ordre de parcours prédéterminé et décodage des données codées lues dans le train binaire pour les sous-blocs parcourus, ledit décodage comprenant une modification du partitionnement initial, obtenu pour le bloc courant en fonction de données codées représentatives d'une signalisation de la modification du partitionnement et le décodage du partitionnement modifié.
Corrélativement, l'invention concerne un signal portant un train binaire comprenant des données codées représentatives d'une image numérique, ladite image numérique étant divisée en blocs de pixels traités dans un ordre défini. Le signal selon l'invention est particulier en ce que, pour un bloc courant lesdites données codées comprennent un champ représentatif d'un vecteur mouvement de base du bloc courant par rapport à une image de référence, un champ représentatif d'un mode de codage par application du partitionnement de la zone de même taille que le bloc courant, pointée par le vecteur mouvement de base dans l'image de référence, dit partitionnement initial, et des données codées représentatives d'une signalisation de la modification du partitionnement initial.
Corrélativement, l'invention concerne un terminal d'utilisateur. Un tel terminal est particulier en ce qu'il comprend un dispositif de codage d'une image numérique 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 pour la mise en œuvre des étapes d'un procédé de codage d'une image numérique tel que décrit précédemment, lorsque ce programme est exécuté par un processeur. L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la mise en œuvre des étapes d'un procédé de décodage d'une image numérique tel que décrit précédemment, lorsque ce programme est exécuté par un processeur.
Ces programmes peuvent utiliser n'importe quel langage de programmation. Ils peuvent être téléchargés depuis un réseau de communication et/ou enregistrés sur un support lisible par ordinateur.
L'invention se rapporte enfin à des supports d'enregistrement, lisibles par un processeur, intégrés ou non au dispositif de codage d'une image numérique et au dispositif de décodage d'une image numérique selon l'invention, éventuellement amovible, mémorisant respectivement un programme d'ordinateur mettant en œuvre un procédé de codage et un programme d'ordinateur mettant en œuvre un procédé de décodage, tels que décrits précédemment.
6. Liste des figures
D'autres avantages et caractéristiques de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation particulier de l'invention, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : les figures la et lb, déjà décrites, illustrent des exemples de partitionnement de bloc respectivement autorisés et interdits par la norme AVC ; - les figures 2a et 2b, déjà décrites, illustrent des exemples de partitionnement de bloc respectivement autorisés et interdits par la norme HEVC ; les figures 3a, 3b, 3c et 3d, déjà décrites, illustrent respectivement un exemple de texture de bloc présentant une zone homogène et des zones de détails et des étapes de partitionnement du bloc selon la norme HEVC ;
la figure 4 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 ; la figure 5 présente de façon schématique les étapes d'un procédé de codage d'une image numérique selon un premier mode de réalisation de l'invention ; la figure 6 présente de façon schématique les étapes d'un procédé de décodage d'une image numérique selon un deuxième mode de réalisation de l'invention ; et la figure 7 détaille un premier exemple de modification du partitionnement du bloc courant par découpage d'un sous-bloc du partitionnement du bloc courant; la figure 8 détaille un deuxième exemple de codage d'un bloc courant mettant en œuvre une modification du partitionnement du bloc par découpage d'un sous-bloc du partitionnement du bloc courant; la figure 9 détaille un troisième exemple de codage d'un bloc courant mettant en œuvre une modification du partitionnement du bloc par fusion d'un sous-bloc avec un sous-bloc voisin du partitionnement ; les figures 10a et 10b présentent un exemple de fusion de deux sous-blocs d'un partitionnement initial selon un mode de réalisation de l'invention ; les figures lia à lie présentent un exemple de codage d'un bloc courant selon un mode de réalisation de l'invention, lorsque plusieurs opérations successives de fusion et de découpage du partitionnement sont mises en œuvre ; la figure 12 présente de façon schématique les étapes d'un procédé de décodage d'une image numérique à partir de données codées selon un mode de réalisation de l'invention ; la figure 13 présente de façon schématique un exemple de structure matérielle d'un dispositif de codage selon un mode de réalisation de l'invention ; et la figure 14 présente de façon schématique un exemple de structure matérielle d'un dispositif de décodage selon un mode de réalisation de l'invention.
Description d'un mode de réalisation particulier de l'invention
Le principe général de l'invention repose sur l'application au bloc courant du partitionnement de la zone pointée par le vecteur mouvement de base issu de l'estimation de mouvement entre l'image courante et une image de référence.
On considère une vidéo originale constituée d'une suite de M images II, 12, ...IM, avec M entier non nul. 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.
Par ailleurs, on notera ID l'image courante décodée. On notera que, dans un codeur vidéo, l'image ID est (re)construite dans l'encodeur de façon à pouvoir servir pour prédire les autres pixels de la vidéo.
Lors de l'encodage d'une image Im, avec m entier compris entre 1 et M, celle-ci est subdivisée en blocs de taille maximale prédéterminée, par exemple 64x64, appelés CTU (pour « Coding Tree Unit », en anglais) selon la norme HEVC, qui peuvent à leur tour être subdivisés en blocs plus petits, le bloc codé étant appelé CU (pour « Coding Unit », en anglais). 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 présentée en relation avec la Figure 4.
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.
On suppose qu'il existe L partitionnements en blocs CU possibles numérotées de 1 à L, et que le partitionnement utilisé sur le bloc C 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 ». 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 MERGE (bloc reconstruit à partir d'un bloc issu d'une image de référence précédemment décodée pointé par un vecteur dérivé des blocs voisins du bloc courant), 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 m l, ml,..., 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 El, 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 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. Ce bloc quantifié RQ contient NxN coefficients. 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 à N2-l . 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 pour chaque coefficient une information représentative du fait que le coefficient est non nul. Ensuite, pour chaque coefficient non nul, une ou plusieurs informations relatives à l'amplitude sont codées. On obtient les amplitudes codées CA. En général, les signes des coefficients sont simplement codés par un bit 0 ou 1.
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 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.
En relation avec la Figure 5, on présente maintenant les étapes du procédé de codage selon un premier mode de réalisation de l'invention.
En entrée, on considère en particulier un bloc courant b, de type CU d'une image suivante, par exemple Ii avec i entier supérieur ou égal à 2. On se place dans un mode de prédiction de type Inter, selon lequel un bloc de prédiction Pr est obtenu par compensation de mouvement par rapport à une image de référence IR précédemment codée puis décodée.
Le bloc courant b va être codé selon un mode de prédiction INTER particulier, propre à l'invention. Bien sûr, ce mode peut être mis en compétition avec d'autres modes de prédiction INTER ou INTRA connus de l'homme de métier et spécifiés par une norme de codage telle que HEVC ou une norme future.
On notera qu'au moins la première image de la séquence d'images à coder a été codée de manière classique.
Au cours d'une étape a) d'estimation du mouvement du bloc courant b par rapport à l'image de référence IR, on détermine un vecteur mouvement de base MVb qui pointe sur une zone de l'image de référence, de la taille du bloc courant b, aussi appelée bloc de prédiction Pr. On note que cette zone ne correspond pas nécessairement à un bloc précédemment codé dans l'image de référence IR, mais qu'elle peut se trouver à cheval sur plusieurs blocs de cette image. Autrement dit, le bloc de prédiction Pr peut être vu
comme une composition de morceaux adjacents des blocs de l'image de référence qu'il recouvre.
On notera que selon l'invention, la phase d'estimation de mouvement initiale ne prend en compte que la distorsion pixel à pixel, et en aucun cas des notions de coût de codage, comme ce qui est fait habituellement, par exemple dans un schéma de codage de type HEVC. En effet, l'objectif de cette estimation de mouvement est de trouver la meilleure zone de prédiction au sens de la distorsion pixel à pixel, en vue d'appliquer le partitionnement de cette zone au bloc courant. Le coût de codage est pris en compte ultérieurement lors de la compétition entre les différents modes de prédiction, en particulier celui de l'invention et ceux spécifiés par une norme de type HEVC par exemple.
Au cours d'une étape b), on obtient le partitionnement du bloc de prédiction Pr dans l'image IR. Les partitionnements des blocs de l'image de référence IR ont été à cet effet stockés dans une mémoire et le partitionnement du bloc de prédiction Pr est reconstruit à partir des informations de partitionnement stockées pour les blocs de l'image IR au moins partiellement recouverts par le bloc de prédiction Pr. On comprend que le partitionnement lP ainsi obtenu ne satisfait pas forcément les règles de partitionnement généralement imposées par les spécifications d'une norme telle que HEVC. En particulier, il n'est pas nécessairement régulier. Un exemple de partitionnement irrégulier obtenu par l'invention est illustré par la Figure 10a.
On applique ensuite le partitionnement IP obtenu au bloc courant b.
Au cours d'une étape c), les sous-blocs issus du partitionnement IP appliqué au bloc courant b sont parcourus selon un ordre prédéterminé et traités comme décrit précédemment en relation avec la Figure 4. Pour un sous-bloc de b, une prédiction Pr est obtenue, un résidu R est calculé à partir de cette prédiction Pr, puis le résidu est transformé, quantifié et enfin codé (RC).
On notera que différents ordres de parcours des sous-blocs d'un partitionnement sont possibles, parmi lesquels : de gauche à droite, en zig-zag ; - Par ordre de taille croissante ou décroissante ;
Deux ordres de parcours différents aboutissent à des partitionnements différents. Plusieurs ordres de parcours peuvent être en compétition. Dans ce cas, l'ordre de parcours choisi sera signalé dans le train binaire.
Selon un aspect de l'invention, le vecteur mouvement initial MVb est transmis dans le train binaire.
De façon alternative, il n'est pas transmis, mais il est dérivé de ses voisins :
O D'une manière reproductible au décodeur ; ou
O Par un index signalant un choix parmi des candidats en compétition. Dans ce premier mode de réalisation de l'invention, le partitionnement appliqué au bloc courant n'a pas à être signalé puisqu'il peut être déduit de celui du bloc de prédiction de l'image de référence.
Avantageusement, les données codées obtenues sont mises en compétition avec celles issues d'un schéma de codage classique, par exemple selon la norme HEVC. Un critère débit-distorsion est pris en compte pour comparer les différents modes de codage.
Les données codées issues du partitionnement qui a gagné la compétition sont insérées dans le train binaire TB ou dans un fichier FC.
En relation avec la Figure 6, on détaille maintenant l'étape c) de codage des sous- blocs du bloc courant b selon le partitionnement IP selon un deuxième mode de réalisation de l'invention.
Les sous-blocs SB du bloc courant b sont parcourus en cl, selon un ordre de parcours prédéterminés.
Deux cas sont possibles : - Dans le premier cas, déjà décrit en relation avec la figure 5, le sous-bloc SB est traité de façon classique en c2 ;
Dans le deuxième cas, le sous-bloc est soumis en c3 à une modification de partitionnement. Cette modification peut être soit un découpage du sous-bloc en sous-blocs de tailles inférieures ou une fusion du sous-bloc avec un sous- bloc voisin déjà traité.
Le ou les nouveaux sous-blocs obtenus sont ensuite codés en c4.
Dans ce deuxième mode de réalisation de l'invention, les modifications du partitionnement initial IPi appliquées au bloc courant b doivent être signalées dans le train binaire TB puisqu'elles ne peuvent pas être déduites de celles du bloc de prédiction de l'image de référence. Avantageusement, elles sont signalées par différence par rapport au partitionnement initial. On comprend qu'une signalisation possible pourrait être d'indiquer d'abord le type de modification appliqué, découpage ou fusion, puis les différences avec le partitionnement initial.
En c5, les données codées obtenues dans le premier et le deuxième cas sont mises en compétition et évaluées selon un critère de débit distorsion. Est retenu le partitionnement qui réalise la meilleure performance selon ce critère.
En relation avec la Figure 7, on détaille maintenant les sous-étapes de modification par découpage et de codage du partitionnement du sous-bloc courant SB selon un premier exemple de réalisation de l'invention. Par exemple, le découpage est réalisé en c31 conformément aux spécifications de la norme HEVC, selon un mode « quadtree ». Un partitionnement IP(SB) est obtenu dont les sous-blocs sont codés en d41 comme précédemment décrit.
Selon un deuxième exemple de découpage d'un sous-bloc présenté en relation avec la Figure 8, le découpage du sous-bloc courant SB réalisé en c'31 met en œuvre le principe de l'invention, c'est-à-dire qu'il met en œuvre les étapes a), b) du procédé de codage selon l'invention. En a) une estimation de mouvement est réalisée par rapport à l'image de référence IR, un vecteur mouvement de base MVb' est obtenu, en b) le partitionnement du bloc de prédiction pointé par le vecteur mouvement MVb' est obtenu puis appliqué au sous-bloc courant SB.
On comprend qu'il s'agit d'une mise en œuvre récursive de l'invention.
Différentes manières de signaler le découpage d'un sous-bloc sont possibles : étant donné un ordre de parcours prédéterminé des sous-blocs du partitionnement, on peut citer à titre d'exemple :
signaler pour chaque sous-bloc d'une partition un 0 ou un 1 pour indiquer si le sous-bloc courant est découpé par exemple selon un mode « quadtree » et pour chacun de sous-blocs obtenus, s'il est redécoupé ;
si le sous-bloc est redécoupé, signaler la manière dont le nouveau partitionnement est obtenu, en concordance avec la méthode de découpage retenue. Par exemple, si le partitionnement est découpé en utilisant une méthode de type « quadtree » comme c'est la cas selon la norme HEVC, la signalisation associée suit la recommandation HEVC et en particulier la section 7.3.8.4 intitulée « Coding quadtree syntax ».
En relation avec la Figure 9, on détaille maintenant les sous-étapes de modification et de codage du partitionnement du bloc courant b, lorsqu'une fusion du sous-bloc courant avec un sous-bloc voisin déjà codé est mise en œuvre.
Les sous-blocs du bloc courant sont codés selon un ordre de parcours prédéterminé.
En relation avec la figure 10a, on considère un sous-bloc SB qui vient d'être codé. L'étape c32 réalise une fusion du sous-bloc SB avec un voisin déjà codé SBV selon Tordre de parcours. La figure 10b présente le sous-bloc agrandi SBf obtenu. Ce sous-bloc agrandi SBf est codé en c42. Au cours de cette étape, la prédiction du sous bloc fusionné SBf peut être mise en œuvre selon un mode de prédiction de type Inter, Merge ou Intra, comme décrit précédemment. Dans le cas du mode Inter, on attribue un vecteur mouvement MVf au sous-bloc agrandi, soit en mettant en œuvre une nouvelle étape d'estimation de mouvement qui fournit un nouveau vecteur mouvement qu'il faudra transmettre au décodeur, soit en réutilisant un des vecteurs mouvements de l'un des deux sous-blocs fusionnés. Dans ce cas le vecteur mouvement réutilisé pourra être signalé avec un index dans le train binaire.
Différentes manières de signaler la fusion sont possibles : étant donné un ordre de parcours prédéterminé des sous-blocs du partitionnement, on peut à titre d'exemple :
signaler pour chaque sous-bloc d'un partitionnement un 0 ou un 1 pour indiquer si le sous-bloc courant est fusionné avec un sous-bloc voisin selon
Tordre de parcours ; ou
ne signaler que le numéro du sous-bloc courant, suivi de la distance (dans l'ordre de parcours) au sous-bloc voisin avec lequel il fusionne (par ex : 0 pour le premier voisin selon l'ordre de parcours).
A l'issue de cette étape de codage, le coût RD de la fusion est calculé en c52. Avantageusement, ce calcul prend en compte le coût de codage du résidu du sous-bloc agrandi, le coût de codage de son vecteur mouvement MVf et le coût de la signalisation du la fusion des deux sous-blocs voisins.
Le coût global calculé est comparé en c52 à la somme des coûts des deux sous- blocs SB et SBV codés séparément et une décision d'adopter la fusion est prise en c62, si ce coût global est inférieur à la somme des coûts de codage des sous-blocs séparés. Sinon, la fusion n'est pas retenue.
Ensuite le codeur peut tester la fusion du sous-bloc courant avec un autre sous- bloc voisin déjà codé.
On comprend que fusionner permet d'économiser un vecteur mouvement, mais rend la prédiction moins fine et la signalisation du partitionnement plus coûteuse. La fusion est donc un choix du codeur. Par exemple, le codeur peut systématiquement tenter la fusion d'un sous-bloc d'un partitionnement avec l'ensemble de ses sous-blocs voisins et ne garder que les fusions judicieuses, c'est-à-dire celles qui contribuent à réduire globalement à réduire le coût de codage. Le train binaire TB produit par le procédé de codage selon l'invention qui vient d'être décrit est donc particulier en ce qu'il comprend, pour le codage d'un bloc courant, des informations de signalisation relatives :
- Au fait de choisir pour le bloc courant, le mode de codage selon l'invention, à savoir le fait d'appliquer le partitionnement du bloc de prédiction au bloc courant ;
- A la modification éventuelle du partitionnement initial, par découpage ou fusion; Par exemple, une suite binaire peut indiquer qu'il y a eu modification du partitionnement initial (1), ou non (0). En cas de modification, une suite binaire peut indiquer s'il s'agit d'un découpage (0) ou d'une fusion (1). Dans les deux cas, une suite binaire décrit alors le découpage et la fusion. Par exemple, le découpage est signalé par une suite binaire en concordance avec la méthode de découpage retenue. Par exemple, si la partition est découpée
en utilisant une méthode « quadtree » façon HEVC, la signalisation du « quadtree » associée suit la recommandation HEVC et en particulier la section 7.3.8.4 « Coding quadtree syntax ». Une fusion est signalée par une suite binaire qui décrit si le bloc courant fusionne ( 1) ou non (0) avec son voisin, selon un ordre prédéfini. L'ensemble de ces suites binaires peuvent être codées à l'aide d'un codeur entropique de type Huffman, ou de type arithmétique avec utilisation de contextes spécifiques afin de réduire le coût de signalisation associé ;
- A la réutilisation éventuelle du vecteur mouvement estimé pour le sous-bloc courant ou le sous-bloc voisin lors d'une modification du partitionnement initial .
En relation avec les Figures lia à lie, on présente un exemple de réalisation de l'invention selon lequel le partitionnement initial d'un bloc courant b, est modifié à plusieurs reprises, certains sous-blocs étant fusionnés, d'autres étant divisés. La figure lia illustre le fait que le partitionnement correspondant au bloc de prédiction n'est pas forcément régulier, du fait qu'il correspond à des morceaux de partitionnement de plusieurs blocs de l'image de référence. Les figures 11b, 11c et lld illustrent des fusions successives. La figure lie illustre un exemple de découpage d'un sous-bloc . On notera que dans cet exemple, le nombre de vecteurs mouvements à transmettre est de 21 pour un nombre total de 28 selon la norme HEVC. Bien sûr, si trop de fusions sont mises en œuvre, il en résulte un coût de signalisation accru. C'est donc le codeur qui connaît le coût de codage des modifications apportées au partitionnement initial et réalise le meilleur compromis débit distorsion.
Le train binaire TB produit par le procédé de codage selon l'invention est transmis à un décodeur. Ce décodeur met en œuvre un procédé de décodage selon l'invention qui va maintenant être décrit en relation avec la Figure 12.
On suppose que le décodeur lit et analyse de façon connue les données codées DC reçues dans le train binaire. On considère en particulier les données codées relatives à un bloc courant d'une image numérique Im. Selon l'invention, le décodeur extrait en Tl une information de signalisation relative au mode de partitionnement MPA mis en œuvre pour coder le bloc courant b'. Il
s'agit par exemple d'un partitionnement classique, de type « Quadtree » ou bien du mode de partitionnement selon l'invention.
Dans le cas où le mode de partitionnement MPA utilisé pour le bloc courant est celui de l'invention, le décodeur obtient en T2 le vecteur mouvement de base MVb' à utiliser pour déterminer le bloc de prédiction Pr' du bloc courant dans l'image de référence IR'. Selon le mode de réalisation mis en œuvre, il peut obtenir soit une information de signalisation qui indique que le vecteur mouvement MVb' est déduit de celui d'un bloc voisin déjà codé soit des données représentatives du vecteur mouvement proprement dit. Une fois le vecteur mouvement MVb' obtenu, le décodeur met en œuvre une étape
T3 d'obtention d'un partitionnement initial IPi du bloc courant. Ce partitionnement est celui du bloc de prédiction Pr', c'est-à-dire de la zone Zb' pointée par le vecteur mouvement MVb' dans l'image de référence IR déjà décodée. Le décodeur calcule donc les coordonnées de cette zone dans l'image de référence et va chercher en mémoire le partitionnement des différents blocs de l'image de référence qui contribuent à cette zone.
En T4, il applique ce partitionnement au bloc courant. Il s'agit de son partitionnement initial. Il commence ensuite en T5 à parcourir les sous-blocs définis par ce partitionnement initial selon un ordre de parcours prédéterminé qu'il partage avec l'encodeur. Par exemple, cet ordre de parcours est déterminé au préalable. Pour un sous-bloc courant SB', il extrait du train binaire une éventuelle information de signalisation relative à une modification du partitionnement initial du bloc au niveau de ce sous-bloc SB'. S'il n'extrait aucune information, le sous-bloc n'a pas été modifié. Dans ce cas, il le décode à partir des données codées reçues dans le train binaire. De façon alternative, il extrait en T5 des informations de signalisation relatives à une modification du partitionnement au niveau du sous-bloc courant.
Par exemple, ces informations comprennent d'abord une information représentative d'un type de modification appliquée au partitionnement initial, découpage ou fusion, suivi d'informations représentatives d'une différence entre le partitionnement modifié et le partitionnement initial.
Selon un premier cas, il s'agit d'un découpage du sous-bloc courant. Comme précédemment évoqué, ce découpage peut s'appuyer sur un partitionnement classique de type « Quadtree » ou sur le mode de partitionnement selon l'invention.
S'il s'agit d'un mode de partitionnement classique, le décodeur extrait du train binaire les informations de signalisation relatives à ce partitionnement et au mode de prédiction utilisé pour chacun des sous-blocs obtenus. Il décode de façon classique les sous-blocs obtenus.
S'il s'agit du mode de partitionnement selon l'invention, le décodeur répète les étapes déjà décrites, d'extraction du train binaire des informations de signalisation relatives au vecteur mouvement (réutilisé ou codé) et d'obtention du vecteur mouvement, d'obtention du partitionnement du sous-bloc de prédiction de l'image de référence, d'application de ce partitionnement au sous-bloc courant, puis de décodage des sous-blocs du sous-bloc courant redécoupé.
Selon un deuxième cas, la modification apportée au partitionnement initial est une fusion du sous-bloc courant avec un sous-bloc voisin déjà décodé. Le décodeur extrait du train binaire des informations de signalisation permettant d'identifier le sous-bloc voisin et il met à jour le partitionnement du bloc b' en remplaçant les sous-blocs fusionnés par le sous-bloc agrandi. On notera qu'il peut y avoir plus de deux sous-blocs voisins fusionnés en un seul sous-bloc agrandi. II lit ensuite dans le train binaire le mode de prédiction mis en œuvre pour le sous-bloc agrandi. Dans le cas d'un mode de prédiction Inter, il obtient le vecteur mouvement de base à appliquer au sous-bloc agrandi pour le compenser en mouvement par rapport à l'image de référence. Puis il décode le sous-bloc agrandi à partir des données codées extraites du train binaire. Une fois que tous les résidus des sous-blocs du bloc courant b' ont été décodés, le procédé de décodage reconstruit en T6 le résidu quantifié RQ' du bloc b' et le déquantifie. Cette dernière opération est réalisée par des moyens adaptés à la quantification utilisée lors du codage, par exemple une déquantification scalaire ou vectorielle...)- Ensuite il applique une transformation inverse du bloc courant déquantifié et reconstruit le bloc b' décodé par ajout du résidu à la prédiction Pr' du bloc courant b'.
Le bloc b' reconstruit est intégré à l'image en cours de décodage.
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 « unité », 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'unité concerné(e).
En relation avec la figure 13, 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 les Figures 4 à 9.
Par exemple, le dispositif 100 comprend une unité de traitement 110, équipée d'un processeur μ ΐ, et pilotée par un programme d'ordinateur Pg l 120, stocké dans une mémoire 130 et mettant en œuvre le procédé de codage 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é GET MVb d'obtention d'un vecteur mouvement de base pour le bloc courant par rapport à une image de référence, une unité GET PART d'obtention d'un partitionnement du bloc de prédiction PU pointé par le vecteur mouvement de base estimé, une unité MAP PART d'application du partitionnement obtenu au bloc courant et une unité COD de codage des sous-blocs du bloc courant définis par le partitionnement appliqué.
Avantageusement, le dispositif 100 comprend en outre une unité MOD IP de modification du partitionnement obtenu pour le bloc (b') et une unité VALID MOD de validation de la modification.
Ces unités sont pilotées par le processeur μΐ de l'unité de traitement 110.
De façon avantageuse, un tel dispositif 100 peut être intégré à un terminal d'utilisateur TU . Le dispositif 100 est alors agencé pour coopérer au moins un module E/R d'émission/réception de données du terminal d'utilisateur, par l'intermédiaire duquel le train binaire TB ou le fichier compressé FC est transmis dans un réseau de télécommunications, par exemple un réseau filaire ou un réseau hertzien .
En relation avec la figure 13, on présente maintenant un exemple de structure simplifiée d'un dispositif 200 de décodage d'une image numérique selon l'invention . Le dispositif 200 met en œuvre le procédé de décodage selon l'invention qui vient d'être décrit en relation avec la Figure 11.
Par exemple, le dispositif 200 comprend une unité de traitement 210, équipée d'un processeur μ2, et pilotée par un programme d'ordinateur Pg2 220, stocké dans une mémoire 230 et mettant en œuvre le procédé de décodage selon l'invention .
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é GET MVb' d'obtention d'un vecteur mouvement de base MVb' entre le bloc courant et une image de référence précédemment décodée, une unité GET PART d'obtention d'un partitionnement de la zone pointée dans l'image de référence (b'), une unité MAP PART d'application du partitionnement obtenu au bloc courant (b) et une unité DEC de parcours des sous-blocs du bloc courant (b) selon un ordre de parcours prédéterminé et de décodage des données codées lues dans le train binaire pour les sous-blocs parcourus.
Avantageusement, le dispositif 200 comprend en outre une unité MOD IP de modification du partitionnement obtenu pour le bloc (b') à partir de données codées lues dans le train binaire TB.
Ces unités sont pilotées par le processeur μ2 de l'unité de traitement 210.
De façon avantageuse, un tel 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, un terminal d'utilisateur TU, 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.