Brevet FR2929797A1 — publié le 20091009

PROCEDE ET DISPOSITIF DE CODAGE D'UNE SEQUENCE D'IMAGES 1. Domaine de l'invention L'invention se rapporte au domaine général du codage de séquences d'images. L'invention concerne plus particulièrement un procédé de codage d'une séquence d'images sous la forme d'un flux scalable et un dispositif de codage implémentant le procédé de codage. 2. Etat de l'art Le codage scalable permet de représenter une même séquence d'images dans un unique flux sous la forme de plusieurs format chacun d'eux étant adapté à des terminaux différents ayant des capacités différentes en termes d'affichage et/ou de puissance de calcul et/ou de mémoire et/ou d'interfaces réseaux. En référence aux figures 1 et 2, il est connu un dispositif de codage 1 apte à coder une séquence SO d'images initiales IO sous la forme d'un flux scalable F comprenant une couche de base et au moins une couche d'amélioration. II est connu qu'un tel dispositif de codage 1 comprend une entrée 8 pour recevoir une séquence SO d'images initiales IO et un module de sous-échantillonnage 10 apte à sous échantillonner chaque image IO de ladite séquence SO pour générer une séquence S1 d'images modifiées 11 de résolution inférieure à celle des images initiales 10. Le dispositif de codage 1 comprend en outre un premier module de codage 12 apte à coder les images 11 de la séquence modifiée S1 en un premier flux F1 connu sous le nom de couche de base et un second module de codage 14 apte à coder les images de la séquence initiale SO en un second flux FO connu sous le nom de couche d'amélioration à partir notamment de données de codage (p.ex. données de mouvement, données résiduelles, données de texture ...) issues du codage des images de la séquence modifiée S1. Le dispositif de codage 1 comprend en outre relié aux sorties des premier et second modules de codage 12 et 14, un module de multiplexage 16 apte à multiplexer la couche de base F1 et la couche d'amélioration FO en un uniquement flux F transmis via la sortie 18. Selon une variante connue, illustrée par la figure 3, le module 10 de sous échantillonnage des images IO de séquence d'images initiale SO est adapté pour sous échantillonner une partie seulement de chaque image IO de ladite séquence SO afin de générer la séquence S1 d'images modifiées 11, laquelle partie est délimitée dans l'image IO par une fenêtre de découpage W0. Il est courant que les modules de codage 12 et 14 imposent des contraintes au module de sous-échantillonnage 10 pour définir la fenêtre de découpage W0. Les images IO étant découpées en blocs de pixels ne se recouvrant pas, une contrainte est par exemple que le coin en haut à gauche de la fenêtre de découpage WO soit aligné sur la grille de blocs dans 10. Un autre exemple de contrainte impose que le coin en haut à gauche de la fenêtre de découpage WO soit déplacé entre deux images consécutives IO de la séquence initiale SO d'un multiple de 2 pixels selon l'axe horizontal et l'axe vertical. Dans ces cas, la fenêtre de découpage WO ne peut pas être positionnée n'importe où dans les images IO et notamment pas de manière optimale au regard du contenu visuel de ces images 10. Par ailleurs, de telles contraintes diminuent le confort visuel d'un utilisateur visualisant les images modifiées 11 générées à partir des images IO et de la fenêtre W0. 3. Résumé de l'invention L'invention a pour but de pallier au moins un des inconvénients de l'art antérieur. A cet effet, l'invention concerne un procédé de codage d'une séquence d'images sous la forme d'un flux scalable comprenant une couche de base et une couche d'amélioration. Le procédé comprend les étapes suivantes : - déterminer dans chaque image de la séquence, dite première séquence d'images, une fenêtre de découpage; - sous-échantillonner, pour chaque image de la première séquence, la partie d'image délimitée par la fenêtre de découpage de telle sorte à construire une seconde séquence d'images ; et - coder la seconde séquence d'images comme couche de base du flux scalable et la première séquence d'images comme couche d'amélioration du flux scalable. Selon un premier aspect de l'invention, la fenêtre de découpage est déterminée dans une image de la première séquence selon les étapes suivantes : - déterminer dans l'image une première fenêtre de découpage; - déterminer une seconde fenêtre de découpage entourant la première fenêtre de découpage de telle sorte que la seconde fenêtre de découpage soit conforme à au moins une contrainte prédéfinie imposée par l'étape de codage, la fenêtre de découpage étant la seconde fenêtre de découpage. Selon un autre aspect avantageux de l'invention, la seconde fenêtre de découpage est la plus petite fenêtre de découpage entourant la première fenêtre de découpage et conforme à la au moins une contrainte prédéfinie imposée par l'étape de codage. Selon un troisième aspect avantageux de l'invention, le procédé de codage comprend en outre une étape de codage, dans la couche de base, de données représentatives de la distance de chacun des bords de la première fenêtre de découpage par rapport à chacun des bords correspondant de la fenêtre de découpage entourant la première fenêtre de découpage . L'invention concerne également, un dispositif de codage d'une séquence d'images sous la forme d'un flux scalable comprenant une couche de base et une couche d'amélioration. Le dispositif de codage selon l'invention comprend: - des moyens de recadrage pour déterminer dans chaque image de la séquence, dite première séquence d'images, une fenêtre de découpage; - des moyens de sous-échantillonnage pour sous-échantillonner, pour chaque image de la première séquence, la partie d'image délimitée par la fenêtre de découpage de telle sorte à construire une seconde séquence d'images ; et - des moyens de codage pour coder la seconde séquence d'images comme couche de base du flux scalable et la première séquence d'images comme couche d'amélioration du flux scalable. Préférentiellement, les moyens de recadrage du dispositif de codage comprennent : - des premiers moyens pour déterminer dans une image de la première séquence une première fenêtre de découpage; et - des seconds moyens pour déterminer une seconde fenêtre de découpage entourant la première fenêtre de découpage de telle sorte que la seconde fenêtre de découpage soit conforme à au moins une contrainte prédéfinie imposée par les moyens de codage, la fenêtre de découpage étant la seconde fenêtre de découpage. 4. Listes des fiqures L'invention sera mieux comprise et illustrée au moyen d'exemples de modes de réalisation et de mise en oeuvre avantageux, nullement limitatifs, 10 en référence aux figures annexées sur lesquelles : û la figure 1 est une représentation schématique d'un dispositif de codage selon l'état de l'art; - la figure 2 représente une image initiale IO et une image 11 générée à partir de l'image IO par un procédé de sous échantillonnage selon l'état de l'art; 15 û la figure 3 représente une image initiale IO et une image 11 générée à partir de l'image IO par un procédé de sous échantillonnage selon une variante du procédé de sous échantillonnage de l'état de l'art; - la figure 4 est une représentation schématique d'un dispositif de codage selon l'invention; 20 û la figure 5 est un diagramme d'un procédé de codage selon l'invention ; - la figure 6 est un schéma illustrant le procédé de codage selon l'invention; - la figure 7 représente une image de la couche de base générée selon l'invention et une fenêtre de découpage dans ladite image; - la figure 8 est une représentation schématique d'un dispositif d'affichage 25 selon l'invention; et - la figure 9 est un diagramme d'un procédé d'affichage selon l'invention. 5. Description détaillée de l'invention En référence à la figure 4, l'invention concerne un dispositif de codage 30 2 apte à coder une séquence SO d'images initiales IO sous la forme d'un flux scalable F comprenant une couche de base et au moins une couche d'amélioration. Une séquence d'images comprend deux images ou plus de deux images. Les modules du dispositif de codage 2 selon l'invention identiques à ceux du dispositif de codage 1 selon l'état de l'art sont identifiés sur la figure 4 avec les mêmes références numériques que celles utilisées en lien avec la figure 1. Sur la figure 4, les modules représentés sont des unités fonctionnelles, qui peuvent ou non correspondre à des unités physiquement distinguables. Par exemple, ces modules ou certains d'entre eux peuvent être regroupés dans un unique composant, ou constituer des fonctionnalités d'un même logiciel. A contrario, certains modules peuvent éventuellement être composés d'entités physiques séparées. Le dispositif de codage 2 selon l'invention comprend l'entrée 8 pour recevoir une séquence SO d'images initiales IO et un module de sous-échantillonnage 20 apte à sous échantillonner une partie de chaque image IO de ladite séquence initiale SO pour générer une séquence S1 d'images modifiées 11 de résolution inférieure à celle des images initiales 10. La partie d'image IO en question est préalablement déterminée par le module de sous- échantillonnage 20 avant le sous-échantillonnage proprement dit. Le dispositif de codage 2 comprend en outre le premier module de codage 12 apte à coder les images de la séquence modifiée S1 en un premier flux F1 connu sous le nom de couche de base et le second module de codage 14 apte à coder les images de la séquence initiale SO en un second flux FO connu sous le nom de couche d'amélioration à partir notamment de données de codage issues du codage des images de la séquence modifiée S1. Le dispositif de codage 2 comprend en outre reliés aux sorties des premier et second modules de codage 12 et 14, le module de multiplexage 16 apte à multiplexer la couche de base F1 et la couche d'amélioration FO en un uniquement flux F. Le module de sous-échantillonnage 20 est adapté par rapport au module 10 correspondant du dispositif de codage 1 selon l'état de l'art. Le module de sous-échantillonnage 20 est apte à mettre en oeuvre les étapes E10 et E16 du procédé de codage selon l'invention décrit ci-après en lien avec la figure 5. A l'étape E10, chaque image initiale IO de la séquence SO est sous- échantillonnée par le module 20 du dispositif de codage 2. A cet effet, l'étape E10 est elle-même divisée en une série d'étapes numérotées E101 à E103. A 1"étape El 01, une première fenêtre de découpage WO est déterminée dans chaque image 10. Une telle fenêtre, représentée sur la figure 6, est préférentiellement déterminée par un procédé de recadrage automatique tel que connu dans l'état de l'art. Un exemple simple d'un tel procédé de recadrage automatique consiste à calculer pour une image donnée une carte de saillance représentative de l'intérêt perceptuel de chacun des zones de l'image en question. Il positionne ensuite une fenêtre de taille prédéfinie inférieure à la taille de l'image initiale de telle sorte quelle soit centrée sur le point de l'image le plus saillant. Un exemple de procédé de recadrage automatique plus complexe est décrit dans la demande de brevet EP 06117768.9 publiée le 31.01.2007 sous le numéro 1748385. L'invention n'est toutefois aucunement limitée à tel ou tel procédé de recadrage automatique. Selon une variante, la première fenêtre de découpage WO est déterminée dans une première image de la séquence selon un procédé de recadrage automatique. Selon cette variante, la première fenêtre de découpage WO est déterminée, dans chacune des autres images de la séquence, comme étant celle qui a la même position que celle de la première fenêtre de découpage WO dans la première image. Selon une autre variante, la première fenêtre de découpage WO est déterminée selon un procédé de recadrage automatique dans une première image et une seconde image de la séquence distante de la première image. Selon cette variante, la première fenêtre de découpage WO est déterminée dans chaque image intermédiaire, i.e. chaque image de la séquence entre la première et la seconde image, par un procédé d'interpolation de la position de la fenêtre de découpage. L'étape E101 permet de définir une fenêtre de découpage WO pertinente d'un point de vue contenu visuel, i.e. comprenant les informations de l'image IO les plus pertinentes visuellement pour l'utilisateur. La fenêtre ainsi définie est optimale visuellement, mais ne répond pas nécessairement à des contraintes imposées par les modules de codage 12 et 14. A l'étape E102, la première fenêtre de découpage WO est étendue de telle sorte à former une seconde fenêtre de découpage W1 laquelle entoure la première fenêtre de découpage WO et de telle sorte à répondre aux contraintes imposées par les modules de codage 12 et 14. Préférentiellement, la seconde fenêtre de découpage W1 est la plus petite fenêtre répondant aux critères définis précédemment à savoir la plus petite fenêtre qui entoure la première fenêtre de découpage WO et qui répond aux contraintes imposées par les modules de codage 12 et 14. La figure 6 illustre un exemple particulier de réalisation. Sur cette figure, la seconde fenêtre de découpage W1 est la plus petite fenêtre qui entoure la première fenêtre de découpage WO et qui est alignée sur la grille de blocs de pixels de l'image IO contrainte imposée par les modules de codage 12 et 14. A l'étape E103, une image modifiée 11 est générée par sous-échantillonnage de la partie d'image IO comprise dans la seconde fenêtre de découpage W1. Cette étape est réitérée pour toutes les images de la séquence SO. Tout procédé de sous-échantillonnage de l'état de l'art peut être utilisé à cet effet comme par exemple un procédé basé sur un filtrage bilinéaire ou encore sur un filtrage par un filtre MPEG4 de coefficients {-1,0,9,16}. A l'étape E12, les images modifiées 11 sont codées en un flux F1, i.e. la couche de base. Selon un exemple particulier de réalisation, les images modifiées 11 sont codées conformément à la norme de codage vidéo H.264/ MEPG-4 AVC telle que définie dans le document ISO/IEC 14496-10. Cette étape de codage connue de l'homme du métier des codeurs vidéo n'est pas décrite davantage. A l'étape E14, les images initiales IO sont codées à partir de données de codage générées par l'étape de codage E12 en un flux F0, i.e. la couche d'amélioration. En effet, les données images des pixels des images IO situées dans la fenêtre de découpage WO sont très corrélées aux données images des pixels des images correspondantes 11. Il est donc particulièrement avantageux de coder les images initiales IO à partir de données de codage générées par l'étape de codage E12. Selon un exemple particulier de réalisation, les images initiales IO sont codées conformément à la norme de codage vidéo SVC, extension scalable de MPEG-4 AVC, telle que définie dans le document ISO/IEC 14496-10 amendement 3. Cette extension scalable a également été publiée sous la référence JVT-X201 lors de la réunion du groupe de travail JVT commun à l'ISO/IEC MPEG et à l'ITU-T VCEG qui a eu lieu à Genève du 29 juin au 5 juillet 2007. Cette étape de codage connue de l'homme du métier des codeurs vidéo n'est pas décrite davantage. A l'étape E16, les flux FO et F1 sont multiplexés de telle sorte à former un unique flux F scalable transmis via la sortie 18. Une telle étape de multiplexage est connue de l'homme du métier des codeurs vidéo n'est pas décrite davantage. On peut se référer notamment au document JVTX201.Selon une variante particulièrement avantageuse, les distances dl, d2, d3 et d4 de chacun des bords de la version sous-échantillonnée de la première fenêtre de découpage dans l'image 11 à chacun des bords de l'image 11 sont également codées dans la couche de base F1 à l'étape E12. Ces distances sont représentées sur la figure 7 à l'aide de flèches. Selon un exemple particulier de réalisation le flux scalable F est conforme à la norme SVC. Dans ce cas, les images modifiées 11 sont codées à l'étape E12 conformément au standard MPEG 4 AVC et les images initiales IO sont codées à l'étape E14 conformément à la norme SVC. Dans ce cas particulier, les distances dl, d2, d3 et d4 définies précédemment sont codées dans la couche de base à l'aide des outils de découpage définis au point 7.4.2.1 de ISO/IEC 14496-10 :2004 ou encore dans le document JVT-X201 dans la section 7.4.2.1.1 intitulée � Sequence parameter set semantics � à savoir : - frame_cropping_flag ; - frame_crop_left_offset, frame_crop_right_offset, frame_crop_top_offset et fram e_crop_bottom_offset. En lien avec la figure 8, l'invention concerne également un dispositif d'affichage 3 apte à une version de taille réduite de la séquence initiale SO d'images 10. Sur la figure 8, les modules représentés sont des unités fonctionnelles, qui peuvent ou non correspondre à des unités physiquement distinguables. Par exemple, ces modules ou certains d'entre eux peuvent être regroupés dans un unique composant, ou constituer des fonctionnalités d'un même logiciel. A contrario, certains modules peuvent éventuellement être composés d'entités physiques séparées. A cet effet, le dispositif d'affichage selon l'invention comprend une entrée 30 sur laquelle il reçoit le flux scalable F. II comprend en outre un module 32 apte à extraire du flux scalable F la couche de base F1, un module de décodage 34 apte à décoder la couche de base F1 pour reconstruire des images Ir1 et également les distances d1, d2, d3 et d4. II comprend en outre un module d'affichage 36 relié à un écran 38 apte à sélectionner dans chacune des images Ir1 reconstruites la partie d'image délimitée par la fenêtre de découpage WO qui aura été préalablement définie à l'aide des distances dl, d2, d3 et d4. En lien avec la figure 9, l'invention concerne également un procédé 5 d'affichage. A l'étape E20 du procédé d'affichage, la couche de base F1 est extraite du flux scalable F par le module 32 du dispositif d'affichage 3. A l'étape E22, la couche de base F1 est décodée et les images Ir1 sont reconstruites par le module de décodage 34. Lors de cette même étape les 10 distances d1, d2, d3 et d4 sont également décodées. A l'étape E24, dans chacune des images Ir1 reconstruites une fenêtre de découpage WO est définie par le module d'affichage 36 à l'aide des distances d1, d2, d3 et d4 décodées à l'étape E22. A l'étape E26, la partie I'1 de chacune des images Ir1 délimitée par la 15 fenêtre de découpage WO est affichée sur l'écran 38 en lieu et place des images Ir1 reconstruites. Revendications1. Procédé de codage d'une séquence d'images sous la forme d'un flux scalable comprenant une couche de base et une couche d'amélioration comprenant les étapes suivantes : - déterminer (El01, E102) dans chaque image de ladite séquence, dite première séquence d'images, une fenêtre de découpage (W1); - sous-échantillonner (E103), pour chaque image de ladite première séquence, la partie d'image délimitée par la fenêtre de découpage (W1) de telle sorte à construire une seconde séquence d'images ; - coder (E12, E14, E16) ladite seconde séquence d'images comme couche de base du flux scalable et ladite première séquence d'images comme couche d'amélioration du flux scalable ; ledit procédé étant caractérisé en ce que ladite fenêtre de découpage (W1) est déterminée dans une image de ladite première séquence selon les étapes suivantes : - déterminer (E101) dans ladite image une première fenêtre de 20 découpage (WO); et - déterminer (E102) une seconde fenêtre de découpage entourant ladite première fenêtre de découpage (WO) de telle sorte que ladite seconde fenêtre de découpage soit conforme à au moins une contrainte prédéfinie imposée par l'étape de codage (E12, E14, E16), ladite fenêtre de découpage (W1) de 25 ladite image étant ladite seconde fenêtre de découpage. 2. Procédé de codage selon la revendication 1, dans lequel ladite seconde fenêtre de découpage est la plus petite fenêtre de découpage entourant ladite première fenêtre de découpage (WO) et conforme à ladite au moins une 30 contrainte prédéfinie imposée par l'étape de codage (E12, E14, E16) 3. Procédé de codage selon la revendication 1 ou 2, lequel comprend en outre une étape de codage, dans la couche de base, de données représentatives de la distance de chacun des bords de ladite première fenêtrede découpage (WO) par rapport à chacun des bords correspondant de ladite fenêtre de découpage (W1) entourant ladite première fenêtre de découpage (WO). 4. Dispositif de codage (2) d'une séquence d'images sous la forme d'un flux scalable comprenant une couche de base et une couche d'amélioration comprenant: - des moyens de recadrage (20) pour déterminer dans chaque image de ladite séquence, dite première séquence d'images, une fenêtre de découpage (W1); - des moyens de sous-échantillonnage (20) pour sous-échantillonner, pour chaque image de ladite première séquence, la partie d'image délimitée par la fenêtre de découpage (W1) de telle sorte à construire une seconde séquence d'images ; - des moyens de codage (12,14) pour coder ladite seconde séquence d'images comme couche de base du flux scalable et ladite première séquence d'images comme couche d'amélioration du flux scalable; ledit dispositif de codage (2) étant caractérisé en ce que les moyens de recadrage (20) comprennent : - des premiers moyens pour déterminer dans une image de ladite première 20 séquence une première fenêtre de découpage (WO); et - des seconds moyens pour déterminer une seconde fenêtre de découpage entourant ladite première fenêtre de découpage (WO) de telle sorte que ladite seconde fenêtre de découpage soit conforme à au moins une contrainte prédéfinie imposée par les moyens de codage (12, 14), ladite fenêtre de 25 découpage (W1) de ladite image étant ladite seconde fenêtre de découpage.