Brevet FR3023045A1 — publié le 20160101

SYSTEME DE CODAGE DE SEQUENCE VIDEO AVEC MODIFICATION DE LA DECOUPE DES IMAGES A CODER L'invention concerne un procédé et un système de codage d'une 5 séquence d'images découpées en partitions et s'applique au domaine de la compression vidéo. La norme de compression HEVC (High Efficiency Video Coding) permet d'obtenir une amélioration du taux de compression vidéo par rapport à la norme actuelle AVC (Advanced Video Coding) pouvant aller jusqu'à 10 cinquante pourcents, au prix d'une complexité de calcul plus importante. En effet, pour conserver une qualité vidéo équivalente, le volume de calcul est multiplié par quatre. Il est aussi à noter que la fréquence d'affichage a doublé pour atteindre soixante images par seconde. Par ailleurs, le format d'affichage UHD (Ultra High Definition) 15 comprenant quatre fois plus de pixels que le format HD (High Definition) est supporté par la norme HEVC. Les innovations apportées dans les normes de codage de nouvelle génération telles que HEVC et VP9 induisent des volumes de calcul significatifs devant être supportés par les systèmes de codage. 20 Un découpage spatial de l'image peut être mis en oeuvre afin de tenir compte du fait que les ressources de calcul du système de codage (processeurs, mémoires) sont limitées. Cette technique consiste à découper les images en plusieurs partitions afin de répartir les calculs sur plusieurs 25 modules de calcul, un module de calcul étant responsable du traitement d'au moins une partition. A titre d'exemple, la compression vidéo selon la norme HEVC inclut un découpage des images en plusieurs partitions rectangulaires indépendantes désignées par le mot anglais « tile ». C'est également le cas 30 dans le cadre de la norme AVC dans laquelle une partition correspond à une tranche d'image désignée par le mot anglais « slices ». Dans la suite de la description, l'ensemble des variables permettant de définir les partitions de découpe d'une image est désigné par l'expression découpe d'image. La compression d'une image découpée provoque des ruptures de codage et de qualité aux frontières des partitions. Ces ruptures résultent notamment de l'application d'algorithmes de type « bord d'image » qui agissent aux frontières des partitions. En effet, ces algorithmes privilégient un codage intra (codage spatial) sur les frontières alors que les images d'une séquence vidéo sont majoritairement codées en inter (codage temporel). En outre, ces défauts sont accentués notamment par le type de codage utilisé (intra ou inter), la discontinuité des pixels de prédiction, la rupture du champ de vecteurs de mouvement, les niveaux de quantifications qui peuvent être différents d'une partition codée à l'autre. L'oeil humain perçoit fortement cette différence de codage lorsque les frontières sont fixes dans le temps, ce qui dégrade la perception de l'utilisateur. Une fois que la frontière est détectée par l'observateur, celui-ci la cherchera ensuite inconsciemment et la retrouvera facilement. Cela peut être particulièrement dommageable lors du visionnage de vidéo de haute qualité au format UHD (Ultra-High Definition). Dans ce cas, le spectateur s'attend à une qualité irréprochable et la présence de frontières visibles ne peut pas être acceptée. Plusieurs techniques appartenant à l'état de la technique permettent d'améliorer le codage d'une vidéo partitionnée. Une première technique existante met en oeuvre un échange de pixels entre les codages des partitions. Dans ce cas, chaque matériel de codage en charge d'une partition échange avec les partitions adjacentes les pixels voisins des frontières. Cet échange permet d'optimiser et d'homogénéiser les décisions de codage aux frontières. Cette technique a comme inconvénient majeur d'être couteuse en bande passante mémoire car elle requiert l'échange d'un grand volume de données entre les codeurs. En effet, les codeurs échangent les pixels décodés, c'est-à-dire le résultat du décodage interne. Une deuxième technique existante s'appuie sur une amélioration de la quantification aux frontières. Afin de diminuer les défauts de codage aux bords des partitions, le débit ou la quantité d'information allouée à ces bords est augmenté. Ceci permet de baisser la quantification et d'améliorer le codage. Cependant, en considérant un débit constant pour l'image, l'augmentation de débit sur les bords des partitions implique une baisse de débit et de qualité sur le reste de l'image. Un des buts de l'invention est de remédier à des insuffisances et 10 inconvénients de l'état de la technique et d'y apporter des améliorations. A cet effet l'invention a pour objets un système de codage d'au moins une séquence vidéo composée d'une suite d'images, le système comprenant : un module de génération d'une découpe d'image déterminée par au moins une variable définissant définissant un ensemble d'au moins 15 deux partitions pour découper les images de la séquence vidéo avant leur codage, ladite variable étant mise à jour au moins toutes les dix secondes ; un module de découpage des images de la séquence vidéo mettant en oeuvre la découpe d'image générée par le module de génération ; un ensemble d'au moins un module de codage, un module de codage étant 20 configuré pour encoder au moins l'une des partitions de l'image courante à coder selon la découpe d'image générée. Selon un aspect de l'invention, la découpe d'images est mise à jour périodiquement. Selon un aspect de l'invention, la durée entre deux mises à jour peut 25 être exprimée en un nombre donné d'images. Alternativement, la découpe d'images est mise à jour à des instants choisis aléatoirement de manière à ce qu'une durée Dmaj entre deux mises à jour successives soit comprise entre une valeur minimum prédéfinie Dmin et une valeur maximum prédéfinie Dmax. 30 A titre d'exemple, Dmin et Dmax sont respectivement égales à une et trois secondes. Les instants de mise à jour peuvent être signalés à l'image près avec une durée minimum d'une image entre deux mises à jour. A titre d'exemple, les découpes de codage sont composées d'un nombre N constant de partitions, la taille desdites partitions variant d'une 5 mise à jour à l'autre de la découpe d'image. A titre d'exemple, la découpe de codage utilisée pour le codage des images du flux est choisie à chaque mise à jour parmi un ensemble prédéfini de P découpes de codage comprenant un nombre identique ou différent de partitions. 10 A titre d'exemple, une première unité centrale de traitement met en oeuvre le module de génération, le module de découpage, et au moins un module de codage, les modules de codage restant étant mis en oeuvre par au moins une deuxième unité centrale de traitement CPU. L'invention a aussi pour objet un procédé de codage d'au moins une 15 séquence vidéo composée d'une suite d'images, comprenant les étapes suivantes: génération d'au moins une variable définissant une découpe d'image, une découpe d'image correspondant à un ensemble de N partitions définissant la manière dont les images du flux sont découpées avant d'être codées ; découpage de l'image courante selon la découpe d'image générée ; 20 codage des partitions de la découpe d'image courante ; mise à jour de la découpe d'image au moins tous les dix secondes pour le codage des images suivantes. L'invention a aussi pour objet un programme d'ordinateur comportant des instructions pour l'exécution du procédé de codage décrit précédemment 25 lorsque le programme est exécuté par un module de traitement de données. D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit donnée à titre illustratif et non limitatif, faite en regard des dessins annexés parmi lesquels : 30 la figure 1 donne un exemple de système de codage selon l'invention ; la figure 2 présente un exemple d'une partition de découpe d'image dont les dimensions peuvent varier ; les figures 3a et 3b représentent deux images appartenant à un flux vidéo ainsi que les découpes d'image leurs étant associées pour deux instants de mise à jour successifs ; les figures 4a et 4b représentent deux découpes d'images pour deux instants de mise à jour successifs, l'ensemble des frontières des partitions étant modifié entre ces deux instants ; la figure 5 donne un exemple d'implémentation du système selon l'invention. La figure 1 donne un exemple de système de codage selon l'invention. Le système 110 est composé d'un ensemble de modules. Dans cette description, un module est un bloc fonctionnel. En d'autres termes, un module correspond à l'ensemble des moyens matériels et/ou logiciels permettant la mise en oeuvre d'une ou plusieurs fonctions. Dans ce mode de réalisation, le système de codage reçoit en entrée une séquence vidéo 106 composée d'une suite d'images et comprend un module de génération de découpe d'image 100, un module de découpage 101, un ensemble de modules de codage 102-104. Le système 110 peut également comprendre un module 107 permettant de construire un flux de sortie 108. Le module de génération 100 a pour objectif de déterminer et de mettre à jour la découpe d'image utilisée. Comme explicité précédemment, une découpe d'image correspond à un ensemble de variables définissant un ensemble d'au moins deux partitions permettant de découper les images de la séquence vidéo 106 avant leur codage. Une caractéristique importante de l'invention est que la découpe d'image est modifiée au moins toutes les dix secondes de manière à ce que les frontières entre partitions ne restent pas statiques. La découpe d'image peut être mise à jour périodiquement, par 5 exemple toutes les deux secondes, cinq secondes, sept secondes ou dix secondes. Plus la fréquence de mise à jour est importante, moins l'observateur a le temps de repérer les frontières entre les partitions de la découpe d'image générée. La contrepartie est que l'implémentation du système devra tenir compte d'un échange de données de contrôle et d'une 10 gestion de flux de données plus complexe entre le module de découpage 101 et les modules de codage 102-104. Alternativement, la découpe d'image peut être mise à jour régulièrement mais sans période prédéfinie de manière à ce que la durée Dmaj(n) entre deux instants successifs de mises à jours Tmaj(n-1) et Tmaj(n) 15 soit comprise dans une plage de valeurs [Dmin ; Dmax]. Dans cet exemple, Dmin représente la durée minimum acceptable entre deux instants successifs de mise à jour et Dmax représente la durée maximum acceptable entre deux instants successifs de mise à jour. Dans un mode de réalisation, Dmin peut être choisie égale à une seconde et Dmax égale à trois secondes. 20 Avantageusement, le tirage aléatoire d'une valeur de Dmaj permet d'ajouter une composante aléatoire sur le positionnement des frontières. Dans un mode de réalisation, les deux découpes d'image générées par le module 101 à deux instants successifs de mise à jour Tmaj(n-1) et Tmaj(n) sont choisies de manière à ce que toutes les frontières entre 25 partitions soient déplacées. Pour cela, la découpe d'image peut être modifiée en faisant varier la dimension et/ou le nombre des partitions la composant. Les différentes découpes d'image générées par le module 100 peuvent être composées d'un nombre N constant de partitions. Dans ce cas, c'est la taille desdites partitions qui varie d'une mise à jour à l'autre. A titre 30 d'exemple et comme cela est illustré avec la figure 2, les dimensions horizontales et verticales de toutes ou partie des partitions 203 de la découpe d'image peuvent varier 200, 201 d'un instant de mise à jour à l'autre. A titre d'exemple, deux découpes d'images distinctes de six partions chacune peuvent être utilisées, le changement de l'une à l'autre se 5 produisant de manière cyclique. Dans un autre mode de réalisation, la découpe de codage utilisée pour le codage des images du flux est choisie à chaque mise à jour parmi un ensemble prédéfini de P découpes d'image. Le nombre N de partition peut être identique d'une découpe d'images à l'autre ou bien différent. 10 Avantageusement, le fait de choisir la découpe d'image à appliquer parmi un ensemble prédéfini de P découpes d'image permet de réduire la complexité calculatoire et de simplifier le fonctionnement du système. Dans une autre alternative, la découpe d'image peut être générée en tenant compte du contenu vidéo. Ainsi, une frontière de partition peut être 15 déplacée de manière à éviter une forme donnée, pour ne pas couper en deux un visage par exemple. A titre d'exemple, un filtre de Sobel peut être utilisé pour cela, ce filtre permettant la mise en oeuvre d'une détection de contours. Dans une autre alternative, la découpe d'image peut être générée en 20 tenant compte de la charge de calcul des modules de codage 102-104. Le système comprend également un module de découpage 101 des images de la séquence vidéo 106 mettant en oeuvre la découpe d'image générée par le module de génération 100. Ce module 101 utilise notamment comme données d'entrées les images du flux vidéo à coder 106 et la 25 découpe d'images 111 choisie par le module de génération 100. Le résultat de cette découpe correspond à un ensemble de partitions 112-114. Les partions 112-114 sont ensuite transmises à un ensemble d'au moins un module de codage 102-104. Un module de codage a pour fonction d'encoder au moins l'une des N partitions de l'image courante à coder selon 30 la découpe d'image générée. Les partitions encodées peuvent ensuite être transmises à un module de génération de flux 107. Ce module a par exemple pour fonction de multiplexer N flux correspondant aux partitions encodées ainsi qu'un flux 109 de syntaxe permettant au décodeur de séparer les flux associés à chaque partition pour les décoder. Dans cet exemple, c'est le premier module de codage 102 qui est génère le flux de syntaxe. L'homme du métier peut déterminer sans effort particulier d'autres configurations possibles pour générer le flux de syntaxe. Les figures 3a et 3b représentent deux images appartenant à un flux vidéo ainsi que les découpes d'image leurs étant associées pour deux instants de mise à jour successifs. La première image 300 présente pour un premier instant de mise à jour une première découpe d'image et la deuxième image 301 donne pour un second instant de mise à jour une seconde découpe d'image, les frontières dans l'ancienne découpe ayant été modifiées étant présentées en pointillés. Dans cet exemple, les deux découpes d'image comprennent six partitions. La mise à jour de la découpe d'image se traduit ici par un déplacement de deux frontières 302, 303. Ainsi, deux partions 310, 311 restent identiques et les quatre autres 312-315 sont modifiées. Les figures 4a et 4b représentent deux découpes d'images pour deux instants de mise à jour successifs. A la différence de l'exemple des figures 3a et 3b dans lequel certaines frontières entre partitions restaient inchangées, dans cet exemple, l'ensemble des frontières est modifié. Ainsi, pour la première image, une première découpe 400 est générée. Pour la deuxième image 420, une deuxième découpe d'image 401 comprenant un nombre de partitions identique à la première découpe d'image 400, 402 est générée. Dans cet exemple, l'ensemble des frontières des différentes partitions varie. La figure 5 donne un exemple d'implémentation du système selon l'invention. Dans cet exemple, le système comprend N unités centrales de traitement (CPU) 501-503. Une première unité centrale de traitement 501 met en oeuvre le 5 module de génération 100, le module de découpage 101 et un premier module de codage 102 en charge par exemple de coder la première partition de la découpe d'image générée. Le système comprend également N-1 unités centrales de traitement CPU 502-503, chacune de ces unités de traitement étant responsable du codage de l'une des partions (autre que la première qui 10 est traitée par la première unité CPU 501). Les unités CPU peuvent communiquer entre elles par exemple via un bus de communication 500 ou par réseau IP (Internet Protocol). L'homme du métier peut sans effort se rendre compte que d'autres architectures peuvent être envisagées, en utilisant par exemple des 15 composants électroniques dédiés de type ASIC (Application-Specific Integrated Circuit), des composant programmable de type FPGA (Field-Programmable Gate Array) ou d'autres types de composants dont le nombre et l'utilisation peut varier d'une mise en oeuvre à l'autre. REVENDICATIONS1- Système de codage d'au moins une séquence vidéo composée d'une suite d'images, le système comprenant : - un module (100) de génération d'une découpe d'image déterminée par au moins une variable définissant un ensemble d'au moins deux partitions pour découper les images de la séquence vidéo avant leur codage, ladite variable étant mise à jour au moins toutes les dix secondes ; - un module (101) de découpage des images de la séquence vidéo mettant en oeuvre la découpe d'image générée par le module de génération; un ensemble (102-104) d'au moins un module de codage, un module de codage étant configuré pour encoder au moins l'une des partitions de l'image courante à coder selon la découpe d'image générée. 2- Système de codage selon la revendication 1 dans lequel le module (101) de découpage des images est configuré pour mettre à jour ladite découpe d'image périodiquement. 3- Système de codage selon la revendication 1 dans lequel le module (101) de découpage des images est configuré pour mettre à jour la découpe à jour à des instants choisis aléatoirement de manière à ce qu'une durée Dmaj entre deux mises à jour successives soit comprise entre une valeur minimum prédéfinie Dmin et une valeur maximum prédéfinie Dmax. 4- Système de codage selon la revendication 3 dans lequel Dmin et Dmax prédéfinies au sein du module (101) de découpage des images sont respectivement égales à une et trois secondes. - Système de codage selon l'une des revendications précédentes dans lequel le module (101) de découpage des images est configuré pour composer les découpes de codage d'un nombre N constant de partitions, la taille desdites partitions variant d'une mise à jour à l'autre de la découpe d'image. 6- Système de codage selon l'une des revendications précédentes dans lequel le module (101) de découpage des images est configuré pour choisir à chaque mise à jour la découpe de codage utilisée pour le codage des images du flux parmi un ensemble prédéfini de P découpes de codage comprenant un nombre identique ou différent de partitions. 7- Système de codage selon l'une des revendications précédentes dans lequel une première unité centrale de traitement (501) est configurée pour mettre en oeuvre le module de génération, le module de découpage, et au moins un module de codage, et au moins une deuxième unité centrale de traitement CPU (502) est configurée pour mettre en oeuvre les modules de codage restants. 8- Prccédé de codage d'au moins une séquence vidéo composée d'une suite d'images, comprenant les étapes suivantes: génération d'au moins une variable définissant une découpe d'image, une découpe d'image correspondant à un ensemble de N partitions définissant la manière dont les images du flux sont découpées avant d'être codées ; découpage de l'image courante selon la découpe d'image générée ; codage des partitions de la découpe d'image courante ; mise à jour de la découpe d'image au moins tous les dix secondes pour le codage des images suivantes.9- Programme d'ordinateur comportant des instructions pour l'exécution du procédé de codage selon la revendication 8, lorsque le programme est exécuté par un module de traitement de données.5