Brevet FR3068557A1 — publié le 20190104

PROCÉDÉ DE CODAGE ET DÉCODAGE D'IMAGES, DISPOSITIF DE CODAGE ET DÉCODAGE ET PROGRAMMES D'ORDINATEUR CORRESPONDANTS Domaine de l'invention La présente invention se rapporte de manière générale au domaine du traitement d'images, et plus précisément au codage et au décodage de paramètres d'images numériques, que ces images numériques soient fixes ou fassent partie d'une séquence d'images numériques. Le codage/décodage de tels paramètres d'image 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), - des images obtenues par projection d'une vidéo 360°, - etc... La présente invention s'applique de manière similaire au codage/décodage de paramètres 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 (abréviation anglaise de « Advanced Vidéo Coding ») et HEVC (abréviation anglaise de « High Efficiency Video Coding») et leurs extensions (MVC, 3D-AVC, MV- HEVC, 3D-HEVC, etc), et au décodage correspondant. Arrière-plan de l'invention Les codeurs vidéo actuels (MPEG, H.264, HEVC, ...) utilisent une représentation par blocs de la séquence vidéo. Les images sont découpées en blocs, lesquels sont susceptibles d'être redécoupés, par exemple de façon récursive comme dans la norme HEVC. 2 Pour un bloc courant à coder, les paramètres d'image associés à ce bloc sont codés sous forme de bits à l'aide d'une méthode de codage adaptée mise en oeuvre par un codeur, tel que par exemple un codeur entropique dont le but est de coder ces paramètres sans perte. 5 De tels paramètres sont par exemple : - les coefficients résiduels de prédiction des pixels du bloc courant, - le mode de prédiction du bloc courant (prédiction Infra, prédiction Inter, prédiction par défaut réalisant une prédiction pour laquelle aucune 10 information n'est transmise au décodeur (« en anglais « skip »)), - des informations précisant le type de prédiction du bloc courant (orientation, image de référence, ...), - le type de découpage du bloc courant, - les informations de mouvement du bloc courant si nécessaire, 15 - etc. Les bits obtenus après codage entropique sont inscrits dans un signal de données qui est destiné à être transmis au décodeur. Une fois que le signal de données codées a été reçu par le décodeur, le décodage est fait image par image, et pour chaque image, bloc par bloc. Pour 20 chaque bloc, les bits représentatifs des paramètres d'image associés au bloc sont lus, puis décodés à l'aide d'une méthode de décodage mise en oeuvre par un décodeur. Pour chaque type ou format d'image considéré, un codage spécifique est implémenté. Ainsi par exemple, les codeurs/décodeurs AVC et HEVC sont 25 adaptés pour coder/décoder des images 2D issues d'une même caméra et se succédant temporellement. Un codage du type précité utilise généralement, pour une image courante considérée, une prédiction du bloc courant. Il existe différents modes de prédiction, tels que par exemple: 30 - le mode de prédiction Infra qui consiste à prédire les pixels du bloc courant par rapport à des pixels voisins de ceux du bloc courant, ces pixels voisins ayant déjà été codés puis décodés et pouvant être situés dans 3 différentes directions prédéterminées, par exemple trente-cinq dans le standard HEVC, - le mode de prédiction Inter qui consiste à prédire certaines informations de codage associées au bloc courant, telles que par exemple : 5 - le vecteur de mouvement temporel du bloc courant par rapport à un vecteur de mouvement temporel associé à un bloc de pixels de référence, - les pixels du bloc courant par rapport aux pixels d'un bloc de pixels de référence pointé par le vecteur de 10 mouvement temporel et situé dans une autre image que l'image courante à laquelle appartient le bloc courant. - le mode de prédiction "Intra Block Copy" (IBC), tel que décrit dans le document : SIP(2015), vol.4, page 1 à 12, 2015, Industrial technology 15 advances,"Overview of HEVC extensions on screen content coding" de Shan Liu, Xiaozhong Xu, Shawmin Lei et Kevin Jou, qui permet de prédire le bloc courant par un bloc appartenant à la même image, dans une partie précédemment codée et décodée de cette dernière. Ces modes de prédiction sont mis en compétition et le mode de 20 prédiction qui optimise un critère de performance de codage, tel que par exemple le critère débit-distorsion, est sélectionné pour la prédiction de chaque bloc de l'image courante. Un inconvénient du codage prédictif précité est que la disponibilité du mode de prédiction IBC à l'encodeur comme au décodeur augmente les 25 ressources en calculs. Par ailleurs, à l'encodeur, il est nécessaire de coder un élément de syntaxe spécifique au mode de prédiction IBC et de l'inscrire dans le signal à transmettre au décodeur, ce qui augmente le coût de signalisation. Enfin, le mode de prédiction IBC implique la mémorisation de toutes les données d'image à l'encodeur et au décodeur, de manière à pourvoir être 30 utilisées pour le codage et le décodage du bloc courant. 4 L'invention vise donc un codeur/décodeur qui propose d'appliquer à un instant courant deux modes de prédiction différents à une image courante issue d'un contenu vidéo d'un type ou format donné, tout en permettant d'optimiser : - les performances de codage/décodage de l'image courante, 5 - la complexité du codage/décodage de l'image courante, - la réduction des ressources mémoire à l'encodeur et au décodeur. Objet et résumé de l'invention 10 Un des buts de l'invention est de remédier à des inconvénients de l'état de la technique précité. A cet effet, un objet de la présente invention concerne un procédé de codage d'une image découpée en blocs, ladite image contenant deux zones distinctes. 15 Un tel procédé de codage est remarquable en ce qu'il met en oeuvre ce qui suit : - uniquement dans le cas où le bloc courant appartient à l'une des zones de l'image : - coder le bloc courant à l'aide d'une une prédiction, le bloc 20 courant étant prédit en utilisant un bloc préalablement codé puis décodé, situé dans l'autre zone de l'image, les blocs de l'autre zone ayant été préalablement codés puis décodés, - coder une information qui indique l'application de la prédiction utilisée, 25 - pour tout bloc décodé qui appartient à l'autre zone de l'image, mémoriser les données de bloc décodé. Une telle disposition permet de réduire la complexité du codage puisque un mode de prédiction particulier n'est pas utilisé pour l'autre zone de l'image et ne sera donc pas mis en compétition par rapport à d'autres modes de prédiction 30 lors du codage d'un bloc situé dans l'autre zone. Une telle disposition permet en outre de réduire les coûts de mémorisation des données de codage, puisque les données des blocs codés 5 puis décodés de l'image ne sont mémorisées que pour une des deux zones de l'image. Selon un mode de réalisation particulier, le procédé de codage comprend le codage d'au moins une information de localisation du bloc préalablement 5 codé puis décodé. Une telle information de localisation peut être un vecteur de mouvement ou un ensemble de coordonnées. Ladite information de localisation ainsi codée est transmise au décodeur, ce qui lui permet, lors du décodage d'un bloc courant appartenant à l'une des zones de l'image courante, de localiser le bloc décodé situé dans l'autre zone 10 de l'image courante. Selon un mode de réalisation particulier, est mis en oeuvre le codage d'une information d'identification de chacune des deux zones de l'image. Une telle disposition permet de transmettre au décodeur la position de chacune des zones l'une par rapport à l'autre. 15 Corrélativement, l'invention concerne un dispositif de codage d'une image découpée en blocs, ladite image contenant deux zones distinctes, comprenant un circuit de traitement qui est agencé pour : - uniquement dans le cas où le bloc courant appartient à l'une des zones de l'image : 20 - coder le bloc courant à l'aide d'une prédiction, le bloc courant étant prédit en utilisant un bloc préalablement codé puis décodé, situé dans l'autre zone de l'image, les blocs de l'autre zone ayant été préalablement codés puis décodés, - coder une information qui indique l'application de la prédiction 25 utilisée, - pour tout bloc décodé qui appartient à l'autre zone de l'image, mémoriser les données de bloc décodé. De façon correspondante, l'invention concerne aussi un procédé de décodage d'un signal de données représentatif d'une image découpée en blocs 30 qui a été codée, ladite au moins une image contenant deux zones distinctes. Un tel procédé de décodage est remarquable en ce qu'il met en oeuvre, ce qui suit : 6 - uniquement dans le cas où le bloc courant appartient à l'une des zones de l'image : - lire dans le signal de données une information qui indique le décodage du bloc courant à l'aide d'une prédiction, le bloc 5 courant étant destiné à être prédit en utilisant un bloc préalablement décodé, situé dans l'autre zone de l'image, les blocs de ladite autre zone ayant été préalablement décodés, - décoder le bloc courant en utilisant ladite prédiction, - pour tout bloc décodé qui appartient à l'autre desdites zones de l'image, 10 mémoriser les données de bloc décodé. Selon un mode de réalisation particulier, le procédé de décodage comprend la lecture, dans le signal de données, d'au moins une information de localisation du bloc préalablement codé puis décodé. Selon un mode de réalisation particulier, chacune des zones de l'image 15 est identifiée par lecture d'une information d'identification correspondante lue dans le signal de données. Corrélativement, l'invention concerne un dispositif de décodage d'un signal de données représentatif d'une image découpée en blocs qui a été codée, ladite image contenant deux zones distinctes, comprenant un circuit de 20 traitement qui est agencé pour : - uniquement dans le cas où le bloc courant appartient à l'une des zones de l'image : - lire dans le signal de données une information qui indique le décodage du bloc courant à l'aide d'une prédiction, le bloc 25 courant étant destiné à être prédit en utilisant un bloc préalablement décodé, situé dans l'autre zone de l'image, les blocs de ladite autre zone ayant été préalablement décodés, - décoder le bloc courant en utilisant ladite prédiction, - pour tout bloc décodé qui appartient à l'autre desdites zones de l'image, 30 mémoriser les données de bloc décodé. L'invention concerne encore un programme d'ordinateur comportant des instructions pour mettre en oeuvre l'un des procédés de codage et de décodage selon l'invention, lorsqu'il est exécuté sur un ordinateur. 7 Un tel programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. 5 Encore un autre objet de l'invention vise aussi un support d'enregistrement lisible par un ordinateur, et comportant des instructions de programme d'ordinateur tel que mentionné ci-dessus. Le support d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un 10 moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, un moyen d'enregistrement numérique, par exemple une clé USB ou un disque dur. D'autre part, un tel support d'enregistrement peut être un support 15 transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, un tel support d'enregistrement peut être un circuit 20 intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter le procédé en question ou pour être utilisé dans l'exécution de ce dernier. Brève description des dessins 25 D'autres caractéristiques et avantages apparaîtront à la lecture de modes de réalisation préférés décrits en référence aux figures dans lesquelles: - la figure 1 représente le déroulement du procédé de codage selon un mode de réalisation de l'invention, - la figure 2 représente un dispositif de codage selon un mode de 30 réalisation de l'invention, - les figures 3A à 3C représentent chacune des exemples de zones distinctes dans l'image courante, 8 - la figure 4 représente le déroulement du procédé de décodage selon un mode de réalisation de l'invention, - la figure 5 représente un dispositif de décodage selon un mode de réalisation de l'invention. 5 Description détaillée de la partie codage Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de codage selon l'invention est utilisé pour coder une image ou une séquence d'images selon un flux binaire proche de celui qu'on obtient 10 par un codage mis en oeuvre dans un codeur conforme à l'une quelconque des normes de codage vidéo actuelles ou à venir. Dans ce mode de réalisation, le procédé de codage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un tel codeur. Le procédé de codage selon l'invention est représenté sous la 15 forme d'un algorithme comportant des opérations Cl à C100a) ou Cl à C101b) telles que représentées à la figure 1. Selon le mode de réalisation de l'invention, le procédé de codage selon l'invention est implémenté dans un dispositif de codage ou codeur CO représenté à la figure 2. 20 Comme illustré en figure 2, le codeur CO comprend une mémoire MEM C comprenant une mémoire tampon MT_C, un processeur PROC_C piloté par un programme d'ordinateur PG_C qui met en oeuvre le procédé de codage selon l'invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_C sont par exemple chargées dans une mémoire 25 RAM, notée MR_C, avant d'être exécutées par le processeur PROC_C. Le procédé de codage représenté sur la figure 1 s'applique à toute image courante 1Ci fixe ou bien faisant partie d'une séquence de L images 1C1, 1Ci,... , 1CL (1L) à coder. L'image courante 1Ci est issue d'au moins une séquence vidéo 30 comprenant, à titre d'exemples non exhaustifs : - des images issues d'une même caméra et se succédant temporellement (codage/décodage de type 2D), 9 - 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, c'est-à-dire représentatives d'une même scène (codage/décodage de type 3D), 5 - des images obtenues par projection d'une vidéo 3600 , - des images obtenues par projection d'une vidéo stéréo et comportant chacune deux vues représentatives d'une même scène, qui sont destinées à être regardées respectivement par l'oeil gauche et l'oeil droit de l'utilisateur, 10 - des images non naturelles du type « screen Content », telles que par exemple des images obtenues par capture vidéo d'écran, - etc... En référence à la figure 1, il est procédé en Cl, de façon connue en soi, au découpage d'une image courante ICi en une pluralité de blocs B1, B2, ... , 15 Bu,..., Bs (1nKS). Le partitionnement est mis en oeuvre par un dispositif de partitionnement MP_C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C. Il convient de noter qu'au sens de l'invention, le terme « bloc » signifie unité de codage (de l'anglais « coding unit »). Cette dernière terminologie est 20 notamment utilisée dans la norme HEVC « ISO/IEC/23008-2 Recommandation ITU-T H.265 High Efficiency Video Coding (HEVC) ». En particulier, une telle unité de codage regroupe des ensembles de pixels de forme rectangulaire ou carrée, encore appelés blocs, macroblocs, ou bien des ensembles de pixels présentant d'autres formes géométriques. 25 Lesdits blocs B1, B2, ..., Bu,..., Bs sont destinés à être codés selon un ordre de parcours prédéterminé, qui est par exemple du type lexicographique. Cela signifie que les blocs sont codés les uns après les autres, de la gauche vers la droite. D'autres types de parcours sont bien sûr possibles. Ainsi, il est possible 30 de découper l'image ICi en plusieurs sous-images appelées slices et d'appliquer indépendamment un découpage de ce type sur chaque sous-image. Il est également possible de coder non pas une succession de lignes, comme 10 expliqué ci-dessus, mais une succession de colonnes. Il est également possible de parcourir les lignes ou colonnes dans un sens ou dans l'autre Selon un exemple, les blocs B1, B2, ... , Bu,..., Bs ont une forme carrée et contiennent tous K pixels, avec i REVENDICATIONS1. Procédé de codage d'une image (ICj) découpée en blocs, ladite image contenant deux zones (Z1, Z2) distinctes, ledit procédé de codage étant caractérisé en ce qu'il met en oeuvre ce qui suit : - uniquement dans le cas où le bloc courant (Bu) appartient à l'une (Z1) desdites zones de l'image : - coder (C6a)-C8a)) le bloc courant à l'aide d'une prédiction, le bloc courant étant prédit en utilisant un bloc préalablement codé puis décodé, situé dans l'autre zone de l'image, les blocs de ladite autre zone ayant été préalablement codés puis décodés, - coder (C100a)) une information (ibc_flag) qui indique l'application de la prédiction utilisée, - pour tout bloc décodé qui appartient à l'autre (Z2) desdites zones de l'image, mémoriser (C101b)) les données de bloc décodé. 2. Procédé de codage selon la revendication 1, comprenant le codage d'au moins une information de localisation du bloc préalablement codé puis décodé. 3. Procédé de codage selon la revendication 1 ou la revendication 2, mettant en oeuvre le codage (C3) d'une information (fp_type) d'identification de chacune des deux zones de l'image. 4. Dispositif de codage (CO) d'une image (ICj) découpée en blocs, ladite image contenant deux zones (Z1, Z2) distinctes, comprenant un circuit de traitement (CT_C) qui est agencé pour : - uniquement dans le cas où le bloc courant (Bu) appartient à l'une (Z1) desdites zones de l'image : - coder le bloc courant à l'aide d'une prédiction, le bloc courant étant prédit en utilisant un bloc préalablement codé puis 26 décodé, situé dans l'autre zone de l'image, les blocs de ladite autre zone ayant été préalablement codés puis décodés, - coder une information qui indique l'application de la prédiction utilisée, 5 - pour tout bloc décodé qui appartient à l'autre (Z2) desdites zones de l'image, mémoriser les données de bloc décodé. 5. Programme d'ordinateur comportant des instructions de code de programme pour l'exécution des étapes du procédé de codage selon l'une quelconque des 10 revendications 1 à 3, lorsque ledit programme est exécuté sur un ordinateur. 6. 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é de codage selon l'une quelconque des 15 revendications 1 à 3, lorsque ledit programme est exécuté par un ordinateur. 7. Procédé de décodage d'un signal de données (F) représentatif d'une image (ICi) découpée en blocs qui a été codée, ladite au moins une image contenant deux zones distinctes, 20 ledit procédé de décodage étant caractérisé en ce qu'il met en oeuvre, ce qui suit : - uniquement dans le cas où le bloc courant (Bu) appartient à l'une (Z1) desdites zones de l'image : - lire (D7a) dans le signal de données une information qui 25 indique le décodage du bloc courant à l'aide d'une prédiction, le bloc courant étant destiné à être prédit en utilisant un bloc préalablement décodé, situé dans l'autre zone (Z2) de l'image, les blocs de ladite autre zone ayant été préalablement décodés, 30 - décoder (D8a)-D10a)) le bloc courant en utilisant ladite prédiction, - pour tout bloc décodé qui appartient à l'autre (Z2) desdites zones de l'image, mémoriser (D100b)) les données de bloc décodé. 27 8. procédé de décodage selon la revendication 7, comprenant la lecture, dans le signal de données, d'au moins une information de localisation du bloc préalablement codé puis décodé. 5 9. Procédé de décodage selon la revendication 7 ou la revendication 8, dans lequel chacune des zones de l'image est identifiée par lecture d'une information d'identification (fp_type) correspondante lue dans le signal de données. 10 10. Dispositif de décodage d'un signal de données (F) représentatif d'une image (ICj) découpée en blocs qui a été codée, ladite image contenant deux zones (Z1, Z2) distinctes, comprenant un circuit de traitement (CT_D) qui est agencé pour : - uniquement dans le cas où le bloc courant (B,) appartient à l'une (Z1) 15 desdites zones de l'image : - lire dans le signal de données une information qui indique le décodage du bloc courant à l'aide d'une prédiction, le bloc courant étant destiné à être prédit en utilisant un bloc préalablement décodé, situé dans l'autre zone (Z2) de l'image, 20 les blocs de ladite autre zone ayant été préalablement décodés, - décoder le bloc courant en utilisant ladite prédiction, - pour tout bloc décodé qui appartient à l'autre (Z2) desdites zones de l'image, mémoriser (D100b)) les données de bloc décodé. 25 11. Programme d'ordinateur comportant des instructions de code de programme pour l'exécution des étapes du procédé de décodage selon l'une quelconque des revendications 7 à 9, lorsque ledit programme est exécuté sur un ordinateur. 30 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é de décodage selon l'une 28 quelconque des revendications 7 à 9, lorsque ledit programme est exécuté par un ordinateur. 5 10 15 20 25 30