Brevet FR2897213A1 — publié le 20070810

L'invention concerne un procédé de codage par bloc d'image d'une séquence d'images vidéo. Le domaine est celui de la compression de données vidéo. On s'intéresse en particulier aux schémas de compression par blocs réalisant un codage adaptatif bitrame/trame au niveau macrobloc, plus connu sous l'acronyme MBAFF, de l'anglais MacroBlock Adaptive Frame/Field. Les standards concernés sont par exemple le standard MPEG 4 part 2 et MPEG 4 part 10. io L'estimation de mouvement de type appariement de blocs , plus connue sous l'appellation anglaise block matching , est mise en oeuvre, dans un codeur, pour exploiter la corrélation temporelle des images d'une séquence d'images. Elle permet le calcul de blocs prédits soustrait à un bloc courant pour un codage en mode inter. Du fait des différents choix 15 dans les paramètres de codage proposés par les normes, par exemple la taille du bloc d'image pour l'estimation de mouvement, l'image ou les images de référence à partir desquelles sont effectuées ces estimations de mouvement, la trame supérieure, la trame inférieure ou l'image bi-trame pour ces images de référence, etc., une sélection étant ensuite effectuée en 20 fonction de critères tels que le coût de codage, un nombre important de calculs de mouvement doit être réalisé par le codeur. Ces calculs sont coûteux en termes de temps et capacité de traitement. Les estimateurs de mouvement doivent être spécifiques au codeur ou du moins être compatibles de la multitude de choix proposés dans la norme et mis en oeuvre par le 25 codeur. Par exemple dans le cas de la norme H264 ou MPEG4 part 10, un champ de vecteurs mouvement est calculé pour chaque taille de bloc (4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16) et pour chaque image de référence. La figure 1 représente différents types de partition d'un macrobloc de taille 30 16 lignes de 16 échantillons, pour un codeur exploitant cette norme. La première ligne correspond à une découpe horizontale et verticale d'un macrobloc de taille 16x16 respectivement en deux sous-macroblocs de taille 16x8 et 8x16 et en une découpe en quatre sous-macroblocs de taille 8x8. La deuxième ligne correspond à ces mêmes découpes en blocs mais à un 35 niveau inférieur, pour un sous-macrobloc de taille 8x8. Le terme image désigne par la suite une image bitrame (frame en anglais) ou une trame (field en anglais). L'image bitrame est divisée en deux trames entrelacées qui sont montrées à intervalle différent. La première trame dans le temps, appelée trame supérieure ou trame impaire, apparaît sur chaque ligne impaire de l'image, tandis que la deuxième trame d'image, appelée trame inférieure ou trame paire, apparaît sur chaque ligne paire de l'image. Les deux trames forment l'image bi-trame. Dans le cas du codage par paire de macroblocs ou codage adaptatif trame/bitrame, ou codage MBAFF, l'estimateur de mouvement io fournit, par macrobloc, 1 champ de vecteurs mouvement pour l'image bitrame, 2 champs de vecteurs mouvement pour les trames. La figure 2 représente un exemple d'un tel codage MBAFF. Des macroblocs 16x16 référencés 1 et 2 appartiennent à une première trame supérieure représentée en trait plein vertical, et un 15 macrobloc 16x16 référencé 3 appartient à la trame supérieure suivante représentée en trait plein. Des macroblocs 16x16 référencés 4 et 5 appartiennent à une première trame inférieure représentée en trait pointillé, et un macrobloc 16x16 référencé 6 appartient à la trame inférieure suivante représentée en 20 trait pointillé. Les paires de macroblocs en mode bitrame, référencées 7 et 8, sont constituées de deux macroblocs 16x16, chacun appartenant à l'image entrelacée ou image bi-trame, et donc eux-mêmes constitués d'une succession de lignes des trames supérieures et inférieures, premières 25 trames pour la paire référencée 7 et trames suivantes pour la paire référencée 8. Si la paire de macroblocs est codée en mode bi-trame, référence 8, le vecteur mouvement associé référencé 9 pointe vers l'image entrelacée précédente, désignant une paire de macroblocs 16x32 référencé 30 7. Les paires de macroblocs en mode trame, référencées (1, 4), (2, 5) ou (3, 6) sont constituées d'un macrobloc supérieur contenant les lignes de la trame supérieure ou trame impaire et un macrobloc inférieur contenant les lignes de la trame inférieure ou trame paire. Si la paire de 35 macroblocs (3, 6) est codée en mode trame, le vecteur mouvement associé au macrobloc supérieur peut pointer soit sur un macrobloc de la trame supérieure ou trame impaire précédente, vecteur référencé 10, soit sur un macrobloc de la trame inférieure ou trame paire précédente, vecteur référencé 11. Le vecteur mouvement associé au macrobloc inférieur peut pointer soit sur un macrobloc de la trame paire précédente, vecteur référencé 12, soit sur un macrobloc de la trame impaire précédente, vecteur référencé 13. Ainsi, pour un macrobloc, 3 vecteurs mouvement sont calculés, pour une image de référence, pour chacun des 5 sous macroblocs de taille 16x16, 16x8 et 8x16 et chacun des 9 blocs constituant les 4 sous macroblocs de taille 8x8. io La figure 3 représente un exemple d'une portion de séquence d'images vidéo numérotées de 1 à 8, selon l'ordre d'affichage ou ordre temporel. Les images indicées 0 et 4, respectivement des images de référence intra lo et prédictive P4, bornent 3 images biprédictives B,, B2, B3. Toujours dans le cas d'un encodeur faisant appel à la norme 15 H264 ou MPEG 4 part 10, le processus d'encodage des images biprédictives ou de type B est plus complexe que celui des images prédictives de type P. Les images de type B possèdent 2 listes d'images de prédiction ou images de référence, appelées liste 0 et liste 1, alors que les images de type P n'en possèdent qu'une, liste 0, induisant par là même plus 20 de calculs. D'autre part, le nombre de modes de codage pour les macroblocs de type B est plus important, mode biprédictif, mode direct etc., augmentant d'autant la complexité de l'algorithme de décision de codage. Ainsi, pour des macroblocs de taille 16x16, dans le mode multiréférences, le nombre de vecteurs mouvement est multiplié par le nombre 25 d'images de référence. Du fait que, en mode MBAFF, la décision de mode de codage, par exemple basée sur la mesure du coût de codage et de la distorsion associée au mode, est effectuée au niveau de la paire de macroblocs et non au niveau du macrobloc comme pour la norme MPEG2, alors que les 30 corrélations sont calculées au niveau de chaque macrobloc, les combinaisons possibles et la charge de calcul en découlant sont très importantes. Un but de l'invention est de pallier les inconvénients précités. 35 L'invention a pour objet un procédé de codage par blocs d'images d'une séquence d'images vidéo effectuant, au niveau d'une paire de macroblocs, une sélection d'un mode de codage parmi une pluralité de modes de codage en intra ou en inter, le macrobloc pouvant être codé en mode trame ou en mode bi-trame selon qu'il est relatif respectivement à une seule trame ou à deux trames, le codage d'un macrobloc d'une image de type biprédictif exploitant au moins deux images de référence, caractérisé en ce que le mode trame ou bitrame est sélectionné selon les étapes suivantes : -détermination d'un vecteur mouvement associé au macrobloc colocalisé du macrobloc à coder et se trouvant dans l'image de référence suivante, macrobloc à coder prédéfini, pour la sélection, en mode trame ou io bitrame, - mise à l'échelle du vecteur mouvement en fonction des distances temporelles entre les images de référence correspondant à ce vecteur mouvement et entre l'image courante, trame ou bitrame selon le mode prédéfini, et une image de référence choisie parmi les images de 15 référence correspondant à ce vecteur mouvement, - détermination du macrobloc temporel dans l'image de référence choisie, désigné par le vecteur mouvement mis à l'échelle attribué au macrobloc à coder, et de son mode de codage trame ou bitrame, - sélection du mode de codage trame ou bitrame du macrobloc 20 temporel (25) pour le codage pour le codage du macrobloc courant. Selon une mise en oeuvre particulière, le procédé est caractérisé en ce que le vecteur mouvement associé au macrobloc colocalisé est le vecteur mouvement associé au bloc se trouvant en haut et à gauche du macrobloc partitionné. 25 Selon une mise en oeuvre particulière, le procédé est caractérisé en ce que le vecteur mouvement associé au macrobloc colocalisé est le vecteur mouvement calculé, lors de la détermination du mode de codage et partitionnement de ce macrobloc, pour le bloc de dimension 16x16. 30 Selon une mise en oeuvre particulière, le procédé est caractérisé en ce que l'image de référence choisie est l'image de référence précédente ou l'image de référence suivante la plus proche de l'image courante. Le procédé peut être mis en oeuvre dans un procédé de 35 codage d'une image de type biprédictive selon la norme MPEG4 part 10. 30 35 Selon une mise en oeuvre particulière, le procédé est caractérisé en ce qu'une deuxième image de référence est choisie parmi les images de référence correspondant au vecteur mouvement, pour une deuxième mise à l'échelle du vecteur mouvement, en ce qu'un deuxième macrobloc temporel est déterminé dans cette deuxième image de référence, à partir de ce deuxième vecteur mouvement mis à l'échelle, en ce la différence inter image est calculée entre le macrobloc courant et chacun des macroblocs temporels et en ce que le codage du macrobloc courant est effectué en exploitant, pour la sélection du mode de codage, le même mode io de codage trame ou bi-trame que celui du macrobloc temporel ayant la plus faible différence inter image. Selon une mise en oeuvre particulière, le procédé est caractérisé en ce que le mode de codage trame ou bitrame est sélectionné au niveau d'une paire de macroblocs, en ce que la sélection est effectuée 15 pour un des macroblocs de la paire de macroblocs et en ce que le mode sélectionné est affecté aux deux macroblocs de la paire. Selon une mise en oeuvre particulière, le procédé est caractérisé en ce que le mode de codage trame ou bitrame est sélectionné au niveau d'une paire de macroblocs, en ce que la sélection est effectuée 20 pour chacun des macroblocs de la paire de macroblocs et en ce que, lorsque le mode sélectionné est différent pour les macroblocs, le mode de codage retenu pour la paire de macroblocs est celui correspondant au macrobloc donnant la différence inter image la plus faible entre le macrobloc de la paire courante et le macrobloc temporel correspondant. 25 Le codage adaptatif bitrame/trame apporte un gain substantiel en compression. Grâce à l'invention, cette fonctionnalité est exploitée avec un coût raisonnable en terme de mise en oeuvre en utilisant des résultats de calcul déjà effectués dans les images de référence. Une présélection du mode de codage trame ou bitrame (MBAFF) est effectuée au niveau de chaque paire de macroblocs appartenants à des images de type biprédictif (B slices). Cette présélection permet de réduire considérablement le nombre de calculs à effectuer dans le module de décision macrobloc permettant de choisir le mode de codage. La solution proposée part du principe qu'il y a une continuité dans le mouvement. Elle consiste à ne pas recalculer la décision de codage 5 i0 bitrame/trame pour les macroblocs des images à codage biprédictif mais à récupérer cette décision dans les macroblocs des images de référence, de type P ou I, diminuant ainsi la complexité de mise en oeuvre du codage adaptatif bitrame/trame pour les macroblocs de type B. 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, des partitions d'un macrobloc et sous-macrobloc, - la figure 2, un exemple du mode MBAFF, - la figure 3, une séquence d'images de type I, P et B, - la figure 4, un exemple du mode direct temporel. Les modes de codage des images biprédictives exploitent des modes de prédiction par exemple décrits dans le document ISO/IEC FCD 15 14496-10, paragraphe 10, intitulé decoding process for B slices . II s'agit du mode intra, du mode direct, du mode biprédictif exploitant des images de référence de la liste 0 et/ou de la liste 1, du mode prédictif liste 0 ou liste 1 exploitant une image de la liste 0 ou de la liste 1. Ces modes de prédiction peuvent être choisis séparément pour chacun des sous-macroblocs ou blocs 20 d'image du macrobloc à coder. Ce même paragraphe 10 décrit le mode de prédiction direct, pour les macroblocs appartenant à une image de type B, qui permet de ne pas transmettre d'information de mouvement. Le mode direct spatial consiste, par exemple, à calculer un 25 prédicteur 16x16, vecteur mouvement associé au macrobloc de 16x16 pixels, en exploitant des vecteurs mouvement des macroblocs voisins, en effectuant par exemple un filtrage médian de ces vecteurs voisins. Le mode direct temporel consiste, dans une technique, à exploiter la même structure de bloc que celle du macrobloc colocalisé de la 30 première image dans la liste 1 des images de référence. Pour chaque bloc du macrobloc courant, les vecteurs mouvement de la liste 0 et de la liste 1, c'est à dire les vecteurs mouvement pointant respectivement dans l'image de référence de la liste 0 et l'image de référence de la liste 1, sont obtenus en mettant à l'échelle les vecteurs mouvement de la liste 0 du bloc 35 colocalisé correspondant. La figure 4 représente un exemple de l'exploitation d'un mode direct temporel pour la sélection du mode de codage MBAFF d'un macrobloc courant référencé 21 d'une image courante biprédictive B. Les lignes verticales pointillées notées fo et f, représentent les trames paires et impaires et les lignes verticales pleines à l'intérieur représentent l'image bitrame correspondante. Les différentes étapes du processus sont décrites ci-après. Les macroblocs de l'image de type B peuvent être codés, dans le cas ou le mode adaptatif trame/bitrame existe, en mode trame ou bien en io mode bitrame, également connus sous l'appellation respective de mode champ et mode image. Le macrobloc colocalisé, dans la première image de référence stockée dans la liste 1 des images de référence, c'est à dire le macrobloc se trouvant au même emplacement, dans cette image, que le macrobloc 15 courant de l'image courante, est référencé 22 sur la figure. Le vecteur mouvement mvCol attribué au macrobloc colocalisé, et permettant de déterminer le macrobloc de prédiction dans l'image de référence de la liste 0, est référencé 23. Dans l'exemple de la figure 4, le macrobloc courant et donc le macrobloc colocalisé sont choisis en mode bitrame. 20 A partir du vecteur de mouvement 23 attribué au macrobloc colocalisé est calculé le vecteur de mouvement mvLO référencé 24. Il s'agit d'une mise à l'échelle du vecteur de mouvement du macrobloc colocalisé : mvLO = DistScaleFactor * mvCol avec DistScaleFactor = TDB/TDD, quotient de la distance temporelle entre l'image 25 courante et l'image de référence passée par la distance temporelle entre l'image de référence future et l'image de référence passée, mvCol, vecteur de mouvement de la première partition du macrobloc colocalisé, correspondant au bloc situé en haut et à gauche du macrobloc partitionné, numéroté 0 dans la norme. 30 Ce vecteur mouvement mvLO mis à l'échelle est ensuite appliqué au macrobloc courant pour déterminer la position du macrobloc temporel 25 dans l'image de référence passée de la liste O. L'information de codage trame/bitrame relative au codage de ce macrobloc temporel 25 est récupérée pour être exploitée par le macrobloc courant. 35 L'idée consiste ainsi à aller chercher l'information de codage trame/bi-trame dans les macroblocs des images de référence dans la direction du mouvement, pour ne pas avoir à la recalculer. Le processus de prédiction direct temporel permet de récupérer le mode de codage trame/bitrame dans le macrobloc pointé par le vecteur de mouvement temporel direct. Le vecteur mouvement mvCol est le vecteur mouvement associé au macrobloc colocalisé. Ce macrobloc est en fait partitionné en blocs comme représenté sur la figure 1 et une partition a été retenue pour son codage avec des vecteurs mouvement attribués aux blocs de la partition comme mentionné plus haut. Le vecteur mvCol associé au macrobloc est io choisi comme étant le vecteur associé au bloc 0, c'est à dire le bloc en haut et à gauche du macrobloc. Il serait tout aussi envisageable de choisir, comme vecteur de mouvement associé au macrobloc, entre autres, le vecteur de mouvement calculé pour le bloc de dimension 16x16 lors des opérations de corrélations, c'est à dire les opérations de sélection du mode 15 de codage de ce macrobloc colocalisé. Si le macrobloc colocalisé a été encodé en mode intra, alors la paire de macroblocs courante est encodée conformément au mode de codage trame ou bitrame de ce macrobloc intra. Le processus de prédiction direct temporel n'est pas déroulé. 20 La boucle d'encodage de l'encodeur, s'il est conforme au standard H264 et donc s'il supporte le mode direct temporel, réalise tous les calculs nécessaires à la réalisation de cet algorithme, le processus étant en partie similaire à ce mode de codage direct temporel. 25 Le raisonnement précédent a été fait en considérant le macrobloc courant en mode bitrame. Il aurait été tout aussi envisageable de partir d'un macrobloc courant en mode trame. C'est en effet une hypothèse de départ pour déterminer si le macrobloc courant sera effectivement codé en mode trame. Les vecteurs mouvement mvLO sont mis à l'échelle en 30 fonction de cette hypothèse de départ, c'est à dire en prenant en compte la distance temporelle entre l'image de référence exploitée de la liste 0, trame ou bitrame et la trame ou bitrame de l'image courante B correspondant à l'hypothèse choisie, c'est à dire au mode trame ou bitrame du macrobloc courant. 35 Par hypothèse également, le macrobloc supérieur de la paire de macroblocs est choisi comme macrobloc courant et le mode sélectionné pour ce macrobloc est appliqué au macrobloc inférieur de la paire de macroblocs. La détermination du mode de codage trame ou bitrame est donc effectuée, dans l'exemple donné, au niveau d'un macrobloc de la paire de macroblocs. Une variante de l'invention consiste à raisonner au niveau de la paire de macroblocs courante pour la sélection du mode de codage trame ou bitrame. La paire de macroblocs colocalisée nous donne alors deux vecteurs mouvements vers l'image de référence de la liste 0, un pour chaque macrobloc. On a alors deux macroblocs temporels pour une paire de macroblocs courante. L'algorithme de décision du mode de codage trame ou io bitrame peut alors être le suivant : - si les deux macroblocs temporels sont codés dans le même mode de codage trame ou bitrame, ce mode est sélectionné pour la paire de macroblocs courante. - si les deux macroblocs temporels sont codés dans des modes 15 de codage trame ou bitrame différents, le mode sélectionné est celui du macrobloc qui fournit la différence inter image la plus faible. Une variante de l'invention consiste à exploiter non pas le macrobloc temporel dans une image de référence de la liste LO mais dans une image de référence de la liste L1. Il s'agit du macrobloc pointé par le 20 vecteur de prédiction temporel appelé mvL1, vecteur pointant du macrobloc courant vers l'image la plus proche de l'image courante et appartenant à la liste 1 des images de référence et obtenu par mise à l'échelle du vecteur associé au macrobloc colocalisé : mvL1 = (TDD-TDB)/TDD * mvCol. Une autre variante consiste à exploiter le mode de codage 25 trame/bitrame du macrobloc colocalisé ou le mode de codage du macrobloc pointé par un des vecteurs de mouvement calculés dans la boucle d'encodage lors du codage du macrobloc colocalisé. Il est par exemple possible de sélectionner le mode de codage du macrobloc pointé par le vecteur de mouvement calculé pour le mode inter 16x16 du bloc colocalisé, 30 vecteur trame ou bitrame. Il est également possible de prendre en compte les modes de codage du macrobloc désigné par le vecteur mouvement mvLO et du macrobloc désigné par le vecteur mouvement mvL1 pour décider du mode de codage trame/bitrame du macrobloc courant. 35 Une autre possibilité consiste à prendre en compte les modes de codage du macrobloc colocalisé et du macrobloc désigné par un vecteur io mouvement 23 associé au macrobloc colocalisé dans l'image de référence de la liste LO. L'algorithme de décision du mode de codage trame ou bitrame peut alors être le suivant : - si les deux macroblocs sont codés dans le même mode de 5 codage trame ou bitrame, ce mode est sélectionné pour la paire de macroblocs courante. - si les deux macroblocs sont codés dans des modes de codage trame ou bitrame différents, le mode sélectionné est celui du macrobloc qui fournit la différence inter image la plus faible. io Une variante consiste, sur la base du processus de prédiction temporel direct, à utiliser une combinaison des vecteurs mvLl et mvLO pour mettre en oeuvre le procédé. Par exemple, il est possible de choisir le type de codage trame ou bitrame en fonction de la zone pointée par le vecteur mouvement mvLl ou le vecteur mouvement mvLO, celui qui fournit la 15 différence inter-image, aussi appelée résidu, la plus faible. REVENDICATIONS 1 Procédé de codage par blocs d'images d'une séquence d'images vidéo effectuant, au niveau d'une paire de macroblocs, une sélection d'un mode de codage parmi une pluralité de modes de codage en intra ou en inter, le macrobloc pouvant être codé en mode trame ou en mode bi-trame selon qu'il est relatif respectivement à une seule trame ou à deux trames, le codage d'un macrobloc d'une image de type biprédictif exploitant au moins deux images de référence, caractérisé en ce que le mode trame ou io bitrame est sélectionné selon les étapes suivantes : - détermination d'un vecteur mouvement (23) associé au macrobloc colocalisé (22) du macrobloc à coder (21) et se trouvant dans l'image de référence suivante, macrobloc à coder (21) prédéfini, pour la sélection, en mode trame ou bitrame, 15 - mise à l'échelle (24) du vecteur mouvement (23) en fonction des distances temporelles entre les images de référence correspondant à ce vecteur mouvement et entre l'image courante, trame ou bitrame selon le mode prédéfini, et une image de référence choisie parmi les images de référence correspondant à ce vecteur mouvement, 20 - détermination du macrobloc temporel (25) dans l'image de référence choisie, désigné par le vecteur mouvement mis à l'échelle (24) attribué au macrobloc à coder (21), et de son mode de codage trame ou bitrame, - sélection du mode de codage trame ou bitrame du macrobloc 25 temporel (25) pour le codage pour le codage du macrobloc courant (21). 2 Procédé de codage selon la revendication 1, caractérisé en ce que le vecteur mouvement (23) associé au macrobloc colocalisé (22) est le vecteur mouvement associé au bloc se trouvant en haut et à gauche du 30 macrobloc partitionné. 3 Procédé de codage selon la revendication 1, caractérisé en ce que le vecteur mouvement (23) associé au macrobloc colocalisé (22) est le vecteur mouvement calculé, lors de la détermination du mode de codage 35 et partitionnement de ce macrobloc, pour le bloc de dimension 16x16.4 Procédé de codage selon la revendication 1, caractérisé en ce que l'image de référence choisie est l'image de référence précédente ou l'image de référence suivante la plus proche de l'image courante. 5 Procédé de codage selon la revendication 1, caractérisé en ce qu'il est mis en oeuvre dans un procédé de codage d'une image de type biprédictive selon la norme MPEG4 part 10. 6 Procédé de codage selon la revendication 1, caractérisé en ce qu'une deuxième image de référence est choisie parmi les images de référence correspondant au vecteur mouvement, pour une deuxième mise à l'échelle du vecteur mouvement (23), en ce qu'un deuxième macrobloc temporel est déterminé dans cette deuxième image de référence, à partir de ce deuxième vecteur mouvement mis à l'échelle, en ce la différence inter image est calculée entre le macrobloc courant et chacun des macroblocs temporels et en ce que le codage du macrobloc courant est effectué en exploitant, pour la sélection du mode de codage, le même mode de codage trame ou bi-trame que celui du macrobloc temporel ayant la plus faible différence inter image. 7 Procédé selon la revendication 1, caractérisé en ce que le mode de codage trame ou bitrame est sélectionné au niveau d'une paire de macroblocs, en ce que la sélection est effectuée pour un des macroblocs de la paire de macroblocs et en ce que le mode sélectionné est affecté aux deux macroblocs de la paire. 8 Procédé selon la revendication 1, caractérisé en ce que le mode de codage trame ou bitrame est sélectionné au niveau d'une paire de macroblocs, en ce que la sélection est effectuée pour chacun des macroblocs de la paire de macroblocs et en ce que, lorsque le mode sélectionné est différent pour les macroblocs, le mode de codage retenu pour la paire de macroblocs est celui correspondant au macrobloc donnant la différence inter image la plus faible entre le macrobloc de la paire courante et le macrobloc temporel correspondant.35