Brevet FR2903554A1 — publié le 20080111

DISPOSITIF ET PROCEDE DE CODAGE ET DE DECODAGE ECHELONNABLES DE FLUX DE DONNEES D'IMAGES, SIGNAL ET PROGRAMME D'ORDINATEUR CORRESPONDANTS. Le domaine de l'invention est celui du codage et du décodage d'images ou de séquences vidéo d'images. Plus précisément, l'invention concerne une technique de codage et de décodage d'images échelonnables (en anglais "scalable"), c'est-à-dire à qualité adaptable et résolution spatio-temporelle variable. De nombreux systèmes de transmission de données sont aujourd'hui hétérogènes, en ce sens qu'ils desservent une pluralité de clients disposant de types d'accès aux données très divers. Ainsi, le réseau mondial Internet par exemple, est accessible aussi bien à partir d'un terminal de type ordinateur personnel (PC) que d'un radiotéléphone. Plus généralement, la bande passante pour l'accès au réseau, les capacités de traitement des terminaux clients, la taille de leurs écrans varient fortement d'un utilisateur à l'autre. Ainsi, un premier client peut par exemple accéder au réseau Internet à partir d'un PC puissant, et disposer d'un débit ADSL ("Asymmetric Digital Subscriber Line" pour "Ligne d'abonné numérique à structure asymétrique") à 1024 kbits/s alors qu'un deuxième client cherche à accéder aux mêmes données au même instant à partir d'un terminal de type PDA ("Personal Digital Assistant" pour "assistant numérique personnel") connecté à un modem de faible débit. Il est donc nécessaire de proposer à ces divers utilisateurs un flux de données qui soit adapté tant en terme de débit que de résolution des images à leurs différents besoins. Cette nécessité s'impose plus largement pour toutes les applications accessibles à des clients disposant de capacités d'accès et de traitement très diverses, et notamment les applications de : - VOD ("Video On Demand" pour "vidéo à la carte"), accessibles aux terminaux de radiocommunication de type UMTS ("Universal Mobile Telecommunication Service" pour "service de télécommunication mobile universel"), aux PC ou aux terminaux de télévision avec accès ADSL, etc. ; 2903554 2 - mobilité de session (par exemple reprise sur un PDA d'une session vidéo commencée sur un téléviseur, ou, sur un mobile UMTS d'une session commencée sur GPRS ("General Packet Radio Service" pour "service général de radiocommunication par paquets")) ; 5 - continuité de session (dans un contexte de partage de la bande passante avec une nouvelle application) ; - télévision haute définition, dans laquelle un encodage vidéo unique doit permettre de servir aussi bien des clients disposant d'une définition standard SD que des clients disposant d'un terminal à haute définition HD ; 10 - visioconférence, dans laquelle un encodage unique doit répondre aux besoins de clients disposant d'un accès UMTS et d'un accès Internet ; -etc. Pour répondre à ces différents besoins, on a développé des algorithmes de codage d'images échelonnables, ou "scalables", qui permettent 15 une qualité adaptable et une résolution spatio-temporelle variable. Le codeur génère un flux compressé présentant une structure hiérarchique de couches, dans laquelle chacune des couches est emboîtée dans une couche de niveau supérieur. Par exemple, une première couche de données véhicule un flux à 256kbits/s, qui pourra être décodé par un terminal de type PDA, et une 20 deuxième couche de données complémentaire véhicule un flux de résolution supérieure à 256kbits/s qui pourra être décodé, en complément du premier, par un terminal plus puissant de type PC. Le débit nécessaire pour le transport de ces deux couches emboîtées est dans cet exemple de 512 kbits/s. Certains de ces algorithmes de codage vidéo échelonnables sont 25 aujourd'hui en cours d'adoption par la norme MPEG ("Moving Picture Expert Group" pour "Groupe d'experts en codage d'images"), dans le cadre du groupe de travail MPEG VIDEO. La première génération de ces algorithmes échelonnables (cf travaux de MPEG-4, notamment avec les technologies de type FGS û Fine Grain 30 Scalability û Echelonnage à grain fin) ne s'est pas imposée car on lui reprochait une sous-optimalité en termes de compression. Plus récemment, de nouveaux algorithmes se sont imposés pour répondre à ce problème d'efficacité. Ils sont aujourd'hui en cours d'adoption par la norme MPEG-4 AVC, dans le contexte du groupe de travail JVT joint entre 2903554 3 l'ISO et l'IEC : SVC sera l'amendement 3 de la norme AVC (ISOIIEC 14496-10 Amdt3) (Scalable Video Coding û codage vidéo échelonnable). Le modèle qui a été retenu récemment par SVC est basé sur un codeur échelonnable avec prédiction inter-couches et décomposition 5 temporelle par prédiction bidirectionnelle (images B). Cette nouvelle norme est capable de fournir des flux échelonnables à grain moyen dans les dimensions temporelle, spatiale, et en qualité en quantification. Le décodeur correspondant à la norme est décrit dans le document "Joint Draft 6", J. Reichel, M. Wien, H. Schwarz, JVT-S202, 2006. 10 Les caractéristiques principales de cette solution sont les suivantes : - solution pyramidale avec sous-échantillonnage des composantes d'entrée; décomposition temporelle par images B à chaque niveau, codage des couches successives en mode CGS (Coarse Grain 15 Scalability û Echelonnage à grain grossier) ou en mode FGS (Fine Grain Scalability û Echelonnage à grain fin). L'encodeur est schématisé à la figure 1. II comporte deux modes : a) le mode FGS 1, 1', 1" ou codage par quantification progressive permettant d'atteindre une granularité dite "moyenne" (de l'ordre de 10%). Le 20 codeur enchaîne les étapes suivantes : - Codage en 2 d'une version basse résolution de la séquence vidéo. (le niveau de base en quantification de cette basse résolution est compatible AVC). - Codage des niveaux supérieurs par prédiction à partir du niveau 25 précédent reconstruit et sur-échantillonné et codage des résidus sous forme : o D'un niveau de base o D'un ou plusieurs niveaux de réhaussement obtenus par codage multipasse de plans de bits (par la suite : FGS). Le résidu de prédiction est codé jusqu'à un débit R_ri_max qui correspond au débit maximum 30 décodable pour la résolution ri. b) le mode CGS ou codage par couches permettant d'atteindre unéchelonnage dit grossier (de l'ordre de 25%). Le codeur enchaîne les étapes suivantes : - Le niveau de base est codé à une qualité 0 ( layer 0 , avec QPO ) 2903554 4 - la différence entre les couches est calculée et cette différence est encodée (codage entropique). Un flux SVC est constitué d'un ensemble de paquets d'information. Ces différents paquets d'information ( NAL unit ) peuvent être regroupés 5 hiérarchiquement en: - séquence vidéo: ensemble de paquets d'information représentant une séquence vidéo (ne correspondant pas nécessairement à tout le flux vidéo). Dans les premiers paquets, on retrouve notamment des paquets d'information globale relative à la séquence : paquets de type SPS (Sequence 10 Parameter Set û ensemble de paramètres de séquence), mais aussi des paquets d'information relatif aux différents type d'images présentes : paquets de type PPS (Picture Parameter Set û ensemble de paramètres d'image) - unité d'accès ( Access Unit ) : ensemble d'information correspondant à un instant temporel. On y retrouve des paquets d'information 15 de type message d'information (SEI û Supplemental Enhancement Information û information d'amélioration supplémentaire), ou bien de données - portion ( slice ) : ensemble d'informations codées au sein d'une NAL unit. Une portion regroupe un ensemble de macroblocs d'une image pour un niveau de représentation ou couche (par exemple, niveau de représentation 20 spatial). Par la suite, on appellera portion un groupe de groupe de blocs. - Macrobloc: ensemble d'informations présente dans un groupe de blocs. Un macrobloc est constitué de 4 blocs 8x8 de luminance et de 2 blocs 8x8 de chrominance (chrominance rouge, chrominance bleu) pour le format de couleur 4:2:0. Par la suite, on appellera macrobloc, un groupe de blocs. 25 - Bloc: ensemble d'information relatif à un bloc d'image de taille 8x8 ou 4x4. II est à noter que dans la suite de ce texte, sauf si le contexte le précise autrement, le terme groupe de blocs désigne indifféremment un macrobloc ou une portion ( slice ). 30 Le flux SVC est organisé en Access units (AU û unité d'accès) correspondant chacune à un instant (temporel) et comprenant une ou plusieurs unités d'accès pour le réseau (paquet) ou NALU (Network Abstraction Layer Units û unités de couche d'abstraction réseau) Chaque NALU, figure 2, est associée à une image issue de la décomposition spatio-temporelle Ti, un niveau de résolution spatiale Sj, et un 2903554 5 niveau de qualité en quantification SNR Ek. Cette structuration en NALUs permet alors de pouvoir réaliser une adaptation en débit et/ou résolution spatio-temporelle en supprimant les NALUs de résolution spatiale trop grande, ou de fréquence temporelle trop grande ou bien encore de qualité en quantification 5 trop grande. Chaque NALU encapsule une portion ( slice ) d'image, la portion d'image pouvant correspondre à tout ou partie de l'image. Comme indiqué précédemment, une slice est un ensemble de macroblocs contenu dans une image. On peut retrouver plusieurs slices dans une image 10 (typiquement pour limiter la taille des NALUs, limiter l'impact d'une perte de paquet, réaliser un codage adaptatif par région d'image, etc.). Chaque NALU spécifique à SVC comporte un octet d'en-tête AVC et deux octets* d'en-tête SVC contenant les champs (P,D,T,Q) (Priority_id, Dependency_id, Temporal_level, Quality_level). Ces champs peuvent être 15 exploités pour réaliser une adaptation en résolution spatiale et/ou fréquence temporelle et/ou qualité, en ne retenant que les NALUs ayant un niveau de champs (P,D,T,Q) suffisamment élevé. Le champ Priority_id indique un niveau de priorité d'une NALU pouvant servir à guider une adaptation en qualité. 20 Le champ Dependency_id permet de connaitre le niveau de résolution spatiale d'une couche hiérarchique de codage. Ce niveau peut aussi contrôler un niveau de rehaussement en qualité SNR ou de rehaussement temporel dans le cadre d'un codage en couche, c'est-à-dire pour un nombre de points de fonctionnement discret. 25 Le champ Temporal_level permet d'indiquer le niveau temporel indiquant la fréquence d'image. Le champ Quality_level permet d'indiquer le niveau de quantification progressive, et donc de contrôler le débit/qualité et/ou la complexité. 30 Chaque NALU comporte également dans l'en-tête un champ "discardable_flag" qui indique si l'unité considérée doit être prise en compte pour le décodage du niveau courant seulement ou pour le décodage du niveau courant et du niveau supérieur. Un flux échelonnable est divisé en couches (en anglais layer ). 35 Chaque couche est identifiée par l'élément de syntaxe nommé 2903554 6 "dependency_id". Pour chaque couche, un niveau de base est codé en mode non progressif avec un pas de quantification initial QPO. Ce niveau de base est identifié à l'intérieur de la couche par l'élément de syntaxe appelé niveau de qualité (quality_level dans la norme) QLO (c'est-à-dire QL = 0). 5 Le niveau de base QLO d'une couche couche 1 , figure 3, peut être prédit : - soit par le niveau de base QLO d'une couche inférieure couche 0 . C'est notamment le cas en mode non progressif, puisque dans l'état actuel de la norme, il n'est pas permis d'avoir plusieurs niveaux de qualité (QL) dans 10 une même couche en CGS - soit par un niveau QLi (c'est-à-dire QL = i) de la couche inférieure (i>=0) en mode progressif ou en mode non progressif CGS en supposant plusieurs niveaux QL en CGS. Cette prédiction est appelée prédiction inter-layer ou prédiction 15 inter-couches. A l'intérieur de chaque couche, des niveaux de rehaussement QLi du niveau de base QLO peuvent être codés, ces niveaux de rehaussement sont identifiés par leur niveau de qualité QL. La norme prévoit que ces niveaux de rehaussement sont codés en mode de raffinement progressif -FGS, bien que 20 techniquement, il soit également possible de coder le niveau de rehaussement en mode non progressif CGS. Ces niveaux de prédiction sont codés à l'aide d'une prédiction intra-couche venant du niveau précédent QLO (niveau de base ou de rehaussement). Dans AVC, un bloc inter est en général codé à l'aide d'une prédiction 25 par compensation en mouvement et ajout éventuel d'un résidu. Deux sous-modes de codage particulier ne réalisent pas un codage du mouvement utilisé pour la prédiction du bloc, mais infèrent ce mouvement; il s'agit des modes DIRECT et SKIP. Le mode DIRECT n'est autorisé que dans les portions ( slices ) de 30 type B, le mode SKIP quant à lui étant autorisé dans les portions ( slices ) de type P et de type B. Dans une portion ( slice ) de type B, le mode SKIP est un cas particulier du mode DIRECT. Le mouvement est inféré de la même façon dans les deux cas, le mode DIRECT permet en plus de coder un résidu. 35 Dans une slice de type B, 2903554 7 - si l'indicateur direct_spatial_mv_pred_flag de l'en-tête de slice est positionné à false , il indique une prédiction temporelle, le vecteur mouvement d'un bloc est inféré en utilisant le vecteur mouvement du bloc co-localisé, c'est-à-dire situé à la même position dans l'image, du tampon 5 ( butter ) d'images de référence. Il s'agit du temporal direct mode . - sinon il s'agit d'un mode de prédiction spatial, appelé spatial direct mode . Dans une portion ( slice ) de type P, le mode SKIP est forcément réalisé avec une prédiction spatiale et le mode DIRECT n'est pas accessible. 10 Par la suite, on se positionne dans un contexte de prédiction temporelle directe, en se référant uniquement aux images B (de façon non restrictive, puisque d'autres schémas de codage pourraient permettre d'avoir un mode TEMPORAL_DIRECT pour des images P). De plus, lorsque l'on réfère au mode SKIP, il s'agira toujours d'un SKIP temporel. 15 L'intérêt de ces deux modes de codage est de gagner en débit en pouvant ne pas coder l'information de mouvement pour certains blocs mais en l'inférant à partir d'une image déjà codée. Schématiquement, sur la figure 5 le bloc "b_10" est codé en mode TEMPORAL_DIRECT en dérivant un vecteur de mouvement à partir du vecteur 20 codé pour le bloc "br_IO" de l'image de référence (stockée dans le TAMPON IMAGE DECODEE ). Dans le cadre de SVC, lorsque l'on utilise un codage en deux couches (par exemple deux niveaux de résolution spatiale), les informations codées dans la couche de base peuvent être réutilisées pour prédire les informations à 25 coder d'une couche supérieure. Ainsi, le vecteur mouvement d'un bloc de la couche 1 peut être prédit à partir du vecteur mouvement d'un bloc co-localisé de la couche O. Sur les figures 6 et 7, le mouvement du bloc Io _Il" de la couche 1 peut ainsi être prédit par le vecteur mouvement du bloc "b_10" de la couche 0. Le vecteur mouvement est remis à l'échelle s'il y a une différence de 30 résolution spatiale et éventuellement raffiné. Par bloc co-localisé, on entend le bloc virtuel situé à la même position dans l'image de référence, avec une éventuelle mise à l'échelle. Dans le cas où le bloc "b_10" est codé en mode TEMPORAL_DIRECT ou en mode SKIP, son vecteur mouvement est déduit du vecteur mouvement 35 du bloc "br_IO". Il en résulte que pour le décodage de la couche 1, afin de 2903554 8 prédire le mouvement du bloc "b_11", il est nécessaire de pouvoir accéder au mouvement du bloc "br_I0". Cette situation est d'autant plus probable que nombre de blocs sont codés en mode SKIP dans les différentes couches. Cette relation de dépendance cascadée implique alors qu'il est 5 nécessaire même pour les images décodées en mode single loop (par mode single loop , on entend que les blocs d'images d'un niveau N utilisés par la prédiction du niveau supérieur (N + 1) ne sont pas compensés en mouvement. Ils ne dépendent donc pas des autres blocs d'images environnantes) de stocker des informations relatives aux différentes couches et 10 non uniquement à la couche du niveau de décodage (i.e. couche la plus haute utilisée). Cette contrainte impose une surcharge d'occupation mémoire comparée à la situation où l'on ne stockerait ces mêmes informations que pour la couche de restitution de décodage. C'est un objectif de l'invention de limiter l'espace mémoire nécessaire 15 aux stockages des vecteurs mouvement des images de référence en ne stockant que les vecteurs mouvement au niveau de la couche de restitution du décodage pour les images décodées en mode single-loop. L'invention propose ainsi un procédé de codage d'une séquence d'au moins deux images générant un flux de données sous forme de groupes de 20 blocs présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans 25 l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, ledit procédé comportant une étape préliminaire de codage, au niveau de la couche inférieure n, d'une information d'au moins un bloc d'une image de la séquence d'images par référence directe à ladite information du bloc co-localisé d'une 30 image de référence, caractérisé en ce que le procédé comporte, pour le codage de la couche n + 1, • une étape de détection du codage du bloc par référence directe au niveau de la couche inférieure n, puis • une étape de codage, au niveau de la couche n+1, de ladite 35 information du bloc de l'image de la séquence d'images par référence directe à 2903554 9 l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. Le procédé permet ainsi avantageusement de réduire l'occupation mémoire utilisée pour le décodage puisqu'il n'est plus nécessaire de garder en 5 mémoire les données de l'image de référence de la couche n. Dans un mode de réalisation préférée, l'information codée est une information de mouvement pouvant, éventuellement, au niveau de la couche n + 1, être codée par une prédiction spatiale. Dans un autre mode de réalisation préférée, l'information codée est 10 une information de texture. Le procédé s'applique avantageusement aux informations qui sont codées en mode TEMPORAL DIRECT ou SKIP . L'étape de codage au niveau de la couche n + 1 comporte en outre une sous-étape de raffinement. De façon particulièrement avantageuse, les 15 paramètres de raffinement sont alors transmis en lieu et place des paramètres de raffinement utilisés dans la technique de prédiction inter-couches. Cela permet avantageusement de ne pas augmenter le nombre de données à transmettre, ni d'obliger à une modification de la syntaxe de la norme. 20 Selon un autre mode préféré de réalisation, les étapes de détection et de codage sont étendues à toute couche de niveau supérieure suivante à n + 1 pour laquelle le codage est fait par prédiction à partir de la couche de niveau inférieur précédent. Ainsi, avantageusement, le gain en mémoire augmente en efficacité. 25 Les paramètres de raffinement des niveaux inférieurs sont alors avantageusement ajoutés aux paramètres de raffinement des couches supérieures suivantes. L'invention propose également un dispositif de codage d'une séquence d'au moins deux images générant un flux de données sous forme de groupes 30 de blocs présentant une structure hiérarchique de couches de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans 35 l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant 2903554 10 fait par prédiction au moins à partir de la couche inférieure n, ledit dispositif comportant des moyens préliminaires de codage, au niveau de la couche inférieure n, d'une information d'au moins un bloc d'une image de la séquence d'images par référence directe à ladite information du bloc co-localisé d'une 5 image de référence, caractérisé en ce que le dispositif comporte, pour le codage de la couche n + 1, • des moyens de détection du codage du bloc par référence directe au niveau de la couche inférieure n, et • des moyens de codage, au niveau de la couche n+1, de ladite 10 information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. L'invention propose également un procédé de décodage d'une séquence d'au moins deux images contenues dans un flux de données sous 15 forme de groupes de blocs présentant une structure hiérarchique de couches de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec 20 l'augmentation dans l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, caractérisé en ce que ledit procédé comporte : • une étape de détection, au niveau de la couche inférieure n, qu'une information d'au moins un bloc d'une image de la séquence d'images est 25 codée par référence directe à ladite information du bloc co-localisé d'une image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est prédit par le bloc de la couche n, puis • une étape de décodage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à 30 l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. L'invention propose également un dispositif de décodage d'une séquence d'au moins deux images contenue dans un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de 35 données emboîtées de niveaux n successifs, où n est entier, chacune des dites 2903554 11 couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des dites couches, 5 de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, caractérisé en ce que ledit dispositif comporte : • des moyens de détection, au niveau de la couche inférieure n, qu'une information d'au moins un bloc d'une image de la séquence d'images est codée par référence directe à ladite information du bloc co-localisé d'une 10 image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est prédit par le bloc de la couche n, puis • des moyens de décodage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche 15 n + 1. L'invention propose également un signal de transmission d'un flux de données codé par le procédé de codage et comportant, pour chaque bloc codé par référence directe, au moins un en-tête comportant des informations de raffinement. 20 L'invention propose également un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé de codage. 25 L'invention sera mieux comprise à la lumière de la description et des dessins sur lesquels : la figure 1 est un schéma synoptique d'un codeur selon la norme SVC ; la figure 2 est une représentation symbolique du flux codé selon 30 la norme SVC dans sa décomposition en NALU ; la figure 3 est une vue schématique des relations entre la prédiction inter-couche et la prédiction intra-couche dans le projet de norme SVC ; 2903554 12 la figure 4 est une vue schématique des flux de codage dans la norme SVC ; la figure 5 est une vue schématique d'un codage en mode temporal direct mode de la norme AVC ; 5 la figure 6 est une vue schématique de la relation entre le codage selon la figure 5 et le codage par prédiction inter-couches dans la norme SVC; la figure 7 est une vue schématique des dépendances entre la prédiction inter-couches et le mode temporal direct mode 10 selon l'art antérieur ; la figure 8 est une vue schématique des dépendances entre la prédiction inter-couches et le mode temporal direct mode dans un mode de réalisation de l'invention ; la figure 9 est une vue schématique des dépendances dans un 15 mode de réalisation de l'invention pour un temporal direct mode effectué sur la dernière couche de représentation ; la figure 10 est une vue schématique des relations entre la prédiction inter-couches et le mode temporal direct mode sur trois couches selon l'art antérieur ; 20 la figure 11 est une vue schématique des dépendances entre la prédiction inter-couches et le mode temporal direct mode sur trois couches selon l'art antérieur ; la figure 12 est une vue schématique des dépendances entre la prédiction inter-couches et le mode temporal direct mode sur 25 trois couches dans un mode de réalisation de l'invention ; et la figure 13 est une vue schématique d'un ordinateur sur lequel peut s'exécuter un programme d'ordinateur pour la mise en oeuvre d'un procédé de codage selon un mode de réalisation de l'invention. 30 On considère une unité de données d'une couche N qui peut être prédite à partir d'un niveau de qualité en quantification de la couche (N-1) dont elle dépend. 2903554 13 Le vecteur mouvement à utiliser pour un bloc lorsque ce vecteur mouvement est inféré à partir du vecteur mouvement d'un bloc colocalisé dans la couche de référence qui lui même est inféré via un codage de type TEMPORAL_DIRECT ou SKIP n'est pas dépendant du vecteur 5 mouvement de la couche de référence. On utilise alors le vecteur mouvement du bloc co-localisé de l'image de référence située au même niveau de couche de représentation comme vecteur mouvement d'inférence. Ainsi : • si le vecteur mouvement d'un bloc (i.e. bloc b_I1) d'une couche de 10 représentation est prédit à partir du vecteur mouvement du bloc colocalisé dans la couche de représentation de base (i.e. bloc b_10), • et si le vecteur mouvement du bloc co-localisé dans la couche de représentation de base (i.e. bloc b_10) défini via le mode TEMPORAL_DIRECT ou SKIP (c'est-à-dire que le vecteur 15 mouvement utilisé est celui du bloc co-localisé dans l'image de référence située dans la couche de représentation de base û i.e. bloc br_I0), • alors la prédiction du vecteur mouvement de ce bloc (c'est-à-dire le bloc b_I1) est prédit par le vecteur mouvement du bloc co-localisé 20 de l'image de référence dans la même couche de représentation (c'est-à-dire le. bloc br_l1) Un mode particulier de réalisation va être décrit pour deux couches de représentation. Afin de pouvoir limiter l'espace mémoire nécessaire au stockage des 25 vecteurs mouvements utilisés pour les images décodées de référence, le mode de réalisation décrit propose de modifier le comportement du décodeur dans le cas où un vecteur mouvement d'un blocd'une couche de représentation est inféré à partir du vecteur de mouvement d'un bloc co-localisé d'une couche de représentation inférieur, lui même inféré via un mode de type 30 TEMPORAL_DIRECT ou SKIP. Le comportement du décodeur est modifié de la façon suivante, figure 8: 2903554 14 • si le vecteur mouvement d'un bloc (c'est-à-dire le bloc b_I1) d'une couche de représentation est prédit à partir du vecteur mouvement du bloc co-localisé dans la couche de représentation de référence (c'est-à-dire le bloc b_10), 5 • et si le vecteur mouvement du bloc co-localisé dans la couche de représentation de référence (c'est-à-dire le bloc b_10) défini via le mode TEMPORAL_DIRECT ou SKIP (i.e. que le vecteur mouvement utilisé est celui du bloc co-localisé dans la couche de représentation de référence û c'est-à-dire le bloc br_I0), 10 o alors la prédiction du vecteur mouvement de ce bloc (c'est-à-dire le bloc b_Il) est prédit par le vecteur mouvement du bloc co-localisé de l'image de référence dans la même couche de représentation (i.e. bloc br_l l ). La figure 8 illustre ainsi le nouveau mode de dépendance entre les 15 différents blocs des différentes images et des différentes couches pour le cas préalablement illustré sur la figure 7. Dans le cas de l'utilisation d'une prédiction inter-couches du vecteur mouvement du bloc b_I1, il est possible d'ajouter un raffinement sur la prédiction utilisée : 20 mouvement(b_I1) = mouvement_predit(b_I1) + raffinement_mouvement(b_I1) L'utilisation du mode de réalisation décrit permet alors de pouvoir coder le mouvement suivant pour le bloc b_I1 mouvement(b_I1) = mouvement(br_I1) + raffinement mouvement(b_l1) Ce nouveau mode de codage vient enrichir le mode de codage 25 TEMPORAL_DIRECT effectué au niveau de la couche de représentation 1 où l'on avait: mouvement(b_I1) = mouvement(br_I1) sans possibilité de venir raffiner à ce niveau le mouvement provenant de l'image de référence. Ce mode TEMPORAL_DIRECT est illustré sur la 30 figure 9. On peut observer que pour ce mode, il n'y a pas possibilité de venir raffiner le mouvement inféré. 2903554 15 Optionnellement, lors d'une prédiction de mouvement inter couche non valide (c'est-à-dire prédiction inter-couche d'un vecteur mouvement de la couche de base qui est déduit par un mode TEMPORAL_DIRECT ou SKIP), le vecteur mouvement de prédiction est défini par une prédiction spatiale et non 5 temporelle (par exemple utilisation de la prédiction médiane des vecteurs mouvements des blocs voisins). Dans une variante de réalisation, le mode de codage est étendu sur plus de deux couches. Dans le cas d'un codage sur plus de deux couches de représentation, 10 tel qu'illustré sur la Figure 10, il est possible que les inférences se cascadent. Le vecteur de mouvement du bloc b_I2 peut être prédit à partir du vecteur de mouvement du bloc b_I1 qui lui même est prédit à partir du vecteur de mouvement du bloc b_I0 qui lui même est inféré via un mode de codage de type TEMPORAL_DIRECT ou SKIP. Les relations de dépendance d'une telle 15 prédiction sont illustrées sur la figure 11. En utilisant la syntaxe actuelle du projet de norme, il faudrait stocker les vecteurs mouvements des couches de représentation 0 et 1. On propose alors dans ce cadre d'utiliser pour le bloc de la couche supérieure comme vecteur mouvement de prédiction, le vecteur mouvement de l'image de 20 référence située dans la couche de représentation supérieure. Les relations de dépendances effectives proposées par l'invention sont alors illustrées par la figure 12. Deux solutions sont alors possibles en utilisant la modification de sémantique proposée plus haut, on peut descendre jusqu'à la dernière couche 25 pour déterminer si on est en skip ou en TD, c'est-à-dire o si le vecteur mouvement d'un bloc d'une couche de représentation supérieur (c'est-à-dire le bloc b_I2) est prédit à partir du vecteur mouvement du bloc co-localisé d'une couche de représentation intermédiaire (c'est-à-dire le bloc b _11), et 30 o si le vecteur mouvement de ce bloc d'une couche de représentation intermédiaire (c'est-à-dire le bloc b_I1) est prédit à partir du 2903554 16 vecteur mouvement du bloc co- localisé d'une couche de représentation inférieure (c'est-à-dire le bloc b_10), et o si le vecteur mouvement de ce bloc de la couche de représentation inférieure (c'est à dire le bloc b_I0) est inféré à partir du bloc co- 5 localisé d'une image de référence de la couche de représentation inférieure (i.e. bloc br_I0), o alors le vecteur mouvement de prédiction pour ce bloc (c'est-à-dire le bloc b_I2) est défini comme étant le vecteur mouvement du bloc colocalisé dans l'image de référence de la même couche de représentation (c'est- 10 à-dire le bloc br_12) Afin de gérer cette situation et d'éviter de devoir descendre jusqu'en bas de la représentation, un indicateur additionnel "motion_vector_valid_for_ILP_flag" est introduit dans le processus de décodage. Cet indicateur permet de définir si un vecteur mouvement d'un bloc 15 défini dans une couche de représentation est valide pour la prédiction inter-couches d'un bloc co-localisé d'une couche de représentation supérieure. Les valeurs de cet indicateur sont alors positionnées de la façon suivante pour la couche de représentation la plus basse : - si le bloc est codé en mode SKIP ou TEMPORAL_DIRECT, alors 20 l'indicateur motion_vector_valid_for_ILP_flag est positionné à FAUX, - si le vecteur mouvement d'un bloc est codé, l'indicateur est positionné à VRAI. La valeur par défaut de cet indicateur est VRAI. Dans le cas du décodage d'une couche de représentation utilisant une 25 prédiction inter couche avec une couche de représentation de base, le processus de définition des vecteurs de prédiction est modifié comme suit si le vecteur mouvement de la couche supérieure est effectivement prédit par un vecteur mouvement de la couche de base : - si un vecteur d'un bloc de la couche de représentation de base a 30 un indicateur motion_vector_valid_for_ILP_flag positionné à VRAI, alors le processus normal de définition du vecteur mouvement de prédiction est 2903554 17 appliqué et l'on positionne un indicateur motion_vector_valid_for_ILP à VRAI pour ce vecteur mouvement de prédiction, - sinon le vecteur mouvement de prédiction est défini comme étant un vecteur mouvement défini comme pour un mode de codage de type SKIP 5 ou TEMPORAL_DIRECT au niveau de la couche de représentation visée, et l'on positionne un indicateur motion_vector_valid_for_ILP à FAUX pour ce vecteur mouvement de prédiction, Dans le cas où le décodage d'une couche de représentation utilisant une prédiction inter couche avec une couche de représentation de base, si le 10 vecteur mouvement d'un bloc n'est pas prédit via un vecteur mouvement de la couche de base, alors le vecteur mouvement et son indicateur motion_vector_valid_for_ILP est défini comme pour un vecteur de la couche de base. Par la suite, le décodage du vecteur mouvement de la couche de 15 représentation est défini de la façon suivante : - si le bloc n'utilise pas une prédiction inter couche pour le vecteur mouvement, alors on procède comme pour le décodage d'un vecteur mouvement d'une couche de base (en utilisant le même niveau de couche de représentation que celui du niveau de couche de représentation de la couche 20 de décodage pour les images de référence préalablement décodées desquelles on infère les vecteurs mouvement pour les modes SKIP et TEMPORAL_DIRECT), - sinon, si le bloc utilise une prédiction inter-couche pour le vecteur mouvement, on utilise alors la prédiction de mouvement inter couche comme 25 préalablement définie, et l'on réalise une combinaison de cette prédiction et d'un éventuel raffinement du mouvement de façon classique. L'indicateur motion_vector_valid_for ILP_flag du vecteur mouvement décodé est alors positionné avec la valeur de l'indicateur motion_vector_valid_for_ILP_flag du vecteur mouvement de prédiction. 30 Si l'on reprend l'exemple de la figure 12, on définit alors le vecteur mouvement pour le bloc_bI2 de la façon suivante : 2903554 18 -si le vecteur mouvement d'un bloc d'une couche de représentation supérieur (i.e. bloc b_I2) est prédit à partir du vecteur mouvement du bloc co-localisé d'une couche de représentation intermédiaire (i.e. bloc b_I1), 5 - et si le vecteur mouvement de ce bloc d'une couche de représentation intermédiaire (bloc b_I1) a son indicateur motion_vector_valid_for_ILP_flag positionné à FAUX, o alors le vecteur mouvement de prédiction pour ce bloc (b_I2) est défini comme étant le vecteur mouvement du bloc co-localisé dans l'image de 10 référence de la même couche de représentation (i.e. bloc br_I2), o et l'indicateur motion_vector_valid_for_ILP_flag est positionné à FAUX pour ce bloc (i.e. bloc b_I2) Optionnellement, le raffinement utilisé pour le vecteur mouvement du bloc de la couche intermédiaire est ajouté au vecteur de mouvement de 15 prédiction, soit : mouvement(b_I2) = mouvement(br_I2) [+ raffinement_mouvement(b_Il )] + raffinement_mouvement(b_l2) Optionnellement, le raffinement de mouvement provenant de la couche intermédiaire correspond au cumul des raffinements de mouvement provenant 20 de la cascade des inférences. On a illustré dans les sections précédentes le cas d'application de l'invention à une information de type mouvement. Ce mécanisme peut être étendu à d'autres champs d'information. Par exemple, on peut retrouver dans certains schémas de codage un 25 mode dit de "COPY" consistant pour le bloc courant d'une image à décoder et à recopier le bloc co-localisé d'une image de référence préalablement décodée. Ce type de mode de codage induit alors les mêmes problèmes que ceux rencontrés avec les modes de codage direct des informations de 30 mouvement. II est en effet nécessaire de stocker l'image reconstruite (ou une portion) de référence pour une couche de représentation inférieure pour pouvoir reconstruire les informations d'un bloc de couche de représentation 2903554 19 inférieur codé en mode "COPY" et par la suite utilisé comme prédiction inter-couche pour une couche de représentation supérieure. On a ainsi décrit un procédé de codage d'une séquence d'au moins deux images générant un flux de données sous forme de groupes de blocs 5 présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans 10 l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n. Ce procédé comporte une étape préliminaire de codage, au niveau de la couche inférieure n, d'une information d'au moins un bloc d'une image de la séquence d'images par référence directe à ladite information du bloc co-localisé d'une image de 15 référence. Il comporte en outre, pour le codage de la couche n + 1, • une étape de détection du codage du bloc par référence directe au niveau de la couche inférieure n, puis • une étape de codage, au niveau de la couche n+1, de l'information du bloc de l'image de la séquence d'images par référence directe 20 à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. L'information codée est une information de mouvement qui peut, éventuellement, être codée par prédiction spatiale ou bien être une information de texture. 25 II est à noter que le codage au niveau de la couche n + 1 peut comporter en outre une sous-étape de raffinement. Dans ce cas, les paramètres de raffinement sont transmis en lieu et place des paramètres de prédiction. Les étapes de détection et de codage peuvent être étendues à toute 30 couche de niveau supérieure suivante à n + 1 pour laquelle le codage est fait par prédiction à partir de la couche de niveau inférieur précédent. 2903554 20 Ainsi, les paramètres de raffinement des niveaux inférieurs sont alors ajoutés aux paramètres de raffinement des couches supérieures suivantes. On décrit également un dispositif de codage d'une séquence d'au 5 moins deux images générant un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution 10 et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n. Ce dispositif comporte des moyens préliminaires de codage, au niveau de la couche inférieure n, d'une information d'au moins un bloc d'une image de la séquence 15 d'images par référence directe à ladite information du bloc co-localisé d'une image de référence, et, pour le codage de la couche n + 1, • des moyens de détection du codage du bloc par référence directe au niveau de la couche inférieure n, et • des moyens de codage, au niveau de la couche n+1, de ladite 20 information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n+1. Le procédé de décodage d'une séquence d'au moins deux images contenue dans un flux de données sous forme de groupes de blocs présentant 25 une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le 30 codage d'une des couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, comporte : 2903554 21 • une étape de détection, au niveau de la couche inférieure n, qu'une information d'au moins un bloc d'une image de la séquence d'images est codée par référence directe à l'information du bloc co-localisé d'une image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est 5 prédit par le bloc de la couche n, puis • une étape de décodage, au niveau de la couche n+1, de l'information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. 10 Le dispositif de décodage d'une séquence d'au moins deux images contenue dans un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées 15 desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, comporte : • Des moyens de détection, au niveau de la couche inférieure n, 20 qu'une information d'au moins un bloc d'une image de la séquence d'images est codée par référence directe à l'information du bloc co-localisé d'une image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est prédit par le bloc de la couche n, puis • des moyens de décodage, au niveau de la couche n+1, de 25 l'information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. Le flux de données généré par le codage ainsi décrit est transmis par un signal. Il est remarquable que, pour chaque bloc codé par référence directe, 30 au moins un en-tête comporte des informations de raffinement. On comprend que le procédé de codage peut être mis en oeuvre par un produit programme d'ordinateur téléchargeable depuis un réseau de 2903554 22 communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur.tel que représenté sur la figure 13 et comportant une unité arithmétique et logique CPU, différents mémoires RAM et registres MO, M1, M2, M3 ainsi que des entrées/sorties I/O. 5 REVENDICATIONS 1. Procédé de codage d'une séquence d'au moins deux images générant un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait pour au moins un bloc d'une image par une prédiction à partir de la couche inférieure n, ledit procédé comportant une étape préliminaire de codage, au niveau de la couche inférieure n, d'une information du bloc co-localisé de cette image de la séquence d'images par référence directe à ladite information du bloc co-localisé d'une image de référence, caractérisé en ce que le procédé comporte, pour le codage de la couche n + 1, • une étape de détection du codage du bloc par référence directe au niveau de la couche inférieure n, puis • une étape de codage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. 2. Procédé de codage selon la revendication 1, caractérisé en ce que l'information codée est une information de mouvement. 3. Procédé de codage selon la revendication 2, caractérisé en ce que l'information du bloc de l'image au niveau de la couche n + 1 est codée par une prédiction spatiale. 4. Procédé de codage selon la revendication 1, caractérisé en ce que l'information codée est une information de texture. 2903554 24 5. Procédé de codage selon l'une quelconque des revendications précédentes, caractérisé en ce que l'étape de codage au niveau de la couche n + 1 comporte en outre une sous-étape de raffinement. 6. Procédé de codage selon la revendication 5, caractérisé en ce que 5 les paramètres de raffinement sont transmis en lieu et place des paramètres de raffinement utilisés dans une prédiction inter-couches. 7. Procédé de codage selon l'une quelconque des revendications précédentes, caractérisé en ce que les étapes de détection et de 10 codage sont étendues à toute couche de niveau supérieure suivante à n + 1 pour laquelle le codage est fait par prédiction à partir de la couche de niveau inférieur précédent. 8. Procédé de codage selon la revendication 7 en ce qu'elle dépend de la revendication 6, caractérisé en ce que les paramètres de 15 raffinement des niveaux inférieurs sont ajoutés aux paramètres de raffinement des couches supérieures suivantes. 9. Dispositif de codage d'une séquence d'au moins deux images générant un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de données 20 emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le 25 codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, ledit dispositif comportant des moyens préliminaires de codage, au niveau de la couche inférieure n, d'une information d'au moins un bloc d'une image de la séquence d'images par référence directe à ladite information du bloc co-localisé d'une image de référence, 2903554 25 caractérisé en ce que le dispositif comporte, pour le codage de la couche n + 1, • des moyens de détection du codage du bloc par référence directe au niveau de la couche inférieure n, et 5 • des moyens de codage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. 10. Procédé de décodage d'une séquence d'au moins deux images 10 contenue dans un flux de données sous forme de groupes de blocs présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de 15 blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, caractérisé en ce que ledit procédé comporte : 20 • une étape de détection, au niveau de la couche inférieure n, qu'une information d'au moins un bloc d'une image de la séquence d'images est codée par référence directe à ladite information du bloc co-localisé d'une image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est prédit 25 par le bloc de la couche n, puis • une étape de décodage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. 30 11. Dispositif de décodage d'une séquence d'au moins deux images contenue dans un flux de données sous forme de groupes de blocs 2903554 26 présentant une structure hiérarchique de couche de données emboîtées de niveaux n successifs, où n est entier, chacune des dites couches correspondant à une résolution et à une gamme de niveaux de qualité d'encodage prédéterminées desdits groupes de 5 blocs, tel que la résolution et/ou le niveau de qualité d'encodage soit croissant avec l'augmentation dans l'ordre des couches, le codage d'une des dites couches, de niveau n + 1 étant fait par prédiction au moins à partir de la couche inférieure n, caractérisé en ce que ledit dispositif comporte : 10 • Des moyens de détection, au niveau de la couche inférieure n, qu'une information d'au moins un bloc d'une image de la séquence d'images est codée par référence directe à ladite information du bloc co-localisé d'une image de référence, et que le bloc correspondant, au niveau de la couche n + 1, est prédit 15 par le bloc de la couche n, puis • des moyens de décodage, au niveau de la couche n+1, de ladite information du bloc de l'image de la séquence d'images par référence directe à l'information du bloc co-localisé de l'image de référence au niveau de la couche n + 1. 20 12. Signal de transmission d'un flux de données codé par le procédé selon l'une des revendications 1 à 8 et comportant, pour chaque bloc codé par référence directe, au moins un en-tête comportant des informations de raffinement. 13. Produit programme d'ordinateur téléchargeable depuis un réseau 25 de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé de codage selon l'une au moins des revendications 1 à 8.