Système et procédé de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données. 1. DOMAINE DE L'INVENTION L'invention se place dans le domaine de la compression de données (audio et/ou vidéo). Plus précisément, l'invention concerne une technique de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données (aussi appelé encodeur). Dans un mode de réalisation particulier, il est proposé un encodeur temps-réel et contraint en débit et en délai. 2. ARRIÈRE-PLAN TECHNOLOGIQUE Dans la présente description, on définit une trame comme un ensemble de données successives et une scène comme un ensemble de trames successives. Dans le cas particulier de la vidéo, une trame est une image.
La quantité d'information (entropie) contenue dans un signal peut varier énormément au cours du temps. Par exemple, dans le cas d'un signal vidéo, on peut passer d'une scène statique contenant des textures lisses à une scène comportant beaucoup d'objets en mouvement et des textures complexes. Dans ce cas, on observe une augmentation importante de la complexité de la scène, et donc de la quantité d'information. Lorsque l'on met en oeuvre des techniques de compression, cette variabilité naturelle a deux conséquences : - tout d'abord, le débit de données généré par l'encodeur varie en fonction de la scène ; - ensuite, suivant la stratégie de mise en oeuvre choisie, la qualité vidéo subjective de la scène en sortie de l'encodeur peut varier. Des solutions ont été développées pour pallier ces deux problèmes. On connaît des techniques dites de contrôle de débit, permettant de réguler le débit en sortie de l'encodeur. On peut assurer soit un débit constant (CBR, pour « Constant Bit Rate » en anglais), soit un débit variable (VBR, pour « Variable Bit Rate » en anglais). Dans les deux cas, on respecte une contrainte externe, comme par exemple la capacité physique d'un canal de communication. Si cette contrainte externe varie au cours du temps, alors on est dans le cas du débit variable (VBR). On connaît également des techniques de réduction dynamique de l'entropie du signal en amont de l'encodeur. Ces techniques (qui peuvent être utilisées conjointement avec les techniques précitées de contrôle de débit) reposent sur l'utilisation, en amont de l'encodeur : - d'un module de décision de filtrage, qui fournit une consigne de filtrage, - et d'un module de filtrage (aussi appelé filtre), qui filtre le signal en fonction de la consigne de filtrage et fournit un signal filtré à l'encodeur. On définit un filtre comme un module qui transforme les trames d'une scène en appliquant un opérateur. Dans la présente description, les filtres considérés ont pour objectif de diminuer l'entropie des trames. Mais un inconvénient de ces filtres est que la qualité vidéo des trames (en sortie d'encodeur) est altérée.
Pour assurer une qualité vidéo subjective minimum en sortie d'encodeur, une première solution connue (la plus simple) est décrite dans une première partie (cf paragraphe 1.2) de l'article : « A resolution Adaptive Video Compression System » (Serhan Uslubas, Ehsan Maani and Aggelos K. Katsaggelos. Northwestern University, Department of EECS).
Cette première solution connue consiste à filtrer systématiquement, le filtre appliqué étant dans le cas de cet article un redimensionnement (diminution de la résolution d'encodage). Cependant cette première solution connue est sous-optimale, puisque la résolution choisie pourrait être augmentée pour la plupart des scènes (les scènes de faible complexité ne sont pas rendues en pleine résolution). Inversement, si la résolution choisie est trop élevée, certaines scènes pourront ne pas atteindre le niveau de qualité minimum attendu en sortie d'encodeur : il risque d'y avoir des artefacts de qualité non souhaités (effets bloc, image figée, etc.). On peut alors décider d'augmenter le débit de l'encodeur, mais dans ce cas on limite l'efficacité de la compression, ou on ne respecte pas une contrainte externe.
Pour améliorer la flexibilité de leur première solution, les auteurs de l'article précité proposent une deuxième solution décrite dans une deuxième partie de l'article (cf paragraphes 2.1, 2.2 et 2.3). Le principe de cette deuxième solution connue est le suivant : pour chaque bloc de chaque trame, le système effectue deux encodages, l'un en haute résolution (encodage du bloc d'origine) et l'autre en basse résolution (encodage d'un bloc filtré obtenu par diminution de la résolution). Puis le système sélectionne l'un des deux encodage, en prenant comme critère le coût débit-distorsion (RD, pour « Rate-Distorsion » en anglais). Cette deuxième solution connue est efficace mais pas optimale pour les raisons suivantes : - le système proposé intègre un double encodage, ce qui reste une solution coûteuse. De plus, la décision de la résolution est prise pour chaque bloc de chaque trame et le critère utilisé (coût débit-distorsion (RD)) a un coût qui est élevé. Cette deuxième solution augmente significativement le temps d'encodage ; - dans une même trame, des blocs sont encodés en pleine résolution (haute résolution) et d'autres ont subi un redimensionnement. Ce processus compromet l'homogénéité de la qualité de la trame en sortie d'encodeur. Une troisième solution connue est décrite dans l'article « Adaptive downsampling for high-definition video coding » (Jie Dong and Yan Ye. InterDigital Communications, San Diego, CA). Elle améliore la deuxième solution connue en appliquant un redimensionnement (sous-échantillonnage) de l'ensemble de la trame, le redimensionnement choisi étant celui qui fournit le meilleur équilibre entre deux distorsions estimées (distorsion liée à l'encodage et distorsion liée au redimensionnement), et donc celui qui réalise la meilleure performance globale en termes de coût débit-distorsion (RD). Elle résout ainsi le problème d'homogénéité de filtrage. Cependant, la troisième solution connue n'est pas complète pour les raisons suivantes : - le module qui fournit la résolution optimale ne permet pas de le faire de façon automatique. Les auteurs ne proposent pas une solution générique réalisable dans un produit temps-réel niais une solution au cas par cas ; - la formule d'estimation de la distorsion liée à l'encodage est théorique : elle n'est pas ré-applicable car la façon dont les paramètres sont obtenus est inexpliquée. 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique.
Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données (encodeur), permettant d'adapter dynamiquement le filtrage des trames du signal avant encodage, afin d'augmenter la tolérance d'un encodeur aux variations de complexité d'une scène tout en garantissant une qualité minimum en sortie d'encodeur. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique permettant une implémentation en amont d'un encodeur temps-réel et respectant un débit constant (CBR). Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique pouvant être implémentée quelle que soit le format du signal en sortie du module de capture. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui soit simple à mettre en oeuvre et peu coûteuse. 4. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un système de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données, ledit signal comprenant un ensemble de trames successives, ledit système comprenant un module de décision de filtrage, qui fournit une consigne de filtrage, et un module de filtrage, qui filtre le signal en fonction de ladite consigne de filtrage et fournit un signal filtré au dispositif de compression de données. Le système comprend un module d'obtention d'une information de complexité, pour chaque trame du signal, et ledit module de décision de filtrage est adapté pour déterminer ladite consigne de filtrage, pour chaque trame du signal, en fonction entre autres de ladite information de complexité. Le principe général de l'invention consiste donc à obtenir une information de complexité pour chaque trame d'un signal, et à utiliser cette information dans un processus décisionnel qui permet de réduire de façon adaptative (par filtrage) l'entropie de ce signal, afin de satisfaire des contraintes de débit et de qualité attendue en sortie du dispositif de compression (encodeur). Ainsi, ce mode de réalisation particulier de l'invention repose sur une approche tout à fait nouvelle et inventive : - contrairement à la première solution : pas de filtrage systématique ; - contrairement à la deuxième solution connue : pas de décision pour chaque bloc de chaque trame, pas d'utilisation du critère « coût débit-distorsion » ; - contrairement à la troisième solution connue : pas d'utilisation du critère « coût débit-distorsion » (pas de recherche du meilleur équilibre entre une estimation de la distorsion liée à l'encodage et une estimation de la distorsion liée au redimensionnement). Dans une première application particulière du système, la consigne de filtrage est une consigne de résolution, et le module de filtrage est adapté pour effectuer un redimensionnement de chaque trame, en fonction de ladite consigne de résolution. Dans une deuxième application particulière du système, la consigne de filtrage est une consigne de force de filtrage, et le module de filtrage est adapté pour effectuer un filtrage passe-bas de chaque trame, en fonction de ladite consigne de force de filtrage.
Dans une première mise en oeuvre particulière du module d'obtention de l'information de complexité, le module d'obtention de l'information de complexité comprend des moyens d'estimation de complexité, adaptés pour déterminer une complexité estimée K(t) associée à une trame 1(t), et ledit module de décision de filtrage est adapté pour déterminer ladite consigne de filtrage, pour la trame 1(t), en fonction entre autres de ladite complexité estimée K(t).
Ainsi, dans cette première mise en oeuvre, l'information de complexité d'une trame 1(t) est une complexité estimée. Si le modèle d'estimation est convenablement choisi (cf. notamment le cas particulier décrit ci-après), l'estimation de la complexité peut être effectuée en temps réel, et la présente technique peut alors être implémentée en amont d'un dispositif de compression de données (encodeur) temps-réel. Selon une caractéristique particulière, ladite complexité estimée K(t) est définie par : IN v K(t) = Qstepx7x (P(Type 1(k) = T)xCtrame=T(k)) Pi k=0 LJTEEType avec : Qstep un pas de quantification déterminé ; A un facteur de normalisation ; EType = {Inter (P), Intra (I), Inter Bi Prédite (B), Inter Bi Prédite et Référence (Bref)}, est l'ensemble des types de codage possibles, c'est-à-dire l'ensemble des valeurs possibles de la variable T ; P(Type 1(k) = T) la probabilité qu'une trame 1(k) soit de type T; Ctrame=T(k) est un coût estimé d'une trame 1(k) de type T; et 0ÉNÉNmax. Ce modèle d'estimation est compatible avec une implémentation temps-réel. Selon une caractéristique particulière, ledit coût estimé C(t) de la trame 1(t) est 20 défini par : Nbloc Ctrame=T = 1 CBlocIT(blk) blk=0 avec : Celoce(blk) le coût estimé d'un bloc blk compris dans la trame 1(t) et dont le type T de codage est compris dans le groupe comprenant « Intra », « Inter », « Inter Bi prédite » et « Inter Bi prédite et référence » ; et 25 - Nbloc est le nombre de blocs compris dans la trame 1(t). Selon une caractéristique particulière, ledit coût estimé C Bioce d'un bloc blk est défini par : CBiociT (blk) = 10 15 P(blk = tempo)xCtemp0(blk) + (1 - P(blk = tempo))XCspatio(blk) avec : - Ctempo un coût de codage avec une prédiction temporelle pour le bloc blk ; - Cspatio un coût de codage avec une prédiction spatiale pour le bloc blk ; P(blk = tempo) la probabilité que le bloc blk soit codé avec une prédiction temporelle. Selon une caractéristique particulière, ledit coût Ctempo est défini par : SAD (blk) Ctempo (blk)= OCX Qstep ÀXMVCOSt(blk) avec : a et À des paramètres prédéterminés ; MV Cost (blk) un coût de prédiction d'un vecteur de mouvement pour le bloc blk ; SAD (blk) une erreur de prédiction d'un vecteur de mouvement pour le bloc blk. Selon une caractéristique particulière, ledit coût Csp atio est défini par : avec : Cspatio(blk) = lex Energy(blk) Qstep le un paramètre prédéterminé ; 15 Energy (blk) une mesure d'énergie spatiale pour le bloc blk. Selon une caractéristique particulière, ladite probabilité P(blk = tempo) est fonction de SAD (blk) et du type T de codage de la trame 1(t) dans laquelle est compris le bloc blk, et est définie par : P(blk = tempo I SAD (blk), Trame = I) = 0 P(blk = tempo I SAD (blk), Trame = B) = 1 SADY' ou P(blk = tempo I SAD (blk), Trame = B) = e 0, SAD P(blk = tempo I SAD (blk), Trame = P ou Trame = Bref) = e 20 avec : Trame=l, si la trame 1(t) est une trame « Intra »; Trame=P, si la trame 1(t) est une trame « Inter » ; Trame=B, si la trame 1(t) est une trame « Inter Bi prédite » ; 10 - Trame=Bref, si la trame 1(t) est une trame « Inter Bi prédite er référence » ; - y', o', y et o des paramètres prédéterminés. Dans une deuxième mise en oeuvre particulière du module d'obtention de l'information de complexité, le module d'obtention de l'information de complexité comprend un module d'encodage, permettant de calculer la complexité associée à une trame 1(t) en calculant le nombre de bits réellement nécessaires à l'encodage de la trame 1(t), et ledit module de décision de filtrage est adapté pour déterminer ladite consigne de filtrage, pour la trame 1(t), en fonction entre autres de la complexité calculée.
Ainsi, dans cette deuxième mise en oeuvre, l'information de complexité d'une trame 1(t) est une complexité calculée. Ce calcul nécessite un encodage, qui s'ajoute à l'encodage effectué par le dispositif de compression de données. Il y a donc un double encodage (double passe), non compatible avec une implémentation temps-réel. Dans une troisième mise en oeuvre particulière du module d'obtention de l'information de complexité, le module d'obtention de l'information de complexité comprend : un module de lecture, dans ledit signal, d'une première information précisant la taille C(t) d'une trame 1(t) et une deuxième information précisant un pas de quantification Qstep ; un module de calcul de la complexité associée à la trame 1(t), par multiplication de la taille C(t) lue par le pas de quantification Qstep lu. Ainsi, dans cette troisième mise en oeuvre, l'information de complexité d'une trame 1(t) est une complexité obtenue simplement en combinant (par multiplication) deux informations lues dans le signal : l'une relative à la taille de la trame et l'autre au pas de quantification. Cette solution est peu coûteuse, mais est restreinte aux situations où le signal reçu est un signal déjà compressé (qui va être décodé puis être ensuite ré-encodé dans un format ou un débit différent. Les deux informations lues sont fiables seulement si le signal (flux compressé) n'a pas subi préalablement différents encodages successifs.
Dans un autre mode de réalisation de l'invention, il est proposé un procédé de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données, ledit signal comprenant un ensemble de trames successives, ledit procédé comprenant une étape de filtrage du signal en fonction d'une consigne de filtrage, le signal filtré résultant dudit filtrage étant fourni au dispositif de compression de données. Le procédé comprend les étapes suivantes, pour chaque trame du signal : obtention d'une information de complexité, et détermination de la consigne de filtrage en fonction entre autres de l'information de complexité. Avantageusement, le procédé comprend des étapes mises en oeuvre au sein du système tel que décrit précédemment, dans l'un quelconque de ses différents modes de réalisation.
Dans une première application particulière du procédé, la consigne de filtrage est une consigne de résolution, et en ce que l'étape de filtrage comprend un redimensionnement de chaque trame, en fonction de ladite consigne de résolution. Dans une deuxième application particulière du procédé, la consigne de filtrage est une consigne de force de filtrage, et en ce que l'étape de filtrage comprend un filtrage passe-bas de chaque trame, en fonction de ladite consigne de force de filtrage. Dans un autre mode de réalisation de l'invention, il est proposé un produit programme d'ordinateur qui comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur.
Dans un autre mode de réalisation de l'invention, il est proposé un médium de stockage lisible par ordinateur et non transitoire, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé précité (dans l'un quelconque de ses différents modes de réalisation). 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : - la figure 1 présente, de manière générique, un système selon l'invention de réduction dynamique de l'entropie d'un signal en amont d'un encodeur ; - la figure 2 présente une première application du système de la figure 1, dans laquelle la réduction dynamique de l'entropie consiste en un redimensionnement (contrôle dynamique de la résolution d'encodage); - la figure 3 présente une deuxième application du système de la figure 1, dans laquelle la réduction dynamique de l'entropie consiste en un filtrage passe-bas ; - la figure 4 précise les entrées et sorties du module d'estimation de complexité (STC) apparaissant sur les figures 1 à 3 ; - la figure 5 présente un système selon l'invention d'aide à la décision en amont d'un encodeur ; - la figure 6 présente un organigramme d'un mode de réalisation particulier d'un procédé selon l'invention de réduction dynamique de l'entropie d'un signal en amont d'un encodeur. 6. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. Dans la suite de la description, on considère à titre d'exemple le cas particulier de la compression d'un signal vidéo (dans ce cas, les trames successives sont des images). L'encodeur (dispositif de compression de données) utilisé (et référencé 10 sur les figures) est par exemple un encodeur H.264/MPEG4-10 AVC. 6.1 Principe général Comme illustré sur la figure 1, en amont de l'encodeur 10, le système selon l'invention de réduction dynamique de l'entropie (dont le fonctionnement est illustré sur la figure 6) comprend : - un module de capture 2 (réalisé par exemple sous la forme d'une carte ou un appareil) qui capture les trames du signal 1 en entrée et les convertit (signal référencé 3) en un signal 3 possédant un format utilisable par l'encodeur 10 (étape 61 de la figure 6). Par exemple, une entrée vidéo peut être au format SDI et la sortie correspondante au format YUV « brut ». Le module de capture 2 fournit une vidéo en résolution maximale M_full x N_full. Les trames sont transmises une par une aux modules suivants ; - un module 4 d'obtention d'une information de complexité pour chaque trame. Il fournit au module suivant (module de décision de filtrage 6) une information de complexité 5 pour chaque trame (étape 62 de la figure 6). Dans la suite de la description, on présente en détail un exemple de réalisation dans lequel ce module 4 est un module d'estimation de complexité (ou module STC, pour « Spatio Temporal Complexity »); - un module de décision de filtrage 6, qui décide du filtrage optimal en fonction de l'information de complexité reçue 5 et du débit de l'encodeur (étape 63 de la figure 6). Pour chaque trame, il reçoit l'information de complexité en entrée et fournit une consigne 7 au module suivant (module de filtrage 8). Il fait un compromis entre réduction d'entropie et préservation de la qualité vidéo. Il choisit de filtrer le moins possible sans risquer d'artefacts de compression (dus à une entropie trop importante pour le débit de l'encodeur). Il est décrit en détail par la suite ; - un module de filtrage 8, qui applique le filtrage en suivant les consignes 7 décidées par le module de décision de filtrage 6 (étape 64 de la figure 6). Il fournit à l'encodeur 10 un signal filtré 9. L'encodeur 10 émet un signal compressé 11, comprenant des trames compressées dans la résolution fixée par le processus mis en oeuvre par le système de réduction dynamique de l'entropie (étape 65 de la figure 6). La résolution peut varier d'une trame à l'autre sans interruption du processus. L'encodeur est capable de s'adapter aux changements de résolutions et fournit l'information de changement de résolution dans les données compressées. L'encodeur est par exemple synchronisé sur une horloge discrète. Cette horloge est ajustée sur la fréquence des trames. Par exemple, à 25 trames par secondes, l'horloge donne un "top" toutes les 40 ms. Ces tops d'horloge sont indexés par la variable t. Les différents modules (référencés 2, 4, 6 et 8) compris dans le système de réduction dynamique de l'entropie sont réalisés de manière informatique, avec un ou plusieurs éléments matériels (composants mémoires et processeurs notamment) et/ou logiciels (programmes). Chaque module comprend par exemple une mémoire RAM, une unité de traitement équipée par exemple d'un processeur et pilotée par un programme d'ordinateur stocké dans une mémoire ROM. A l'initialisation, les instructions de code du programme d'ordinateur sont par exemple chargées dans la mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement. Il s'agit seulement d'une manière particulière, parmi plusieurs possibles, de réaliser les différents algorithmes détaillés ci-après. En effet, chaque module se réalise indifféremment : sur une machine de calcul reprogrammable (un ordinateur PC, un processeur DSP ou un microcontrôleur) exécutant un programme comprenant une séquence d'instructions, ou sur une machine de calcul dédiée (par exemple un ensemble de portes logiques comme un FPGA ou un ASIC, ou tout autre module matériel). Dans le cas d'une implémentation sur une machine de calcul reprogrammable, le programme correspondant (c'est-à-dire la séquence d'instructions) pourra être stocké dans un médium de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce médium de stockage étant lisible partiellement ou totalement par un ordinateur ou un processeur. 6.2 Première application particulière On présente maintenant, en relation avec la figure 2, une première application du système de la figure 1, dans laquelle la réduction dynamique de l'entropie consiste en un redimensionnement (contrôle dynamique de la résolution d'encodage).
Dans le cas d'un encodage classique à un débit donné, la solution connue la plus simple consiste à choisir une résolution fixe. Cette résolution est fixée pour garantir une qualité correcte pour la plupart des séquences. Cependant elle sera sous-optimale (sous-dimensionnée) pour les séquences faciles, et sans doute trop élevée (surdimensionnée) pour les séquences difficiles.
Dans la première application du système de la figure 1, on cherche, pour un débit donné, une résolution optimale qui est dynamique, c'est-à-dire une résolution qui varie en fonction de la complexité des trames. Dans cette première application, le module de décision de filtrage 6 et le module de filtrage 8 de la figure 1 sont respectivement un module de décision de la résolution 26 (pour chaque trame, il fournit une résolution optimale en fonction de l'information de complexité et du débit) et un module de redimensionnement 28 (pour chaque trame, il applique un redimensionnement fonction de la résolution optimale fournie par le module de décision de la résolution 26). On détaille maintenant un exemple de fonctionnement du module de décision de la résolution 26. Plus la résolution est grande, plus la trame de sortie est nette. Cependant, plus la résolution est grande, plus l'entropie de la trame est élevée et plus le risque d'artefacts de compression dans la vidéo en sortie d'encodeur est élevé (effet bloc, image figée, ...). Grâce à la complexité précédemment calculée, le module de décision de la résolution 26 choisit la plus haute résolution sans risquer d'artefacts de compression. Dans un mode de réalisation particulier, on construit préalablement un tableau qui fournit une résolution donnée pour un débit donné de l'encodeur (tableau comprenant des couples associant chacun une résolution et un débit). Il s'agit d'une résolution moyenne qui convient pour une scène de complexité moyenne. Le module de décision de la résolution 26 utilise par exemple ce tableau de la manière suivante, pour chaque trame : - si l'information de complexité 5 (fournie par le module d'estimation de complexité 4) indique une complexité estimée qui est inférieure ou égale à la complexité moyenne, le module de décision de filtrage choisit comme résolution optimale la résolution qui, dans le tableau, est associée au débit de l'encodeur ; - si l'information de complexité 5 (fournie par le module d'estimation de complexité 4) indique une complexité estimée qui est supérieure à la complexité moyenne, le module de décision de filtrage choisit comme résolution optimale la résolution qui, dans le tableau, est associée au débit immédiatement inférieur (parmi les débits contenus dans le tableau) au débit de l'encodeur. Ainsi, le module de décision de filtrage choisit une résolution optimale qui est plus faible que la résolution moyenne associée au débit de l'encodeur. 6.3 Deuxième application particulière On présente maintenant, en relation avec la figure 3, une deuxième application du système de la figure 1, dans laquelle la réduction dynamique de l'entropie consiste en un filtrage passe-bas. L'entropie d'une source est la quantité moyenne d'information contenue dans cette source ; plus l'entropie est grande, plus le nombre de bits nécessaire au codage est élevé. Dans le cas d'un codage avec perte, une partie de l'information n'est pas restituée. On choisit de supprimer une partie de l'information avant l'encodage, pour que ce dernier puisse restituer des données plus importantes. Dans cette deuxième application, le module de décision de filtrage 6 et le module de filtrage 8 de la figure 1 sont respectivement un module de décision de la force de filtrage 36 (pour chaque trame, il fournit une force de filtrage optimale en fonction de l'information de complexité, de la résolution de la scène et du débit d'encodage) et un module de filtrage passe-bas 38 (pour chaque trame, il applique un filtrage passe-bas fonction de la force de filtrage optimale fournie par le module de décision de la force de filtrage 36). Ce processus intègre un filtre passe-bas 38, en amont de l'encodeur 10, car les hautes fréquences nécessitent plus de bits dans le processus d'encodage et ne sont pas forcément visibles par le système visuel humain. Il est parfois préférable de les supprimer pour éviter des artefacts de codage (effet bloc, image figée,...). Cependant un filtre passe-bas induit un effet de flou indésirable lorsque ce filtrage n'est pas nécessaire. On détaille maintenant un exemple de fonctionnement du module de décision de la force de filtrage 36. En fonction du débit R d'encodage, de la résolution S de la scène et de la complexité K(t) des trames à encoder, le module de décision de la force de filtrage 36 détermine la force F(t) du filtre passe-bas à appliquer à la trame 1(t) : F(t) = f onction (R, S, K(t)) Le tableau Débit / Résolution moyenne décrit dans le paragraphe précédent (relatif à la première application particulière) est également utilisé ici. Voici un exemple d'un tel tableau (ou table) :30 Resolution : S Débit Moyen : R (kbps) 1280x720@25fps 2500 1024x576@25fps 1800 960x544@25fps 1600 854x480@25fps 1550 704x396@25fps 1150 640x360@25fps 950 512x288@25fps D 700 Soit Km une complexité moyenne que nous fixons en donnant par exemple la valeur Km=1000. La force F(t) est par exemple calculée selon le procédé suivant. Soit Rtablef le débit associé à la résolution S dans la table donnée en exemple ci- dessus. On définit DR la différence entre Rtable et le débit d'encodage R. DR = RTable - R On définit DK(t) la différence entre K(t) et Km DK(t) = K(t) - Km Ces deux différences nous permettent de déterminer F(t) : F(t) = MIN(0; ax(DK(t) + DR) + b) a et b sont à définir en fonction du filtre, par exemple : a=0.003 et b=1.5 6.4 Description du module d'estimation de complexité (module STC) La figure 4 précise les entrées et sorties du module d'estimation de complexité (module STC) 4 apparaissant sur les figures 1 à 3. 6.4.1 Vue générale Le module STC 4 relie la complexité d'une vidéo au nombre de bits nécessaires à l'encodage de la vidéo avec un encodeur donné et un pas de quantification fixé, noté Qstep. On définit la complexité K comme le produit du Qstep choisi et du nombre de bits C associé : (1) K = Qstep x C Dans un système temps-réel, il serait trop coûteux en temps de calcul de faire un premier encodage pour calculer le nombre de bits réellement nécessaires à l'encodage. Le module STC 4 en fait donc une estimation. Comme illustré sur la figure 4, en sortie du module STC 4, on associe une complexité estimée K(t) à chaque trame 1(t). Dans l'exemple de réalisation détaillé par la suite, le module STC 4 a besoin de connaître la trame courante (notée 1(t)) et les N prochaines trames (notées 1(t+1) à 1(t+N)), pour calculer la complexité estimée K(T) de la trame 1(t). A cet effet, un buffer 40 est intégré au module STC 4. On a : 0ÉNÉNmax (par exemple Nmax=60).
La complexité K(t) associée à la trame 1(t) est définie par : (2) K(t) = Qstepx 7, X E L 0 ETEEType(P(Type 1(k) = T)xCtrame=T(k)) où : Qstep est le pas de quantification ; A est un facteur de normalisation qui ramène à une complexité par bloc. On définit un bloc comme un sous dimensionnement de taille fixe H x L de la trame ; EType = {Inter (P), Intra (I), Inter Bi Prédite (B), Inter Bi Prédite et Référence (Bref)}, est l'ensemble des types de codage possibles (c'est-à-dire l'ensemble des valeurs possibles de la variable T) ; P(Type 1(k) = T) est la probabilité qu'une trame 1(k) soit de type T. Connaissant la configuration de l'encodeur 10, cette probabilité est aisée à calculer pour chacune des valeurs possibles de T (voir la discussion ci-dessous) ; et Ctrame,T( k) est le coût estimé d'une trame 1(k) de type T. Précisions sur P(Type(I(k)) = T).
On connaît la configuration de l'encodeur : - Période des trames Intra ; par exemple : Période = 1 seconde ; - Type d'encodeur (H264, Mpeg2, ...) et types d'images. A titre d'exemple, on considère un encodeur de type H264 qui séquence les trames de la façon suivante : P Bref B B. Ceci signifie qu'une trame de type « Inter (P) » est suivie d'une trame de type « Inter Bi prédite et référence (Bref) » et de deux trames de type « Inter Bi prédite (B) ». On connaît la fréquence f de la séquence en entrée. Par exemple f = 25fps. Dans notre exemple, la fonction de probabilité P(Type(I(k)) = T) prendra les valeurs suivantes : - Pour T = Intra, P(Type(I(k)) = Intra) = 0.04 (une trame de type « intra (I) » toutes les 25 trames). NOTE : Si une trame est la première d'un changement de scène, elle sera de type « intra » dans l'encodeur, ce qui ajoute une trame « intra » en plus des trames « intra » périodiques. Si le module STC a connaissance de la position des changements de scène (grâce à un module externe ou grâce à une détection intégrée dans le processus), on peut alors améliorer la probabilité P(Type(I(k)) = Intra) en tenant compte des trames « intra » supplémentaires placées sur les changements de scène. - Pour T = Inter (P), P(Type(I(k)) = Inter) = 0.24 (6 trames de type « Inter (P) » dans un groupe de 25). - Pour T = Inter Bi prédite référence (Bref), P(Type(I(k)) = Bref) = 0.24 (6 trames de type « Inter Bi prédite référence (Bref) » dans un groupe de 25). - Pour T = Inter Bi prédite (B), P(Type(I(k)) = B) = 0.48 (12 trames de type « Inter Bi prédite (B) » dans un groupe de 25).
Si la configuration de l'encodeur est inconnue, la fonction de probabilité peut être définie avec des valeurs par défaut. Quand N est égal à zéro (N=0), la complexité K(t) est associée à la seule trame 1(t). Quand N est différent de zéro (N#0), la complexité K(t) est associée à la trame courante 1(t) mais également au groupe de N trames suivantes. En effet, dans ce cas, le calcul de l'équation (2) fournit une complexité moyenne sur une fenêtre glissante de N+1 trames (lissage permettant d'obtenir un résultat plus fiable). La complexité de chaque trame est ainsi calculée à l'aide d'un module d'estimation de complexité (module STC) 4 qui est : - rapide et simple : opérations peu couteuses (possibilité d'implémentation logicielle temps-réel sur des vidéos hautes définitions) ; - fiable : algorithme issu d'un apprentissage qui tient compte à la fois des aspects temporels et spatiaux d'une vidéo ; - générique : le module STC 4 peut être utilisé dans un produit temps-réel quel que soit le format de la sortie du module de capture 2. 6.4.2 Principe d'estimation de Ctrame=T(t) Dans un mode de réalisation particulier, nous utilisons un encodeur H.264/MPEG4-10 AVC.
Le coût estimé d'une trame est la somme des coûts estimés des blocs de la trame. Le coût estimé d'une trame Ctrame=T(t) varie selon son type T de codage: Intra (I), Inter (P), inter Bi prédite (B) ou inter Bi prédite et Référence (Bref). - Elv,,h/00 (3) Ctrame=T 0 CBlocIT(blk) avec : CBiociT(bik) le coût estimé d'un bloc blk compris dans la trame et dont le type T de codage est compris dans le groupe comprenant « Intra », « Inter », « Inter Bi prédite » et « Inter Bi prédite et référence » ; et Nbloc est le nombre de blocs compris dans la trame. Un bloc peut être compressé avec une prédiction spatiale (Spatio) ou une prédiction temporelle (Tempo). Le coût estimé CBiociT(b/k) d'un bloc blk est soit un coût estimé de codage avec une prédiction spatiale Cspatio, soit un coût estimé de codage avec une prédiction temporelle Ctempo. En considérant la probabilité P(blk=tempo) qu'un bloc blk soit codé en temporel, on a : (4) CBiociT(bik) = P(blk = tempo)xCtempo(blk) + (1 - P(blk = tempo))xCspatio (blk) 6.4.3 Coût temporel Le processus prédit le mouvement entre l'image courante et une image référence. N'ayant aucune information de séquençage des images, l'image précédente est prise comme image référence.
Afin de ne pas alourdir le processus et d'obtenir des exécutions en temps réel, on utilise par exemple une estimation de mouvement hiérarchique (HME) exécutée sur des blocs 16x16. Le principe d'une HME est décrit par exemple dans l'article suivant : Chia-Wen Lin, Yao-Jen Chang, and Yung-Chang Chen, "Hierarchical Motion Estimation Algorithm Based on Pyramidal Successive Elimination", Proceedings of International Computer Symposium (IC598), Workshop on Image Processing and Character Recognition, pp. 41-44, Tainan, Taiwan, Dec. 17-19, 1998. Cette HME fournit pour chaque bloc blk : - un vecteur de mouvement (MV(blk)) ; - une erreur de prédiction qui est la somme des différences absolues (SAD (blk)) ; - le coût de prédiction du vecteur de mouvement (MVCost (blk)). En utilisant ces métriques, nous avons pu définir le modèle suivant : (5) Ctempo(blk) = ax SAD(blk) + ÀxMVCost(blk) Qstep a et À sont des paramètres prédéterminés du modèle, définis dans une phase d'apprentissage préalable. Qstep est fixé. 6.4.4 Coût spatial Nous utilisons par exemple une mesure d'énergie spatiale pour estimer la prédiction intra de l'encodeur H264. Le module STC 4 calcule cette énergie (Energy(blk)) pour chaque bloc blk de la trame courante. Ainsi, nous définissons : = ex Energy(blk) (6) Cspatio(blk) Qstep B est un paramètre prédéterminé du modèle, défini dans une phase d'apprentissage préalable. 6.4.5 Probabilité de type de codage La distribution de probabilité d'un bloc d'être codé avec une prédiction temporelle, P(blk = tempo), peut être modélisée par une fonction exponentielle qui dépend de la SAD du bloc et du type de l'image considérée (ou plus précisément du type T de codage de la trame dans laquelle est compris le bloc blk). Cette probabilité est définie par : (7) P(blk = tempo I SAD(blk), Trame = I) = 0 (8) P(blk = tempo I SAD(blk), Trame = B) = 1 (9) P(blk = tempo I SAD(blk), Trame = P ou Trame = Bref) = e avec : - Trame=l, si la trame 1(t) est une trame « Intra » ; - Trame=P, si la trame 1(t) est une trame « Inter » ; - Trame=B, si la trame 1(t) est une trame « Inter Bi prédite » ; - Trame=Bref, si la trame 1(t) est une trame « Inter Bi prédite er référence » ; - y et o des paramètres prédéterminés du modèle, définis dans une phase d'apprentissage préalable.
Dans une variante, l'équation (8) est remplacée par : sADv' (10) P(blk = tempo I SAD (blk), Trame = B) = e 0, avec y' et o' des paramètres prédéterminés du modèle, définis (pour les trames B) dans une phase d'apprentissage préalable. 6.5 Variantes du module d'obtention d'une information de complexité Dans la description qui précède, le module 4 d'obtention d'une information de complexité est un module d'estimation de complexité (module STC), qui permet une implémentation en amont d'un encodeur temps-réel. Il existe cependant d'autres possibilités pour obtenir une information de complexité associée à chaque trame d'une scène.
Dans une première variante, le module 4 d'obtention de l'information de complexité comprend un module d'encodage, permettant de calculer la complexité associée à une trame 1(t) en calculant le nombre de bits réellement nécessaires à l'encodage de la trame 1(t). Pour chaque trame, le module de décision de filtrage 6 reçoit une complexité calculée, dont il tient compte (entre autres) pour déterminer la consigne de filtrage. En d'autres termes, dans cette première variante, on effectue un premier encodage (en plus de celui effectué dans l'encodeur 10, d'où la notion de « double encodage » (aussi appelé » « double passe »). Ce premier encodage sert uniquement à évaluer la complexité de chaque trame. Cette méthode est efficace, mais elle est aussi SADY 0- très couteuse. Des optimisations de cette première variante consistent par exemple à proposer un encodage allégé en première passe. Une deuxième variante est possible dans les cas d'utilisations où le module de capture 2 reçoit un flux déjà compressé 1, qui est décodé pour être ensuite ré-encodé dans un format ou un débit différent. Le module 4 d'obtention de l'information de complexité comprend simplement dans ce cas : - un module de lecture, dans le flux compressé, d'une première information précisant la taille des trames et une deuxième information précisant un pas de quantification Qstep ; et - un module de calcul de la complexité associée à chaque trame, par multiplication de la taille lue (de cette trame) par le pas de quantification Qstep lu. En d'autres termes, dans cette deuxième variante, on récupère et on combine des informations de tailles de trames et de Qstep dans le flux compressé. Cette solution est peu coûteuse, mais elle se restreint aux situations où le module de capture reçoit un flux compressé. De plus, les données du flux ne sont pas fiables si celui-ci a subi préalablement différents encodages successifs. 6.6 Autres utilisations du module d'estimation de complexité (module STC) Dans la description qui précède, le module d'estimation de complexité (module STC) 4 fait partie d'un système de réduction dynamique de l'entropie d'un signal en amont d'un dispositif de compression de données (encodeur) 10. Comme illustré sur la figure 5, le module d'estimation de complexité 4 peut également être utilisé dans un système d'aide à la décision, placé en amont d'un encodeur 10 (par exemple de type H264 ou MPEG2) et fournissant à ce dernier des informations utilisées dans les processus de décisions internes à tout encodeur. Par exemple, le module d'estimation de complexité 4 fournit à l'encodeur 10 une ou plusieurs des informations suivantes : - l'estimation de la complexité K(t) d'une trame (cf équation (2) détaillée plus haut) ; - la valeur de certain(s) paramètre(s) de calculs intermédiaires, comme par exemple le coût estimé de codage avec une prédiction spatiale Cspatio, et le coût estimé de codage avec une prédiction temporelle Ctempo. L'utilité de chacune de ces différentes informations dans le processus de décision de l'encodeur est décrite ci-dessous. 6.6.1 Complexité K(t) Comme indiqué plus haut, quand N est différent de zéro (N#0), la complexité K(t) est associée à la trame courante 1(t) mais également au groupe de N trames suivantes (complexité moyenne sur une fenêtre glissante de N+1 trames). En d'autres termes, K(t) correspond à la complexité du groupe de N trames à venir. Cette donnée est utilisée par l'encodeur dans l'algorithme d'allocation de débit (« Rate Control ») : si la complexité à venir augmente, diminue ou reste constante, le débit alloué aux trames courantes ne sera pas le même. 6.6.2 Coût spatial (coût intra) Comme indiqué plus haut, le coût spatial (aussi appelé coût intra) d'une trame correspond à la somme des coûts spatiaux des blocs de la trame. Le coût spatial Cspat,,, d'un bloc blk (c'est-à-dire le coût estimé de codage avec une prédiction spatiale) est défini par l'équation (6) détaillée plus haut : Energy(blk) Qstep Cette donnée est utilisée par l'encodeur dans l'algorithme d'allocation des trames de type I (Intra). Ces trames sont des trames clés dans le flux, elles ne sont codées qu'à l'aide d'une prédiction spatiale. En fonction du coût spatial d'une trame et du nombre de bits qui lui est alloué, l'algorithme décide d'un pas de quantification pour la trame. 6.6.3 Coût temporel (coût inter) Le séquenceur de l'encodeur est la partie qui décide du nombre de B (c'est-à- dire du nombre de trames de type B) dans le sous-groupe GOP (« Group of Pictures ») à venir. Selon l'encodeur, H264 ou MPEG2, différentes possibilités existent : aucune B, 1B, 2B, 3B, 5B, 7B, etc. Cspatio(blk) = lex Les B sont très utiles car leur prédiction est optimisée et elles facilitent l'allocation de débit car leur taille est souvent plus petite. Cependant, en fonction du mouvement présent dans la séquence, elles peuvent être plus ou moins optimales : une séquence difficile avec beaucoup de mouvement sera plus facilement codée avec 1B, tandis qu'un plus grand nombre de B sera plus efficace pour une séquence statiq ue. Le coût temporel (aussi appelé coût inter) Ctempo d'un bloc blk (c'est-à-dire le coût estimé de codage avec une prédiction temporelle), aussi appelé « coût inter », fournit cette information de mouvement utile au séquenceur. Il est défini par l'équation (5) détaillée plus haut : SAD(blk) Ctempo(blk) = ax Qstep + ÀxMVCost(blk)