FR 2782879 A1 20000303 FR 9810802 A 19980828 PROCEDÉ DE CCMPRESSION D' AGES L'invention est relative à un procédé de compression d'images, dans lequel chaque image ou macrobloc d'image est sou- mis à un codage choisi parmi plusieurs types de codage. Elle concerne plus particulièrement le procédé de com- pression MPEG2. Bien que l'invention ne soit pas limitée à ce type de coepression, dans la suite de la description, on se réfé- rera principalement à ce type. On rappelle ci-après le principe d'une telle compres- sion et, à cette occasion, on indiquera quels sont les types de codage qu'il faut sélectionner pour chaque macrobloc. Dans la norme MPEG2, on peut partir d'une image comportant en mode progressif 576 lignes de 720 points chacune. En mode entrelacé, cette image est composée de deux trames dont chacune comprend 288 lignes, également de 720 points chacune. Chaque image est décomposée en macroblocs dont chacun est formé par un carré de 16X16 points de luminance. Chaque macrobloc est ainsi forrm de 4 blocs carrés de 8X8 points de luminance. A chacun de ces 4 blocs de luminance, on associe (dans le format 4.2.0) deux blocs de chrominance dont chacun présente 8X8 points, l'un des blocs représentant le signal Cr de différence de couleur ou chrominance rouge et l'autre bloc représentant le signal Cb de différence de couleur ou chrominance bleue. Dans le format 4.2.2, à chaque macrobloc de luminance, on associe quatre blocs de chrominance 8X8, 2 blocs pour la chrominance bleue et 2 blocs pour la chrominance rouge. Il existe aussi un format 4. 4.4 pour lequel chacune des composantes de luminance et de chrominances comnporte chacune 4 blocs 8x8. On a représenté sur la figure 1 quatre blocs de luminance 8x8, de référence 10 dans l'ensemble et des blocs 12 et 14 de chrcmninance 8x8 pour les chrominances respectivement bleue et rouge, l'ensemble illustrant un macrobloc au standard 4.2.0. Chaque bloc est codé en utilisant une transformation notée DCT qui est une transformation cosinus discrète qui permet de transformer un bloc de luminance (par exemple) en un bloc de coefficients représentant des fréquences spatiales. Comme on peut le voir sur la figure 2, un bloc source 16 est transformé en un bloc 18 de 8X8 coefficients. Le coin supérieur gauche 20 du bloc 18 correspond aux fréquences spatiales nulles (valeur moyenne du bloc) et, à partir de cette origine 20, les fréquences horizontales augmentent vers la droite, came représenté par la flèche 22, tandis que les fréquences spatiales verticales augmentent en partant du haut vers le bas, coaroe représenté par la flèche 24. Pour chaque macrobloc, il faut choisir le type de codage: soit "intra", soit "inter". Un codage intra consiste à appliquer la transformation DCT sur un bloc source de l'image, tandis qu'un codage inter consiste à appliquer la transformation DCT sur un bloc représentant la différence entre un bloc source et un bloc prédit, ou bloc de prédiction, d'une image précédente ou suivante. Le choix dépend en partie du type d'images auquel appartient le macrobloc. Ces images sont de trois types: le pre- mier type est le type dit I, ou intra, pour lequel le codage est intra pour tous les macroblocs. Le second type est de type P ou de prédiction; dans ce type d'images, le codage de chaque macrobloc peut être soit intra soit inter. Dans le cas d'un codage inter sur une image de type P, la transformation DCT est appliquée sur la différence entre le macrobloc courant de cette image P et un macrobloc de prédiction issu de l'image I ou P précédente. Le troisième type d'images est appelé B ou bidirection- nel. Chaque macrobloc d'un tel type d'image est soit codé en intra, soit codé en inter. Le codage en inter consiste également à appliquer la transformation sur la différence entre le macrobloc courant de cette image B et un macrobloc de prédiction. Ce macrobloc de prédiction peut être issu soit de l'image précédente soit de l'image suivante ou des deux à la fois (prédiction bidirectionnelle), les images de prédiction dites précédente ou suivante ne pouvant être que de type I ou P. On a représenté sur la figure 3 un ensemble d'images formant un groupe appelé GOP ("Group Of Pictures") qui comprend douze images, à savoir une image I suivie de onze images B et P selon la succession suivante: B, B, P, B, B, P, B, B, P, B, B. Dans le cas des images prédites (c'est-à-dire déduites d'autres images), une estimation de mouvement puis une ccompensation de mouvement sont appliquées au macrobloc à coder. En effet, entre deux images, le macrobloc peut se trouver en des emplacements différents en raison des mouvements inter images et inter trames. La coapensation de mouvement a pour effet d'élaborer le macrobloc de prédiction selon un mode d'interpolation donné (courarmment appelé mode de prédiction); ce macrobloc va effectivement servir de prédiction au macrobloc source en inter-image pour un mode de codage donné. Par la suite, ce macrobloc de prédiction et, par là mênme ce mode de codage, sera retenu ou rejeté en fonction des décisions prises au sein du processus permettant d'élaborer le choix du mode de codage. Par ailleurs, dans le cas d'un balayage entrelacé, pour lequel chaque image est formée de deux trames successives, une trame impaire et une trame paire, il faut déterminer si la trans- formation DCT doit être effectuée de façon progressive ou, indi- viduellement, sur chaque trame. En effet, selon le mouvement de l'image ou la structure de cette image, le résultat du codage peut être différent selon que la transformation est effectuée sur l'image ou sur chaque trame. Ce choix est représenté par les figures 4a et 4b. Sur la figure 4a on a représenté un macrobloc 28 d'une image entre- lacée formée de lignes 301, 303,..., 3015 d'une trame impaire et de lignes 302, 304,...--, 3016 d'une trame paire. La figure 4a correspond à une transformation DCT effectuée sur l'image; cha- cun des quatre blocs du macrobloc 28 est transformé sans réar- ranger les lignes. Ainsi, le codage est effectué sur les quatre blocs 281, 282, 283, 284 formant le macrobloc 28 et on effectue la transformation sur les lignes 301 à 308 pour les blocs 281 et 282 et sur les lignes 309 à 3016 pour les blocs 283 et 284. Par contre, la figure 4b représente une transformation effectuée séparément pour les trames impaire et paire. Les blocs 321 et 322 correspondent à la trame impaire et les blocs 323 et 324 à la trame paire. Ainsi, le bloc 321 comporte les lignes 301, 303,..., 3015, tandis que les blocs 323 et 324 comportent les lignes 302, 304.... 3016- On a représenté sur la figure 5 un diagramme sous forme de blocs représentant les diverses opérations à effectuer pour la compression d'images ou compression vidéo. Chaque image numérisée est appliquée sur une entrée d'un organe 40 qui effectue la sépa- ration en blocs 8x8 et ces blocs 8x8 sont transmis à un organe 42 de sélection entre le codage intra et le codage inter. Si le codage choisi est intra, le bloc est transmis à l'organe 44 de transformation DCT. Si le codage est inter, le bloc est soumis à une soustraction par un organe soustracteur 46 qui effectue les différences entre le bloc lui- nmême et un bloc de prédiction fourni par un organe 48 de prédiction temporelle. Après la transformation DCT 44, on effectue une quan- tification 50 et les coefficients quantifiés ainsi obtenus sont codés selon un codage VLC de longueur variable ou fixe 52. Les coefficients ainsi codés obtenus à la sortie du codeur 52 sont dirigés vers une mémoire tampon 54 dont la sortie constitue la sortie de codage 56. Pour éviter une saturation et un assèchement de la mémoire tampon 54, on effectue une régulation 60 qui modifie la quantification 50. Pour pouvoir effectuer la prédiction temporelle, la sortie de l'organe 50 de quantification est reliée à l'entrée d'un organe 62 de quantification inverse Q-1 dont la sortie est appliquée sur l'entrée d'un organe 64 effectuant la transforma- tion cosinus inverse DCr-1. La sortie de l'organe 64 est transmise directement à une mémoire d'image 66 quand le codage du bloc est intra, came déterminé par un organe 68. Par contre, quand l'organe 68 décide que le codage est inter, la sortie du bloc 64 est ajoutée, grâce à un additionneur 70, au macrobloc de prédiction fourni par l'organe 48 et c'est la sortie de l'additionneur 70 qui est transmise à la mémoire d'image 66. La mémoire 66 conserve des images décodées. Les mouvements inter images et inter trames sont estimés par un organe 72 qui reçoit, d'une part, des informations de la mémoire d'image 66 et, d'autre part, de la sortie de l'organe 40 de mise en blocs. On voit, ainsi, que la prédiction temporelle 48 est effectuée, d'une part, à partir de la mémoire d'image 66 et, d'autre part, de l'estimation de mouvement 72. L'élaboration du codage ou train binaire 52 dépend, entre autres, des vecteurs mouvement issus de l'estimation de mouvement 72, des coefficients DCT codés, des en-têtes des macroblocs, et d'informations de codage MPEG2 fournies par un organe 74. Ces informations concernent la signalétique MPEG2, à savoir les en-têtes des lignes de macroblocs (ou "slices"), les en-têtes des images des GOP et les en-têtes de la séquence à coder. Pour les images de type I, le codage doit choisir entre le codage intra en trame ou le codage intra en image. Ce choix est effectué sur la base d'une analyse de l'activité contenue dans le macrobloc; il donne en général de bons résultats. Pour les images de type P et les images de type B, le nombre de décisions à prendre est sensiblement plus important. Ainsi, un macrobloc P peut être codé selon huit modes de base: - intra; DCT trame, - intra; DCT image, - sans compensation de mouvement (noMC); DCT trame, - sans coypensation de mouvement (noMC); DCT image, - avec compensation de mouvement; prédiction en trames antérieures; DCF trame, avec compensation de nmouvement; prédiction en trames antérieures; DCT image, - avec colmpensation de mouvement; prédiction en image antérieure; DCT trame, - avec compensation de mouvement; prédiction en image antérieure; DCT image. Pour les images de type B, 14 modes de codage de base sont possibles, à savoir deux modes de codage intra, les quatre modes avec conpensation de mouvement indiqués à propos des images de type P et, en plus, quatre modes de codage similaires à partir de l'image de prédiction postérieure et 4 modes bidirectionnels, à savoir: - prédiction en trames postérieures; DCT trame, - prédiction en trames postérieures; DCT image, - prédiction en image postérieure; DCT trame, - prédiction en image postérieure; DC' image, - prédiction bidirectionnelle en trame; DCr trame, - prédiction bidirectionnelle en trame; DCT image, - prédiction bidirectionnelle en image; DCT trame, - prédiction bidirectionnelle en image; DCT image. On a constaté que les critères utilisés jusqu'à présent pour choisir entre ces divers modes pour les images P et B donnaient des résultats de qualités variables. L'invention permet de fournir des images d'une qualité relativement constante pour ces images P et B. L'invention permet aussi de fournir des images d'un meilleur rapport qualité/coût par rapport aux images obtenues avec les procédés connus. À cet effet, le procédé de compression conforme à l'in- vention est caractérisé en ce que, pour chaque macrobloc, on ef- fectue un codage d'essai selon tous les modes possibles ou selon une partie de ces modes, et pour chaque codage d'essai on déter- mine le coût de codage et/ou un facteur de qualité, le mode de codage utilisé étant sélectionné en fonction de la valeur du coût du codage et/ou de la valeur du facteur de qualité. Par "coût de codage", on entend le nombre de bits uti- lisé pour chaque codage. En d'autres termes, on ne choisit pas le mode de codage en fonction d'une analyse interne des macroblocs (comme c'est le cas dans l'état antérieur de la technique) mais en essayant toutes les possibilités de codage (ou une partie de celles-ci) et en retenant le mode qui donne le meilleur résultat, soit parce qu'il minimise le coût de codage, soit parce qu'il maximise la qualité de l'image, soit, de préférence, s'il fournit le meilleur compromis ente le coût de codage et la qualité de l'image. Le facteur de qualité de l'image est déterminé par une comparaison entre le macrobloc source et le macrobloc décodé. Ce dernier correspond au macrobloc soumis à un codage d'essai puis décodé. Dans un mode de réalisation on détermine le facteur de qualité moyen sur une séquence d'images précédentes contenue dans une fenêtre temporelle glissante et on sélectionne un type de codage fournissant un facteur de qualité le plus proche de ce facteur de qualité moyen. Dans une autre réalisation pour chaque macrobloc on détermine, pour chaque type de codage, le coût de codage, on compare le facteur de qualité du type de codage assurant un coût minimal à une valeur moyenne de facteur de qualité sur une séquence d'images précédentes contenue dans une fenêtre 3temporelle glissante, et on sélectionne le type de codage fournissant un coût minimal si le facteur de qualité correspondant est au moins égal au facteur de qualité moyen augmenté d'un incrément. Le procédé de compression selon l'invention peut être utilisé pour toutes les applications faisant appel à une compres- sion vidéo de type MPEG (MPEG1, MPEG2, MPEG4) ou analogue. Il peut être utilisé, notamment, pour l'enregistrement en studios de disques ou de bandes magnétiques. Il peut être utilisé aussi pour le codage en temps réel, par exemple dans des caméras vidéo. Des expériences effectuées dans le cadre de l'invention ont montré que la compression selon l'invention permet, pour une rmême qualité de l'image, d'utiliser environ 25% de bits en moins qu'une compression réalisée de façon classique. D'autres caractéristiques et avantages de l'invention apparaîtront avec la description de certains de ses modes de réa- lisation, celle-ci étant effectuée en se référant aux dessins ci- annexés, sur lesquels: - les figures 1 à 5, déjà décrites, représentent le principe de la compression MPEG2, - les figures 6 et 7 sont des diagrarmmes expliquant certains aspects d'un procédé de compression conforme à 1' invention. Dans l'exemple de compression qu'on va décrire ci- dessous, pour chaque macrobloc, on considère tous les modes de codage possibles (soit deux modes possibles pour les images de type I, huit modes de base pour les images de type P et quatorze modes de base pour les images de type B). Pour chacun de ces modes, on effectue un codage d'essai et on détermine ensuite les paramètres suivants: - Coût C du codage du macrobloc, c'est-à-dire le nombre de bits obtenu à l'issue du codage d'essai. - Le facteur de qualité MBQuality du macrobloc reconstruit. On expliquera ci-après comment ce facteur de qualité peut être déterminé. - La valeur moyenne temporelle, notée Seq.Quality, du facteur de qualité MB_Quality sur l'image ou sur une séquence d'images. La connaissance de ce paramètre permet éventuellement de limiter le surcoût de codage possible dans la situation o le facteur MB_Quality d'un mode de codage considéré dépasse de façon notable la valeur de Seq.Quality. - Un seuil, noté overC, qui dépend du type d'image considéré (I, P ou B), représentant un surcoût de codage admis- sible pour accroître le facteur de qualité MB_Quality du macrobloc. Le surcoût admissible overC pour une image de type I sera supérieur au surcoût de codage admissible pour une image de type P ou B. Le facteur de qualité MB-Quality résulte d'une comparaison entre le macrobloc source à coder, et son homologue reconstruit pour un mode de codage considéré. Dans le cas d'un critère de type PSNR (PSNR signifie ici "Picture Signal to Noise Ratio" ou "Rapport signal à bruit de l'image") on effectue la sorne (son) des carrés des différences point par point entre les pixels de luminance sources et les pixels reconstruits puis la valeur de MBQuality est calculée de la façon suivante: MBQuality = -10 Log10 (som/Lum), avec: Lum = 255*255*256 = 16646400 Dans le cas du critère de type SNR (Signal to Noise Ratio), la valeur du paramètre somn est calculée de la même façon, tandis que Lum correspond à la sonme des valeurs des 256 pixels contenus dans le bloc source de luminance, la valeur de MB_Quality est également calculée de la façon suivante: MBQuality = -10 Logo10 (som/Lum) Ainsi, le facteur de qualité est d'autant plus grand que les différences sont faibles. Dans l'exemple, on détermine tout d'abord le mode de codage qui fournit le coût minimal Cmin et on calcule le facteur de qualité MB_Quality du macrobloc de coût minimal, soit MB_QualitYCmin. Ensuite, on détermine si un autre mode de codage, qui, a priori, nécessite un surcoût de codage (par rapport à Cmin), provoque une augmentation acceptable du facteur de qualité MB_Quality. A cet effet, on compare MB_QualityCmin à Seq.Quality qui est le facteur de qualité moyen en séquence sur un nombre déterminé d'images précédentes, par exemple 20. Si: MB_QualityCmin > Seq.Quality + overMBQuality, formule dans laquelle overMB_Quality représente une valeur acceptable d'augmentation du facteur de qualité en séquence, alors on choisira le mode de codage permettant d'obtenir le coût minimal Cmin, puisqu'on obtient une qualité largement suffisante avec un coût minimal. Cette situation se produit dans des zones de l'image faiblement texturées (peu d'information à coder) et/ou pour lesquelles la prédiction temporelle est de bonne qualité. Si: MB_QualityCmin est insuffisante, on autorisera alors le surcoût maximal admis- sible. Par contre, dans les autres cas, c'est-à-dire quand: Seq.Quality overC' = overC x S (4). Il est à noter que, dans les autres cas discutés ci- dessus, c'est-à-dire quand: MBQualityCmin > Seq.Quality + overMB_Quality, et quand: MBQualityCmin résultant de la formule (3) dépasse 1. Dans ces conditions, le facteur S peut être représenté par le diagramme de la figure 6 qui fait partie intégrante de la présente description. Quand on a déterminé le surcoût overC ou overC' de codage possible, on recherche le meilleur couple coût de codage/ MB_Quality. A cet effet, on procède de la façon suivante: On compare MB_Qualityi à MB_QualityCmin, MBQualityi étant le facteur de qualité pour le mode de codage d'essai considéré de rang i. Si: MB_Qualityi = MB_Qualitycmin, on garde le codage ayant fourni le coût minimal Cmin. Si: MB_Qualityi MBQualityCmin, on choisit le mode de codage en considérant le para- mètre suivant: di = Ci - [Cmin + overC'.(MB3_Qualityi - MB_QualityCmn)] (5) Dans cette formule, Ci est le coût du macrobloc courant pour le codage d'essai représenté par l'indice i et overC' est le surcoût admissible (dépendant de overC et de S). di représente donc la distance entre le coût du macro- bloc courant et le coût maximal possible. On choisira le mode de codage fournissant la plus petite valeur signée de di. Ce critère peut être représenté par le diagramme de la figure 7 qui fait partie intégrante de la présente description. Sur ce diagramme, on a porté en abscisses le facteur de qualité MB_Quality et en ordonnées le coût Ci du macrobloc courant, la valeur Cmin correspondant à l'origine. La droite 80 correspond au coût maximal possible au regard de l'augmentation de la valeur de MB_Quality. En d'autres termes, on ne choisira aucun couple coût/MB_Quality (compte tenu des paramètres over_C et S) qui se trouve au-dessus de la droite 80. Le procédé décrit utilise le paramètre Seq.Quality. Celui-ci ne peut être raisonnablement calculé et utilisé qu'une fois le régime permanent établi au sein du codeur, c'est-à-dire en dehors des périodes transitoires, par exemple au-delà de la cinquantième ou centième images codées d'une séquence, soit à la mise en route du codeur, soit après la détection d'un "cut" (changement de séquence ou de scène). En conséquence, dans le processus de décision de codage, durant les périodes transitoires, le paramètre S prend la valeur 1 et, par voie de consequence, overC' = overC; autrement dit le surcoût éventuel est limité à overC. La détection d'un cut est une information qui peut être fournie par un des composants constituant l'ensemble du codeur d'images. Ce composant peut être 1'estimateur de mouvement. Dans le procédé décrit jusqu'à présent, tous les modes de codage sont essayés. Dans une variante simplifiée, pour réduire la quantité de calculs nécessaires, on essaie un nombre plus limité de possibilités. Dans un exemple, on exclut de l'essai le choix du paramètre correspondant à l'application de la transformation DCT sur une trame ou sur une image. A cet effet, on choisit ce mode de codage de façon classique. Par exemple, on évalue I'activité locale de l'information contenue dans le macrobloc et, si l'activité du macrobloc en image est inférieure à la l'activité du macrobloc en trame, on choisit une transforma- tion DCT en image et, dans le cas contraire, on choisit une transformation DCT en trame. De cette manière, les calculs à effectuer pour les autres choix sont réduits, puisque le nombre de possibilités de codage est alors divisé par deux. Dans l'exemple mentionné ci-dessus, pour lequel on n'effectue pas de codage d'essai pour déterminer si la transfor- mation DCT est réalisée en image ou en trame, pour les images de type I le procédé pour déterminer le mode de codage est classique, tandis que pour les images de type P, le nombre de modes de codages de base est réduit à quatre et pour les images de type B, le nombre de codages de base est réduit à sept. L'invention n'est bien entendu pas limitée à l'exemple décrit. En particulier, elle n'est pas limitée aux modes de codage de base; elle englobe tout autre type de codage tel que, par exemple, le mode "dual prime" pour les images P de la norme MPEG2. REVEDICATICNS 1. Procédé de compression d'images dans lequel chaque macrobloc d'image est soumis à un codage choisi, pour chaque macrobloc, parmi plusieurs types de codage, caractérisé en ce que, pour sélectionner le type de codage à appliquer au macro- bloc, on détermine, par des codages d'essai, le coût (Ci) et/ou un facteur de qualité (MB_Quality) de chaque type de codage, la sélection étant effectuée en fonction des valeurs du coût ou du facteur de qualité ou des couples de valeurs de ces paramètres. 2. Procédé selon la revendication 1, caractérisé en ce que le facteur de qualité de chaque macrobloc est déterminé par une comparaison entre le macrobloc source et le macrobloc décodé correspondant au macrobloc soumis à un codage d'essai. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'on choisit le type de codage assurant un coût minimal. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'on détermine un facteur de qualité moyen sur une séquence d'images précédentes (Seq.Quality) contenue dans une fenêtre temporelle glissante et en ce qu'on sélectionne un type de codage fournissant un facteur de qualité (MB_Quality) le plus proche de ce facteur de qualité moyen. 5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que, pour chaque macrobloc, on détermine, pour chaque type de codage, le coût de codage, on com- pare le facteur de qualité (MBQualityCmin) du type de codage assurant un coût minimal (Cmin) à une valeur moyenne de facteur de qualité (Seq. Quality) sur une séquence d'images précédentes contenue dans une fenêtre temporelle glissante, et on sélectionne le type de codage fournissant un coût minimal si le facteur de qualité correspondant est au moins égal au facteur de qualité moyen (Seq.Quality) augmenté d'un incrément (overMB_Quality). 6. Procédé selon la revendication 5, caractérisé en ce que, si le facteur de qualité (MB_QualityCmin) pour le type de codage assurant un coût minimal (Cmin) est inférieur au facteur de qualité moyen (Seq. Quality), on choisit un type de codage engendrant un surcoût de codage ne dépassant pas une valeur déterminée (overC) et assurant une augmentation acceptable du facteur de qualité. 7. Procédé selon la revendication 6, caractérisé en ce qu'on détermine un facteur de pondération du surcoût (overC) par la formule suivante: MB_ QualityCm, - Seq. Quality overMB_ Qualit), ce facteur de pondération étant maintenu à zéro quand sa valeur obtenue par la formule ci-dessus, est négative et étant maintenu à 1 quand la valeur résultant de cette formule est supérieure à 1. 8. Procédé selon la revendication 6 ou 7, caractérisé en ce qu'on détermine le type de codage en minimisant le para- nmtre di signé défini par la formule suivante: di = Ci - [Cmin + overC.(MB_Qualityi -MB_QualityCmin)] Ci étant le coût du codage essayé, Cmin le coût de codage minimum parmi tous les modes de codage essayés, MB_Qualityi le facteur de qualité du codage essayé, et MB_QualityCmin le facteur de qualité correspondant au codage essayé de coût minimum. 9. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la compression est du type MPEG de préférence de type MPEG2. 10. Procédé selon la revendication 9, caractérisé en ce qu'il est utilisé pour choisir le type de codage des macroblocs des images de types I, P et B. 11. Procédé selon la revendication 9, caractérisé en ce qu'il est utilisé pour le type de codage des images de type P et B et non pour le type de codage des images de type I. 12. Procédé selon la revendication 11, caractérisé en ce que, pour déterminer si la transformation cosinus s'effectue sur un macrobloc trame ou sur un macrobloc image, on détermine un paramètre lié au macrobloc, avant codage et on choisit le type de transformation en fonction de ce paramètre.