Brevet FR2843252A1 — publié le 20040206

L'invention concerne un procédé de compression de données numériques d'une séquence vidéo composée de plans alternés, à partir de "sprites", et un dispositif pour sa mise en oeuvre. Elle se situe dans le contexte général de la compression vidéo, en particulier dans celui de la norme MPEG-4 vidéo. Le terme "sprite" est défini par exemple dans la norme MPEG 4. Il s'agit d'un objet vidéo (VOP, acronyme de l'anglais Video Object Plane), généralement de dimension supérieure à la vidéo affichée, et persistant avec le temps. Il est utilisé pour représenter des zones plus ou moins statiques, telles que des arrières-plans. Il est codé à partir d'un découpage par macroblocs. Par la transmission d'un sprite représentant l'arrière-plan panoramique et par le codage des paramètres de mouvement décrivant le mouvement de la caméra, paramètres représentant par exemple la transformée affine du sprite, il est possible de reconstruire des images consécutives d'une séquence à partir de ce sprite unique. L'invention concerne en particulier les séquences vidéo comprenant une succession de plans générés de façon alternative à partir de points de vue similaires. Il peut par exemple s'agir d'une séquence d'interview, o l'on voit de façon alternative l'interviewer et l'interviewé, chacun sur un arrière-plan différent mais en grande partie statique. Cette alternance n'est pas limitée à deux points de vue différents. La séquence peut être composée de N plans, issus de Q points de vue différents. Les codages de type classique ne prennent pas en compte ce type de séquence et le cot de codage ou le taux de compression est donc équivalent à celui d'autres séquences. L'approche classique consiste en effet, en chaque début de plan, à coder une image en mode intra, à laquelle succèdent des images en mode prédictif. Si un plan issu d'un premier point de vue apparaît une première fois, suivi d'un plan issu d'un autre point de vue, suivi d'un plan issu du premier point de vue, la première image de ce plan est codée intégralement en mode intra même si une grande partie, constituée de l'arrière-plan de la scène filmée, est similaire aux images du premier plan. Ceci induit un cot de codage important. Une solution connue à ce problème de ré-encodage d'un arrière-plan déjà apparu antérieurement consiste à mémoriser, à chaque détection de changement de plan, la dernière image d'un plan. Au début d'un nouveau plan, la première image est codée par prédiction temporelle ayant pour référence, parmi les images mémorisées, celle qui lui ressemble le plus et qui correspond donc à un même point de vue. Une telle solution peut être considérée comme s'inspirant directement d'un outil connu sous le nom anglais de "multi-frame referencing", disponible par exemple dans le standard MPEG-4 partie 10 en cours de développement. Une telle solution est cependant consommatrice en mémoire, difficile de mise en oeuvre et coteuse. L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de compression de données numériques d'une séquence vidéo, caractérisé en ce qu'il comporte les étapes suivantes: une segmentation de la séquence en plans alternés vidéo, - une classification de ces plans en fonction de points de vue pour obtenir des classes, - une construction d'un sprite ou plan objet video pour une classe qui est une image composée correspondant à l'arrière plan relatif à cette classe, - un regroupement d'au moins deux sprites sur un même sprite ou plan objet vidéo pour former une image appelée grand sprite, - une extraction, pour les plans correspondant au grand sprite, d'objets d'avant-plan d'images de la séquence relatives à ces plans, - un codage séparé du grand sprite et des objets d'avant-plan extraits. Selon une mise en oeuvre particulière, les sprites sont placés l'un sous l'autre pour construire le grand sprite. Selon une mise en oeuvre particulière, le positionnement des sprites est calculé en fonction du cot de codage du grand sprite. Le codage exploité est par exemple le codage MPEG-4, le grand sprite étant alors codé conformément aux sprites définis dans la norme MPEG-4. Selon une mise en oeuvre particulière, le procédé réalise une opération de multiplexage (8) des données relatives aux objets d'avant-plan extraits et des données relatives au grand sprite pour fournir un flux de données. L'invention concerne également le flux de données comprimées pour le codage d'une séquence d'images selon le procédé précédemment décrit, caractérisé en ce qu'il comporte des données de codage du grand sprite associées à des paramètres de déformation applicables au grand sprite et des données de codage des objets d'avant-plan extraits. L'invention concerne également un codeur pour le codage des données selon le procédé précédemment décrit, caractérisé en ce qu'il comporte un circuit de traitement pour la classification des séquence en plans, la construction d'un sprite pour chaque classe et la composition d'un grand sprite par concaténation de ces sprites, un circuit d'extraction d'objets d'avant-plan d'images de la séquence relatives au grand sprite et un circuit de codage pour le codage du grand sprite et des objets d'avant-plan extraits. L'invention concerne également un décodeur pour le décodage de données vidéo d'une séquence vidéo comportant des plans alternés selon le procédé précédemment décrit, caractérisé en ce qu'il comporte un circuit de décodage de données relatives à un grand sprite et de données relatives à des objets d'avant-plan et un circuit de construction d'images à partir des données décodées. Le sprite est utilisé pour décrire l'arrière-plan de l'ensemble des plans vidéo issus d'un même point de vue. Ce sprite est codé une seule fois. Ensuite, pour chaque image de ces plans vidéo, le processus consiste à coder les paramètres de déformation à appliquer au sprite pour reconstruire ce qui est perçu de l'arrière-plan dans l'image. Les objets de premier-plan sont, quant à eux, codés comme des objets vidéo ou VOPs (Video Object Plan) non rectangulaires. Au décodage, ces VOPs sont composés avec l'image de l'arrière-plan pour obtenir l'image finale. Comme la séquence comporte des plans issus de plusieurs points de vue, plusieurs sprites sont nécessaires. Une mise en oeuvre particulière de l'invention consiste à concaténer ces différents sprites en un seul grand sprite qui résume alors les différents arrière-plans de la séquence vidéo complète. Grâce à l'invention, le ré-encodage de l'arrière-plan, à chaque réapparition de cet arrière-plan, est évité. Le cot de compression de ce type de séquences vidéo est réduit par rapport à un schéma de codage classique de type MPEG-2 ou H.263. D'autres particularités et avantages 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 organigramme d'un procédé de codage selon l'invention, - la figure 2, l'intégration d'un sprite dans un grand sprite. - la figure 3, des blocs d'un sprite en bordure haute et basse d'un grand sprite, - la figure 4, un bloc courant dans son environnement pour le codage par prédiction DC/AC. La figure 1 représente un organigramme simplifié d'un procédé de codage selon l'invention. Ce procédé se scinde en deux phases principales: une phase d'analyse et une phase de codage. La phase d'analyse comprend une première étape 1 qui est une étape de segmentation de la séquence vidéo en plans. Une deuxième étape 2 réalise une classification des plans selon le point de vue dont ils sont issus. Une classe est définie comme un sous-ensemble de plans issus d'un même point de vue. La troisième étape effectue la construction d'un sprite "résumant" l'arrière-plan visible dans les plans du sous-ensemble, ceci pour chacun des sous-ensembles. Pour chaque image de chaque plan du sous25 ensemble, des paramètres de déformation, permettant de reconstruire à partir du sprite ce qui est perçu de l'arrière-plan, sont aussi calculés. Une étape de segmentation d'image 4 effectue une segmentation pour chaque image des différents plans, segmentation dans le but de distinguer l'arrièreplan de l'avant-plan. Cette étape permet d'extraire des objets d'avant-plan de chaque image. L'étape 5 est effectuée parallèlement à l'étape 4 et succède donc à l'étape 3. Elle consiste en une concaténation des différents sprites en un seul grand sprite, avec mise à jour des paramètres de déformation prenant en compte la position de chaque sprite dans le grand sprite. La phase de codage succède à la phase d'analyse. Les étapes 6 et 7 succèdent respectivement aux étapes 4 et 5 et génèrent respectivement un train binaire vidéo codant l'avant-plan et un train binaire vidéo codant le grand sprite. Ces trains binaires sont ensuite multiplexés à l'étape 8 pour fournir le train de codage vidéo. L'étape 1 de segmentation en plans effectue une découpe de la séquence en plans vidéo en comparant les images successives, par exemple en exploitant un algorithme de détection de changement de plans. L'étape 2 de classification compare les différents plans obtenus, à partir de leur contenu, et regroupe dans une même classe les plans similaires, c'est à dire issus d'un point de vue identique ou proche. L'étape 4 réalise une extraction des objets d'avant-plan. Des masques binaires successifs sont calculés distinguant, pour chaque image de la séquence vidéo, l'arrière-plan de l'avant-plan. A l'issue de cette étape 4, on dispose donc, pour chaque plan, d'une succession de masques, binaires ou non, indiquant les parties de l'avant-plan et de l'arrièreplan. Dans le cas d'un traitement non binaire, le masque correspond en fait à une carte de transparence. La concaténation des sprites en un grand sprite effectuée à l'étape 5 peut être réalisée de manière à minimiser le cot de codage de ce grand sprite comme proposé ci-dessous. Les informations de codage sont, entre autres, les informations de texture et les informations de déformation. Ces dernières informations sont par exemple les paramètres de déformation successifs qui sont applicables sur le grand sprite, en fonction du temps, et qui sont mises à jour lors de la génération du grand sprite. Ce sont en effet ces paramètres de transformation qui, appliqués au grand sprite, permettront de construire et mettre à jour les fonds nécessaires aux différents plans. Ces 25 informations de codage sont transmises à l'étape 7 pour permettre la génération du train binaire grand sprite. Dans notre réalisation, deux trains binaires sont générés, l'un codant le grand sprite et l'autre codant l'ensemble des objets de l'avant-plan regroupés en un seul objet. Ces trains binaires sont ensuite multiplexés à l'étape 8. Dans la norme MPEG-4, un flux élémentaire est généré par objet. Il est donc tout aussi envisageable de transmettre plusieurs flux élémentaires ou de ne pas effectuer de multiplexage avec le flux relatif au grand sprite pour la transmission des données codées. On remarquera que l'étape 4 d'extraction des objets est en fait très corrélée à l'étape précédente de construction d'un sprite, aussi peut-elle être effectuée simultanément, voire même antérieurement, à la précédente. Egalement, les opérations aux étapes 5 et 7 qui sont décrites en parallèle des opérations aux étapes 4 et 6, peuvent être effectuées successivement ou antérieurement à ces étapes 4 et 6. D'autre part, certaines étapes d'analyse, par exemple celle d'extraction des objets, peuvent être évitées dans le cas ou l'on dispose d'une description de contenu de type MPEG-7 du document vidéo à coder. Comme indiqué précédemment, la concaténation peut se faire en cherchant à minimiser le cot de codage du grand sprite. Cela peut porter sur trois points: la texture, la forme, si elle existe, les paramètres de déformation successifs. Cependant le critère prépondérant est le cot de codage de la texture. Une méthode de minimisation de ce cot est donnée ci-après dans un mode de réalisation exploitant la norme MPEG-4 et effectuant un assemblage des sprites de manière simple, c'est à dire en les superposant horizontalement, méthode qui s'appuie sur le fonctionnement de l'outil de prédiction spatiale DC/AC de MPEG-4. Dans le cadre de la norme MPEG-4, la prédiction spatiale se fait horizontalement ou verticalement. Elle porte de façon systématique sur le premier coefficient DCT de chaque bloc (mode "DC prédiction" en anglais dans la norme) et peut aussi, de manière optionnelle, porter sur les autres coefficients DCT de la première ligne ou première colonne de chaque bloc (mode "AC prédiction"). Il s'agit de déterminer la position optimale de concaténation, c'est à dire de rechercher le minimum de cot de codage de la texture par un assemblage de sprites voisins présentant sur leurs bords mutuels une continuité de texture. Le grand sprite est initialisé par le sprite le plus large. Ensuite, un nouveau grand sprite est calculé intégrant le sprite le plus large parmi les sprites restants, c'est à dire le deuxième sprite le plus large. La figure 2 représente un grand sprite 9 et un deuxième grand sprite 10 à intégrer pour obtenir le nouveau grand sprite, c'est à dire à positionner par rapport au sprite 9. La figure 3 représente le sprite 10 de forme rectangulaire et plus particulièrement la succession de macroblocs 11 en bordure haute et la succession de macroblocs 12 en bordure basse du sprite. Les macroblocs du sprite pris en compte sont les macroblocs non vides adjacents de la bordure haute lorsque le sprite est placé sous le grand sprite puis de la bordure basse lorsque le sprite est placé au dessus du grand sprite. Dans le cas o le sprite n'est pas rectangulaire, seuls les macroblocs non vides en bordure haute et basse du rectangle englobant ce sprite sont pris en compte. Les macroblocs vides sont ignorés. Une transformation cosinus discrète DCT est effectuée sur les macroblocs pris en compte (ou blocs luminance des macroblocs), c'est à dire les macroblocs ou blocs non vides en bordure haute et basse des différents sprites. Les positions haute et basse optimales sont ensuite calculées en minimisant un critère de continuité des textures à la frontière des deux sprites. Pour une position donnée (X,Y) du sprite 10 à intégrer dans le grand sprite 9 précédemment calculé, position définie par des coordonnées (X,Y), une mesure d'un critère global C(X,Y) est calculée. Les positions (X,Y) sont par exemple les coordonnées du coin inférieur gauche du sprite supérieur à intégrer ou les coordonnées du coin supérieur gauche du sprite inférieur à intégrer, l'origine étant définie à partir d'un point prédéterminé du grand sprite. Les coordonnées (X,Y) sont limitées dans la mesure o l'on n'autorise pas le sprite à déborder du grand sprite. Pour cette position donnée (X,Y) et pour toutes les positions testées, on va avoir N blocs voisins avec le grand sprite, soit situés au20 dessus, soit en-dessous. De ces 2 lignes de blocs voisins, c'est à dire celle appartenant au grand sprite et celle appartenant au sprite à intégrer, on considère la ligne des N blocs du dessous. Pour chaque bloc Bk de ces N blocs, on détermine d'abord quelle sera la direction probable de la prédiction DC/AC. La figure 4 représente un bloc courant et les blocs environnants, bloc A à sa gauche, bloc B au dessus de A et bloc C au dessus du bloc courant. Comme le fait un outil de prédiction spatiale DC/AC classique, on détermine les gradients des coefficients DC entre les blocs A et B, | DCADCB |, et entre les blocs C et B, | DCc-DCB |. S'il n'y a pas de bloc voisin A, B ou C, le coefficient DC est pris par défaut égal à 1024. - Si | DCA-DCB | respectivement du bloc supérieur ou du bloc à gauche du bloc courant. On calcule également l'énergie des coefficients AC bruts, c'està-dire avant prédiction: EAU. _I,,,, = XC^2 i=l ACG correspondant aux 7 coefficients AC de la première ligne ou première colonne du bloc courant. On cherche à déterminer la position, pour un bloc courant, qui permet d'avoir la plus faible énergie. L'énergie, pour la partie qui varie en fonction de la position du bloc, dépend de ADC et éventuellement des AAC s'il y a prédiction. Elle est égale à: - lorsqu'il y a prédiction DC/AC, c'est à dire si EAC pred -lorsqu'il n'y a pas prédiction DCIAC, c'est à dire si EACpred > EAC_brut, . E(Bk) = ADC2 Le calcul est effectué pour chacun des blocs N de la ligne et le critère C, pour une position donnée, est alors égal à: N C(X, Y) = LE(Bk) k =I La position optimale (XptY0pt) est celle qui minimise C(X,Y) sur l'ensemble des positions testées. Une fois déterminé le sprite à intégrer et sa position dans le grand sprite, les paramètres de déformation du sprite à intégrer sont mis à jour. Pour ce faire, il est ajouté à la composante translationnelle de ses paramètres de déformation, les coordonnées (XptYopt) du point à partir duquel le nouveau sprite est intégré dans le grand sprite. Dans le cas d'un modèle affine, on a 6 paramètres de déformation (a,b,c,d,e,f), dont 2, a et b, caractérisent la composante translationnelle ou constante de la déformation. Il faut donc transformer a en a+X0pt, et b en b+Yopt. Les nouveaux paramètres de déformation sont insérés dans la liste des paramètres de déformation du grand sprite, à l'endroit o temporellement le plan correspondant s'insère dans la séquence vidéo. Une fois la concaténation terminée, on dispose - d'un grand sprite au lieu de plusieurs sprites - d'une seule liste de paramètres de déformation, au lieu de plusieurs listes correspondant aux différents plans de la séquence vidéo. Les paramètres de déformation successifs permettent de reconstruire, pour chaque image de la séquence vidéo, ce qui est perçu de l'arrière-plan à partir du grand sprite. Le codage peut être effectué en réalisant une passe de préanalyse de la séquence vidéo suivie d'une passe de codage s'appuyant sur cette analyse. Dans le cas spécifique de la norme MPEG-4, le codage 25 consiste à générer un train binaire en utilisant l'outil de codage sprite (cf. partie 7.8 du document ISO/IEC JTC 1/SC 29/WG 11 N 2502, p.189 à 195). Le second train binaire se base sur les outils de codage d'objets non rectangulaires, en particulier l'outil de codage de la forme binaire (cf. partie 7.5 du document ISO/IEC JTC 1/SC 29/WG 11 N 2502, p.147 à 158), et éventuellement en plus l'outil de codage de la transparence (" grey shape " en anglais, cf. partie 7.5.4 du document ISO/IEC JTC 1/SC 29NVG 11 N 2502, p.160 à 162) si les masques ne sont pas binaires. L'invention concerne également les flux de données comprimées résultant du codage d'une séquence d'images selon le procédé précédemment décrit. Ce flux comporte des données de codage du grand sprite associées à des paramètres de déformation applicables au grand sprite et des données de codage des objets des avant-plans pour la reconstruction des scènes. L'invention concerne également les codeurs et décodeurs exploitant un tel procédé. Il s'agit par exemple d'un codeur comportant un circuit de traitement pour la classification des séquence en plans, la construction d'un sprite pour chaque classe et la composition d'un grand sprite par concaténation de ces sprites. Il s'agit aussi d'un décodeur comportant un circuit de construction d'images de plans alternés d'une séquence vidéo à partir du décodage de grands sprites et d'objets d'avant plans. Les applications de l'invention concernent la transmission et le stockage d'images numériques utilisant des normes de codage vidéo avec exploitation de sprites, en particulier la norme MPEG4. il REVENDICATIONS 1 Procédé de compression de données numériques d'une séquence vidéo, caractérisé en ce qu'il comporte les étapes suivantes - une segmentation (1) de la séquence en plans alternés vidéo, - une classification (2) de ces plans en fonction de points de vue pour obtenir des classes, - une construction d'un sprite (3) ou plan objet video pour une classe qui est une image composée correspondant à l'arrière plan relatif à cette classe, - un regroupement (5) d'au moins deux sprites sur un même sprite ou plan objet vidéo, pour former une image appelée grand sprite, - une extraction (4), pour les plans correspondant au grand sprite, d'objets d'avant-plan d'images de la séquence relatives à ces plans, - un codage séparé du grand sprite et des objets d'avant-plan extraits. 2 Procédé selon la revendication 1, caractérisé en ce que les sprites sont placés l'un sous l'autre (5) pour construire le grand sprite. 3 Procédé selon la revendication 2, caractérisé en ce que le positionnement des sprites est calculé en fonction du cot de codage du grand sprite. 4 Procédé selon la revendication 1, caractérisé en ce que le grand sprite est un sprite tel que défini et codé dans la norme MPEG4. Procédé selon la revendication 1, caractérisé en ce qu'il réalise une opération de multiplexage (8) des données relatives aux objets d'avantplan extraits et des données relatives au grand sprite pour fournir un flux de données. 6 Flux de données comprimées pour le codage d'une séquence d'images selon le procédé de la revendication 1, caractérisé en ce qu'il comporte des données de codage du grand sprite associées à des paramètres de déformation applicables au grand sprite et des données de codage des objets d'avant-plan extraits. 7 Codeur pour le codage des données selon le procédé de la revendication 1, caractérisé en ce qu'il comporte un circuit de traitement pour la classification des séquence en plans, la construction d'un sprite pour chaque classe et la composition d'un grand sprite par concaténation de ces sprites, un circuit d'extraction d'objets d'avant-plan d'images de la séquence relatives au grand sprite et un circuit de codage pour le codage du grand sprite et des objets d'avant-plan extraits. 8 Décodeur pour le décodage de données vidéo d'une séquence vidéo comportant des plans alternés selon le procédé de la revendication 1, caractérisé en ce qu'il comporte un circuit de décodage de données relatives à un grand sprite et de données relatives à des objets d'avantplan et un circuit de construction d'images à partir des données décodées.