Brevet FR2830159A1 — publié le 20030328

L'invention concerne un procédé de codage et de décodage avec prédiction temporelle. Les standards concernés sont par exemple H261, H263, MPEG, d'une manière générale les standards basés sur un codage par blocs d'image et sur une compensation de mouvement. De tels standards décrivent le découpage d'une image en fenêtres de 16x16 pixels appelés macroblocs. Le contenu de l'image est encodé macrobloc par macrobloc. Lorsqu'une prédiction temporelle est exploitée pour le codage, un macrobloc peut être prédit à partir d'une image passée ou future, si l'on considère l'ordre d'affichage et non l'ordre de codage des images, à l'aide d'un ou plusieurs vecteurs de mouvement par macrobloc. Dans la suite du document, on parlera indistinctement d'image ou de VOP (Video Object Plane). Il s'agit d'un concept introduit par la norme MPEG4 qui définit un "plan objet vidéo", c'est à dire la photographie d'un objet vidéo à un instant donné. Un VOP est une image rectangulaire, dont la taille peut varier dans le temps, constitué d'une forme, par exemple un masque binaire, et d'une texture. Les principes décrits par la suite concernent aussi bien les images classiques rectangulaires de la norme MPEG 2, que les VOPs de la norme MPEG 4. La transmission de flux de données sur réseaux hétérogènes ou sur internet génère fréquemment des erreurs de transmission. Le décodeur est alors confronté à la reconstruction de morceaux d'images manquants. La plupart des supports numériques d'enregistrement et des canaux de communication ne sont pas protégés contre les erreurs. La norme MPEG supporte des modes robustes aux erreurs. Parmi les outils existant pour limiter les problèmes dus aux erreurs de transmission, un premier moyen appelé resynchronisation consiste en l'insertion de marqueurs de resynchronisation dans le flux, définissant des paquets vidéo. Un deuxième niveau de protection permettant de masquer les erreurs ("error concealment" dans la norme) consiste en un partitionnement des données dans les paquets vidéo relatifs aux images 1 et P. Les entêtes des macroblocs sont placés en début du paquet vidéo et les macroblocs de texture sont placés à la suite, séparés par un marqueur à l'intérieur du paquet vidéo. Si les données de texture sont perdues, les images peuvent être reconstituées à partir des informations de mouvement. Un autre niveau de protection permettant la récupération des données ("data recovery") consiste en l'exploitation d'un code à longueur variable réversible RVLC (Reversible Variable Length Code) pour les données de texture. Une erreur de transmission détectée dans le flux permet ainsi de se positionner sur le mot de synchronisation du prochain paquet vidéo et d'effectuer un décodage à l'envers ("backward décode"). Un autre moyen concerne les modes de codage des macroblocs. Un rafraîchissement de macroblocs en intra, c'est à dire un forçage du mode de codage d'un macrobloc en mode intra est effectué périodiquement pour limiter les propagations d'erreurs dues au codage inter. Cependant, un tel codage en mode intra est coûteux en terme de bits de codage. L'invention a pour but de limiter les inconvénients précités. A cet effet, l'invention a pour objet un procédé de codage selon la norme MPEG, caractérisé en ce qu'il calcule la position prédite du macrobloc courant à coder dans la prochaine image ou vop, en considérant l'ordre d'affichage des images, et en ce qu'un paramètre de codage du macrobloc dépend du fait que le macrobloc prédit se trouve ou non à l'extérieur de la prochaine image ou vop. Selon une mise en #uvre particulière de l'invention, le paramètre de codage est le mode de codage en inter ou en intra ou bien le pas de quantification des coefficients TCD du macrobloc. Selon une autre mise en #uvre particulière de l'invention, le paramètre de codage prend également en compte le nombre d'images B ou B-vops situés entre l'image ou vop P courant et l'image ou vop P suivant. Selon une variante de l'invention, l'algorithme de masquage d'erreur, pour un macrobloc, basé sur un rafraîchissement aléatoire des macroblocs par codage en intra de ces macroblocs, prend en compte la position prédite de ce macrobloc dans la prochaine image ou vop. Selon une autre variante de l'invention, le positionnement des marqueurs de resynchronisation correspondant dans la norme MPEG4 au début des paquets vidéo, prend en compte la position prédite du macrobloc, la taille des paquets pouvant également être modifiée en fonction du nombre de macroblocs qu'ils renferment ayant une position prédite à l'extérieur de l'image. Selon une autre variante de l'invention, lors d'un codage exploitant les extensions à l'échelonnabilité pour améliorer la précision de codage, cette amélioration est réduite ou supprimée pour les macroblocs dont la position prédite se trouve à l'extérieur de l'image suivante. L'invention propose, pour chaque macrobloc MB, d'adapter les paramètres de codage de ce macrobloc en fonction de sa position prédite à l'instant suivant. L'idée est de limiter le coût de codage de ce macrobloc s'il y a une forte probabilité que ce macrobloc se trouve en dehors du vop ou de l'image à l'instant suivant. Il s'agit par exemple de ne pas effectuer de forçage en mode intra lors du rafraîchissement d'un macrobloc en intra, si ce macrobloc risque de sortir de la scène, c'est à dire de disparaître de l'image pour une image suivante. L'invention a pour principal avantage de limiter les coûts de codage d'une séquence d'image. D'autres particularités et avantages de l'invention apparaîtront clairement dans la description suivante donnée à titre d'exemple non limitatif et faite en regard des figures annexées qui représentent: - la figure 1, un macrobloc courant dans une image dont le macrobloc prédit se trouve à l'intérieur de l'image, - la figure 2, un macrobloc courant dans une image dont le macrobloc prédit se trouve à l'extérieur de l'image, - la figure 3, un algorithme mettant en #uvre le procédé selon l'invention. La figure 1 représente une image ou vop 1 et un macrobloc courant 2 à l'intérieur de l'image. A ce macrobloc est associé un vecteur mouvement 4 qui permet de définir un macrobloc prédit 3 dans l'image reconstruite précédente (selon l'ordre de codage), image non représentée sur la figure. Le vecteur mouvement 4 qui correspond au mouvement estimé du macrobloc courant 2 est exploité pour prédire la position de ce macrobloc courant dans l'image suivante. Il est ainsi supposé que le mouvement se poursuit d'une image à l'autre. Le déplacement correspondant au vecteur mouvement 4 est ainsi appliqué au macrobloc courant 2 pour fournir une nouvelle position de macrobloc référencée 6 sur la figure. Il s'agit de la position prédite du macrobloc courant ou macrobloc prédit pour l'image suivante. Deux cas peuvent se présenter: Soit le macrobloc prédit se trouve intégralement ou partiellement dans l'image. C'est le cas de la figure 1. Dans ce cas, aucune restriction de codage n'est imposée au macrobloc courant. Le codeur décide du mode de codage du macrobloc. Il n'y a aucune contrainte liée à l'analyse de la position du macrobloc prédit. Le macrobloc peut être codé en mode intra pour un rafraîchissement intra comme indiqué précédemment. Soit le macrobloc prédit se trouve en totalité à l'extérieur de l'image. C'est le cas de la figure 2 où le macrobloc prédit 6 est à l'extérieur de l'image 1. Dans ce dernier cas, le mode de codage du macrobloc courant 2 est modifié selon l'une ou l'autre (ou plusieurs) des manières suivantes: - le mode de codage en intra forcé, c'est à dire par rafraîchissement, est interdit. Le codage intra est toujours possible dans le cas ou le codage en intra du macrobloc est moins coûteux que le mode de codage en inter. - dans le cas ou le codage met en #uvre un algorithme de rafraîchissement périodique des macroblocs par un codage en intra, cette procédure est réinitialisée pour le macrobloc courant. Afin de répartir le coût de codage d'une image généré par un rafraîchissement en intra, les macroblocs ne sont pas forcés simultanément en intra mais à tour de rôle. Le rafraîchissement se fait macroblocs par macroblocs. En général, des compteurs affectés à chaque macrobloc de l'image et réalisant un comptage en boucle sont initialisés de manière aléatoire, par exemple lors du codage de la première image de la séquence ou du GOP (Group Of Pictures) en intra, de manière à répartir ce coût de codage. Le comptage en boucle se fait sur un nombre N correspondant par exemple au nombre d'images constituant un GOP, le compteur est incrémenté à chaque codage et le rafraîchissement a lieu lors du passage de N à zéro. Dans le cadre de l'invention, le compteur est réinitialisé lorsque le mode de codage en intra forcé est interdit. Ainsi, l'algorithme, en repositionnant le compteur à zéro, interdit le rafraîchissement du macrobloc correspondant à la position du macrobloc courant, pour les prochaines images. Le rafraîchissement ne se fera qu'après N nouveaux codages pour cette position de macrobloc. - le pas de quantification pour le codage des coefficients du macrobloc est forcé à une valeur haute ou à une valeur supérieure à celle calculée de manière à diminuer le coût de codage du macrobloc qui est sensé disparaître lors des images suivantes. Ce forçage peut dépendre du type de transmission, une transmission bas débit autorisant une qualité de décodage moindre et donc une plus grande tolérance sur les effets de blocs générés par des pas de quantification trop différents d'un macrobloc à un macrobloc voisin. La valeur du pas de quantification peut également prendre en compte le nombre d'images de type B encadrées par l'image courante et l'image suivante de type P, le codage des macroblocs d'une image de type B faisant référence aux macroblocs d'une image de type P. - dans le cas de codage exploitant les extensions à l'échelonnabilité, par exemple de type SNR (signal to noise ratio) telles que fgs (fine granularity scalability), le codage consistant en une couche inférieure de codage des coefficients DCT et une ou plusieurs couches d'amélioration, pour le raffinement des coefficients DCT, la procédure de codage de ces coefficients pour les couches d'amélioration est modifiée en réduisant le nombre de bits de codage, par exemple en attribuant moins de plans de bits que prévu. La figure 3 représente un algorithme mettant en oeuvre le procédé selon l'invention. Une première étape 7 consiste en un calcul des vecteurs mouvement pour un macrobloc courant. L'étape suivante 8 calcule la position de ce macrobloc courant pour l'image suivante, en extrapolant le déplacement du macrobloc à partir du vecteur mouvement qui lui est affecté. L'étape suivante 9 détermine si la position du macrobloc est à l'intérieur ou à l'extérieur de l'image. Dans le cas où la position prédite du macrobloc se trouve au moins partiellement à l'intérieur de l'image, l'étape suivante est l'étape 10 qui détermine les paramètres de codage du macrobloc de manière classique. Dans le cas où la position prédite du macrobloc se trouve entièrement à l'extérieur de l'image, l'étape suivante est l'étape 11 qui force des paramètres de codage comme indiqué précédemment. Par exemple, le mode de codage en intra est interdit. L'étape suivante, qui est l'étape 12, effectue le codage du macrobloc en fonction des paramètres de codage déterminés à l'étape précédente. L'algorithme proposé peut prendre la forme d'un bloc additionnel ajouté à un encodeur pour réaliser les étapes complémentaires 8, 9 et 11, afin d'améliorer la distribution de bits parmi les différents macroblocs d'une image ou d'un VOP. De plus, le procédé peut être utilisé dans la décision du mode de codage intra pour les P-VOP dans le contexte de robustesse eux erreurs. La prédiction du macrobloc est effectuée à partir d'une estimation de mouvement. Celle-ci peut correspondre à une recopie simple du vecteur mouvement affecté au macrobloc courant en réalisant donc une extrapolation de ce mouvement. Le mouvement peut également être estimé de manière plus complexe, par exemple à partir d'une modélisation du champ de mouvement. La norme MPEG 4 définit des marqueurs de resynchronisation dans le flux de données MPEG, les données entre deux marqueurs correspondant à un paquet vidéo. Une variante de l'invention consiste à tenir compte de la position prédite des macroblocs pour le choix de position du marqueur dans le flux de données. Ainsi, il peut être décidé de ne pas placer de marqueur de resynchronisation avant un macrobloc qui devrait sortir de l'image ou précédant de trop près un tel macrobloc. Il est en effet peu efficace de resynchroniser le flux de données sur des données à venir d'importance moindre. Les données relatives à un macrobloc sortant ne seront effectivement pas utilisées par la suite pour prédire et reconstruire des macroblocs. Ce positionnement peut également prendre en compte la densité, dans le flux, des macroblocs devant sortir de l'image ou dépendre de l'écart, dans le flux, entre un marqueur et un tel macrobloc. Egalement, la taille d'un paquet situé entre deux marqueurs de resynchronisation, peut être calculée en fonction du nombre de macroblocs devant sortir de l'image, qu'il renferme. La taille peut être plus grande pour des paquets contenant beaucoup de macroblocs prévus sortir de l'image et peut être réduite dans le cas contraire. La perte d'information est en effet moins gênante pour des macroblocs devant sortir de l'image et la resynchronisation peut en conséquence être plus espacée pour des paquets contenant de tels macroblocs. Les codages de type MPEG exploitent différents types d'échelonnabilité tels que l'échelonnabilité spatiale pour améliorer la précision de codage. Le codage fgs (fine granularity scalability) par exemple exploite plusieurs niveaux de résolution pour le codage des macroblocs. Une variante de l'invention consiste à faire dépendre cette précision de codage relative à l'amélioration de précision, du statut du macrobloc, c'est à dire du fait que le macrobloc a une position prédite à l'extérieur de l'image ou pas. Il est ainsi possible de diminuer le nombre de couches ou de coder plus grossièrement les coefficients dct pour ces couches d'amélioration, pour les macroblocs dont la position prédite est à l'extérieur de l'image ou du vop. REVENDICATIONS 1 Procédé de codage selon la norme MPEG, caractérisé en ce qu'il calcule (8,9) la position prédite du macrobloc courant à coder dans la prochaine image ou vop, en considérant l'ordre d'affichage des images, et en ce qu'un paramètre de codage du macrobloc (10,11) dépend du fait que le macrobloc prédit se trouve ou non à l'extérieur de la prochaine image ou vop. 2 Procédé selon la revendication 1, caractérisé en ce que le paramètre de codage est le mode de codage en inter ou en intra. 3 Procédé selon la revendication 1, caractérisé en ce que le paramètre de codage est le pas de quantification des coefficients TCD du macrobloc. 4 Procédé selon la revendication 2 ou 3, caractérisé en ce que le paramètre de codage prend également en compte le nombre d'images B ou B-vops situés entre l'image ou vop P courant et l'image ou vop P suivant. 5 Procédé selon la revendication 1, caractérisé en ce que l'algorithme de masquage d'erreur, pour un macrobloc, basé sur un rafraîchissement aléatoire des macroblocs par codage en intra de ces macroblocs, prend en compte la position prédite de ce macrobloc dans la prochaine image ou vop. 6 Procédé selon la revendication 1, caractérisé en ce que le positionnement de marqueurs de resynchronisation définissant le début des paquets vidéo codant les images, dans la norme MPG4, prend en compte la position prédite d'un macrobloc. 7 Procédé selon la revendication 1, caractérisé en ce que la taille des paquets vidéo codant les images et définis par la position de marqueurs de resynchronisation, dans la norme MPG4, prend en compte le nombre de macroblocs qu'ils renferment ayant une position prédite à l'extérieur de l'image. 8 Procédé selon la revendication 1, caractérisé en ce que lors d'un codage exploitant les extensions à l'échelonnabilité correspondant à une ou plusieurs couches de codage supplémentaires pour améliorer la précision de codage, cette couche est supprimée ou le nombre de ces couches est réduit pour les macroblocs dont la position prédite se trouve à l'extérieur de l'image suivante.