Brevet FR2716556A1 — publié le 19950825

" Procédé de codage source, pour subdiviser une image en des plages d'image de taille fixée " Etat de la technique L'invention concerne un procédé de codage de la source d'image selon lequel on subdivise une image en des plages d'image de taille fixée et pour chaque plage d'image on détermine une statistique d'image et les plages d'image dont la statistique d'image dépasse un seuil prédéterminé sont codées en intra-trame alors que les autres plages d'image sont codées en intertrame, les plages d'image étant classées suivant leur statistique d'image et les pla- ges d'image qui doivent être codées en intra-trame ont la priorité de codage par rapport aux plages d'image à coder en inter-trame. On connaît déjà un procédé de codage-source d'images selon D Biere " Ubertragung von Bewegt- und Stand- bilden in stark gestôrten schmalbandigen Kanâlen beim Funkbildtelefon ", Bosch-Technische Berichts, cahier 54, 1991, pages 35 et suivantes (transmission d'images mobiles et fixes par des canaux à bande étroite fortement perturbés pour le téléphone à image). Dans ce procédé, on transmet une image par codage de l'image d'erreur de prédiction et avec une évaluation de mouvement à orientation de bloc. A l'aide de l'évaluation de mouvement à orientation de bloc, on détermine un champ vectoriel qui permet de traiter ulté- rieurement l'algorithme basé sur le modèle. Les vecteurs de mouvement obtenus et les contours correspondants des zones d'image déplacées sont transmis tout d'abord de manière co- dée. En fonction de la vitesse restante des données résiduelles, on code également des contenus de bloc, varia- bles inter-trames ou intra-trames et on les transmet. Pour déterminer les plages d'image qui sont codées inter-trames, on compare la variance du signal-image à l'intérieur d'une plage-image avec un seuil variable. Lorsque la variance est inférieure au seuil variable, on code la plage-image inter- trame et on transmet. Les plages-images qui restent sont soumises à une quantification adaptative à trois niveaux, puis sont codées en structure après une nouvelle subdivision de bloc puis transmises. Avantages de l'invention La présente invention concerne un procédé du type ci-dessus caractérisé en ce que les plages d'image sont ré- parties entre l'avant-plan et l'arrière-plan à l'aide d'une évaluation de mouvement et les plages d'image de l'avant- plan ont la priorité de codage par rapport aux plages- images de l'arrière-plan. Le procédé selon l'invention offre l'avantage que les plages-images qui sont codées en mode intra-trame ou inter-trame sont réparties en un avant-plan et un arrière- plan. Tout d'abord on transmet les plages-images apparte- nant à l'avant-plan et qui sont codées intra-trame. Puis, on transmet les plages-images appartenant à l'avant-plan et qui sont codées inter-trame. Enfin, on transmet les plages- images appartenant à l'arrière-plan et codées intra-trame, puis les plages-images appartenant à l'arrière-plan et co- dées inter-trame. Pour cela, on transmet tout d'abord les plages-images appartenant à l'avant-plan et qui présentent la signification la plus importante pour l'observateur de l'image plutôt que les plages-images appartenant à l'ar- rière-plan. Ainsi l'observateur perçoit une meilleure qua- lité subjective de l'image. Les moyens exposés dans les sous revendications correspondent à des développements et des perfectionnements avantageux du procédé objet de la revendication principale. On améliore la qualité de l'image en continuant de traiter pendant encore un temps fixé, comme avant-plan une plage-image a été déterminée comme avant-plan, bien que l'évaluation du mouvement a été considérée déjà que la plage-image comme arrière-plan. Il est avantageux d'associer une valeur fixée aux plages-images qui appartiennent à l'avant-plan et d'augmen- ter la valeur d'une plage-image à des intervalles de temps fixés et d'une valeur fixée lorsque les plages-images ont été déterminées comme arrière-plan et ont d'abord été trai- tées comme arrière-plan, si la valeur de la plage-image a dépassé un seuil fixé. Cela permet de manière simple la gestion des plages-images par la comparaison de valeurs nu- mériques. On améliore encore plus la qualité de l'image en faisant dépendre la valeur fixée dont on augmente une va- leur fixée d'une plage-image du vecteur de mouvement moyen de la plage- image. Cela tient compte de la dynamique des plages-images lors du codage et améliore encore la qualité de l'image. Il est en outre avantageux qu'une plage-image de l'arrière-plan qui a été reconnue comme avant-plan par l'évaluation du mouvement soit immédiatement traitée comme avant-plan. De cette manière, on code les plages-images en mouvement, de manière générale avec une meilleure qualité d'image. Dessins Un exemple de réalisation de l'invention est re- présenté dans les dessins et sera décrit ci-après de ma- nière plus détaillée. Ainsi: - la figure 1 montre schématiquement le fonction- nement d'un codeur de. source-image; - la figure 2 montre schématiquement le déroulement du programme pour déterminer les plages-images en co- dage intra-trame et qui appartiennent à l'avant-plan; - la figure 3 montre schématiquement le déroule- ment d'un programme pour déterminer les plages-images à co- der comme inter-trame et appartenant à l'avant-plan; la figure 4 montre un déroulement de programme d'un codage de sourceimage; - la figure 5 montre une disposition pour le co- dage d'une source-image. La figure 1 montre une unité d'évaluation de mou- vement 1 recevant un signal d'entrée par une ligne de don- nées 17. Le signal d'entrée est appliqué en même temps à un transformateur cosinus, discret 2 et à un soustracteur 4. Le transformateur cosinus discret 2 est relié par une ligne de données 17 à un premier codeur d'entropie 12 et à un transformateur cosinus inverse 9. Le soustracteur 4 est re- lié par une ligne de données 17 à un quantificateur adapta- tif et codeur de structure 3. Ce quantificateur adaptatif et codeur de structure 3 est relié par une ligne de données 17 à un codeur de structure inverse 8 et à un second codeur d'entropie 13. Le codeur de structure inverse 8 est relié par une ligne de données 17 à un additionneur 5. La sortie du transformateur cosinus discret inverse 9 est reliée à une mémoire de prédiction 7. L'additionneur 5 est relié par une ligne de données 17 également à la mémoire de prédic- tion 7. Une sortie de l'unité d'évaluation de mouvement 1 est reliée par une ligne de données 17 à une unité de lis- sage de mouvement 6. La sortie de l'unité de lissage de mouvement 6 est reliée par une ligne de données 17 à la mémoire de prédiction 7, à un codeur de vecteur de prédiction 10 et à un codeur de contour 11. Le codeur de vecteur de prédiction 10 est relié en sortie par une ligne de données 17 à un troisième codeur d'entropie 14. Le codeur de con- tour 11 est relié par une ligne de données 17 à un quatrième codeur d'entropie 15. Le premier, second, troisième et quatrième codeur d'entropie 12, 13, 14, 15 sont reliés par des lignes de données 17 à un multiplexeur de données 16. La sortie de la mémoire de prédiction 7 est reliée par des lignes de données 17 à l'additionneur 5, au soustracteur 4 et à l'unité d'évaluation de mouvement 1. Le multi- plexeur de données 16 est relié à un canal de données. Le montage de la figure 1 fonctionne comme suit: Une image mobile est appliquée à l'unité d'éva- luation de mouvement 1. L'image mobile est subdivisée en unités d'image. L'unité d'évaluation de mouvement 1 effectue pour chaque unité d'image une évaluation du mouvement entre l'image mobile et une image de prédiction inscrites dans la mémoire de prédiction 7. On minimise alors par exemple le critère de l'erreur quadratique moyenne d'une plage-image en différentes positions à l'intérieur d'une fenêtre prédéterminée de 40 x 40 pixels dans l'image de prédiction. Comme résultat, l'unité d'évaluation de mouve- ment 1 donne un vecteur de décalage par unité d'image. L'unité d'évaluation de mouvement 1 fournit un champ de vecteur de décalage diffus pour l'ensemble de l'image mobile, car on a utilisé comme critère non pas la détermination du mouvement réel de l'objet mais la minimi- sation de l'erreur quadratique moyenne. Le champ vectoriel fourni par l'unité d'évaluation de mouvement 1 est appliqué à l'unité de lissage de mouvement 6. L'unité de lissage de mouvement 6 utilise les corrélations des vecteurs de déca- lage d'unités d'image localement voisines pour former un champ vectoriel de mouvement homogène. Pour contrôler l'homogénéité des vecteurs de mouvement et ainsi contrôler l'homogénéité de l'image, on utilise la formule 1 sui- vante: M -Ici -i avec Ci = gi* IVk-Vii (1) p V) = e = On a gi = 1 pour les voisins directs (à gauche, droite au-dessus, en dessous), gi = 1 2 pour les voisins en diagonale, Ivk-vii représente la différence de longueur en- tre le vecteur de mouvement considéré vk et un vecteur de mouvement voisin vi; le calcul se fait par la formule: (vkx-vix)2 + (Vky-viy)2. Dans cette formule vkx et Vix représentent les composantes des vecteurs de mouvement dans une direction x fixée dans le plan-image et Vky et viy représentent les composantes des vecteurs de mouvement dans une direction y perpendiculaire à la direction x dans le plan-image sous un angle de 90 . La variable M donne le nombre de vecteurs de mouvement voisin pris en compte. Les variables gi sont des constantes de pondération choisies en fonction de l'appli- cation. A l'aide de la formule 1, on calcule une mesure P(V) proportionnelle aux différences de longueur entre le vecteur de mouvement considéré et les vecteurs de mouvement voisins. En fonction de P(V), on lit le champ vectoriel de mouvement en utilisant une distribution de Gibbs. Pour ce- la, on compare par exemple P(v) à une grandeur prédétermi- née et si on dépasse cette grandeur, on effectue un lissage. Le lissage décrit est un procédé connu par exemple selon Stiller " Motion Estimation for Coding of Moving Vi- deo at 8 kbit/s with Gibbs Modeled Vector field smoo- thing ", Proc. SPIE Lausanne, 1990, p. 468-476. Le champ vectoriel de mouvement, lissé, est transmis de l'unité de lissage de mouvement 6 au codeur de vecteur de prédiction 10 et au codeur de contour 11. Le co- deur de vecteur de prédiction 10 détermine un codage pré- dictif local des vecteurs de mouvement en utilisant des unités-images adjacentes. Pour cela, on détermine des pla- ges-images composées.d'unités d'image liées et on décrit leur décalage par comparaison avec l'image de prédiction à laide d'un vecteur de mouvement. Le codeur de contour 11 détermine les contours de ces plages- images. Le codeur de vecteur de prédiction 10 émet des vecteurs de mouvement à codage prédictif pour un troisième codeur d'entropie 14. Ce troisième codeur d'entropie 14 soumet les vecteurs de mou- vement en codage prédictif à un codage d'entropie et trans- met le résultat au multiplexeur de données 16. Le codeur de contour 11 donne le contour obtenu sous la forme d'un mas- que binaire au quatrième codeur d'entropie 15. Le quatrième codeur d'entropie 15 retranche le masque binaire d'un co- dage d'entropie et transmet alors ce codage au multiplexeur de données 16. L'image de la mémoire de prédiction 7 est décalée en fonction des vecteurs de mouvement obtenus. Le codeur de source-image décrit utilise le prin- cipe d'une commande anticipée c'est-à-dire qu'avant le co- dage d'une image, on fait une supposition reposant sur le codage des images précédentes quant aux plages-images qui sont à transmettre sur la base des taux de données disponi- bles. Après avoir retranché le taux de données pour l'at- tribuer à l'information de mouvement du taux moyen de données, il subsiste un taux résiduel de données pour le codage d'erreur de prédiction d'une image. Par une décision sur seuil, on donne à chaque unité d'image l'attribut de codage intra-trame codage inter-trame ou répétition inchan- gée. Une unité de calcul détermine les unités d'image dont l'erreur quadratique moyenne dépasse un seuil donné. Le transformateur cosinus discret 2 conduit alors un codage intra-trame pour les unités-images dont la variance dépasse le seuil fixé et transmet ces signaux au premier codeur d'entropie 12. Le premier codeur d'entropie 12 retranche les unités d'image à codage intra-trame d'un codage d'en- tropie et transmet le résultat au multiplexeur de données 16. Le transformateur cosinus discret 1 transmet les unités d'image à codage intra-trame au transformateur cosinus inverse 9. Le transformateur cosinus discret inverse 9 soumet les unitésimages à codage intra-trame à une transformation cosinus discrète inverse et fournit le résultat à la mé- moire de prédiction 7. Les unités-images dont l'erreur qua- dratique moyenne est inférieure au seuil prédéterminé sont codées en inter-trame. Pour déterminer les unités d'image en codage in- ter-trame, on applique les signaux-images d'une unité-image au soustracteur 4. Le soustracteur 4 reçoit également de la mémoire de prédiction 7, une unité de prédiction dont le mouvement a déjà été compensé. La différence entre le signal-image appliqué et l'image de prédiction est transmise au quantificateur adaptatif et codeur de structure 3. Le signal de différence est soumis à une quantification adap- tative puis est codé en structure. Après le quantificateur adaptatif et codeur en structure, le signal-image est ap- pliqué au second codeur d'entropie 13 et au codeur de structure inverse 8. Le second codeur d'entropie 13 soumet le signal-image à codage de structure à un codage d'entro- pie et transmet le résultat au multiplexeur de données 16. Le codeur de structure inverse 8 soumet le si- gnal-image reçu à un codage de structure inverse, puis transmet le résultat à l'additionneur 5. L'additionneur 5 additionne l'image de prédiction et le signal de différence quantifié pour donner une nouvelle image de prédiction. La figure 2 montre schématiquement le déroulement du programme pour déterminer les unités-images appartenant à l'avant-plan et qui sont codées en intra-trame. Au point 21 du programme, les erreurs quadratiques moyennes de tou- tes les unités-images sont définies par comparaison avec l'image de prédiction et pour chaque unité-image, on les inscrit dans une mémoire. Puis, au point de programme 22, on classe les unités-images en fonction croissant de l'am- plitude de l'erreur quadratique moyenne. Puis au point de programme 23, on exécute une boucle de programme concernant toutes les unités-images. Cette boucle de programme contient au point de programme 24 la question consistant à déterminer si l'er- reur quadratique moyenne d'une unité-image est supérieure à un seuil de transformation cosinus discret, fixe. Dans la négative après le point de programme 26, on sort de la boucle et cette unité est marquée comme inter-trame pour l'unité d'image à coder dans un masque binaire et on enre- gistre dans une mémoire. Si l'interrogation au point 24 montre que l'erreur quadratique moyenne est supérieure au seuil de transformation cosinus discret fixé, on passe sur le point de programme 25. Au point de programme 25, on demande si l'unité d'image appartient à l'avant-plan. Une unité d'image appar- tient à l'avant-plan si le vecteur de décalage déterminé par l'unité d'évaluation de mouvement 1 est égal à zéro. Si l'unité d'image appartient à l'arrière-plan, on passe sur le point de programme 27 et cette unité d'image est marquée comme unité d'image à codage inter-trame dans le masque bi- naire, puis on enregistre. Si l'interrogation au point 25 montre que l'unité d'image appartient à l'avant-plan, on marque cette unité d'image au point 28 du programme comme unité d'image à codage intra-trame dans le masque binaire et on met en mémoire. Le programme selon la figure 2 détermine les uni- tés d'image qui doivent être codées en intra-trame. On ne code que les unités d'image intra-trame appartenant à l'avant-plan et dont l'erreur quadratique moyenne est supérieure à un seuil de transformation cosinus discret, fixé. La figure 3 montre schématiquement le déroulement d'un programme qui traite les unités d'image déterminées par le programme de la figure 2 comme étant des unités d'image à codage inter-trame. Une boucle de programme commence au point 41 pour traiter toutes les unités-images. Au point 42 du programme, on demande si l'unité d'image à codage inter-trame appar- tient à l'avant-plan. Dans la négative, on passe sur le point de programme 44 et on considère définitivement cette unité d'image comme unité d'image à codage inter-trame. Si toutefois la question posée au point de programme 42 indi- que que l'unité d'image appartient à l'avant-plan, on passe sur le point de programme 43 et on marque cette unité d'image comme devant être codée en intra-trame. Cette interrogation est appliquée à toutes les unités d'une image. Le programme selon la figure 3 détermine à partir des uni- tés d'image à codage inter-trame obtenues selon le pro- gramme de la figure 2, celles des unités-image qui doivent être en codage intra-trame lorsqu'elles appartiennent à l'avant-plan. La figure 4 montre une unité de prise de vue 50 reliée à une unité de calcul 18 par une ligne de données 61. L'unité de calcul 18 est reliée à une mémoire 19 par une ligne de données 61. De plus, l'unité de calcul 18 est reliée par une autre ligne de données 61 à un codeur de source d'image 20. Le codeur de source d'image 20 réalisé comme l'indique schématiquement la figure 1 est relié à un canal de données. Un exemple de réalisation particulier sera décrit ci-après à l'aide du déroulement du programme de la figure et en utilisant les figures 1 à 4. Au point de programme 0 30 de la figure 5, l'unité de calcul 18 subdivise l'image en unités d'image ayant la taille de 8 x 8 pixels et appli- que le résultat à l'unité d'évaluation de mouvement 1. L'unité d'évaluation de mouvement 1 effectue pour chaque unité d'image une évaluation du mouvement par comparaison de l'image avec une image de prédiction provenant de la mé- moire de prédiction 7. Comme critère, on minimise par exem- ple l'erreur quadratique moyenne de l'image en différentes positions à l'intérieur d'une fenêtre prédéterminée de 40 x pixels dans le champ de prédiction. Comme résultat, on obtient un vecteur de décalage par unité d'image. L'unité de calcul 18 inscrit dans une mémoire 19 un masque binaire dans lequel les unités d'image affectées d'un vecteur de mouvement différent de zéro sont marquées. Pour améliorer la qualité de l'image, au point de programme 31, on lisse les vecteurs de décalage fournis par l'unité d'évaluation de mouvement 1 avec l'unité de lissage de mouvement 6 en prenant une distribution de Gibbs (formule 1) et on repré- sente avec un codage de vecteur de mouvement prédictif et un codage de contour comme à la figure 1 pour transmettre. Puis, au point de programme 42 l'unité de calcul 18 détermine le taux de données résiduel disponible pour la transmission de l'image. Le taux de données résiduel pro- vient du taux de données global par image diminué du taux de données consommé pour la transmission des vecteurs de mouvement et des contours correspondants diminué du taux de données consommé pour les attributs. Les attributs indi- quent la nature du codage pour chaque unité d'image. Le taux de données résiduel disponible est utilisé pour le codage intra-trame ou le codage inter-trame. Le codage intra- trame est exécuté par une transformation cosinus discrète. Le codage inter-trame c'est-à-dire la différence d'une uni- té d'image appartenant à une image instantanée et d'une image de prédiction à compensation de mouvement est tout d'abord quantifiée de manière adaptatif, puis codée en structure. Au point de programme 33, en utilisant le pro- gramme de la figure 1, on détermine les unités de l'image qui doivent être codées en intra-trame et appartiennent à l'avant-plan. L'unité de calcul 18 détermine par comparaison si l'erreur quadratique moyenne d'une unité d'image est supérieure à un seuil fixé et vérifie à l'aide du masque binaire enregistré dans la mémoire 19 si le vecteur de mou- vement de l'unité d'image est supérieur à zéro. L'unité de calcul 18 classe les unités d'image en fonction de l'erreur quadratique moyenne, multiplie par un coefficient PF-intra égal à 1 pour les unités d'image de l'avant-plan et égal à zéro pour les unités d'image de l'arrière-plan, en fonction de leur grandeur. Au point de programme 34, on détermine les unités d'image selon le programme de la figure 3, unités qui doi- vent être codées en inter-trame et appartiennent à l'avant- plan. L'unité de calcul 18 classe les unités d'image en fonction de leur erreur quadratique moyenne et multiplie par un coefficient PF inter. Le coefficient PF inter est égal à 1 pour les unités d'image de l'avant-plan alors que pour les unités d'image de l'arrière-plan, il est variable en fonction du temps. Puis, au point de programme 35, l'unité de calcul 18 classe toutes les unités d'image en fonction de leur erreur quadratique moyenne multipliée par les coefficients PF infra ou PF inter correspondants. Les unités d'image sont alors transmises dans l'ordre, suivant l'importance du produit de l'erreur quadratique moyenne multipliée par le coefficient PF infra ou PF inter, en co- dage suivant la figure 1, jusqu'à ce que le taux de données résiduel pour la transmission de l'image a été épuisé. Le coefficient PF inter pour les plages d'image appartenant à l'arrièreplan dépend de préférence du temps, si bien qu'il est prévu d'abaisser par palier le coeffi- cient PF inter en fonction du temps. Le masque binaire qui a été inscrit dans l'unité de calcul 18 dans la mémoire 19 pour fixer une unité d'image mobile peut être occupé dans le cas le plus simple par des valeurs binaires. Cela signifie qu'une unité d'image dont le vecteur de décalage est égal à zéro prend par exemple la valeur nulle; une unité d'image I dont le vecteur de décalage est différent de zéro prend la valeur 1. De préférence, les unités d'image à valeur de comptage fixe ZI sont occupées. On met ZI à zéro si on détermine un mouvement pour l'unité d'image I et si cette unité d'image appartient à l'avant-plan. Dans le cas contraire, on aug- mente ZI d'une valeur fixe B à chaque période: Zi(t+l) = (ZI(t)+B) ; dans cette formule t représente une période fixée. Lorsque la valeur de comptage ZI d'une unité d'image I dépasse un seuil S constant, fixé, on associe l'unité d'image I à l'arrière-plan jusqu'à ce que l'unité d'évaluation de mouvement 1 de l'unité d'image I possède de nouveau un vecteur de décalage différent de zéro, puis on enregistre et on met ainsi ZI à zéro. Cette opération de valeur de seuil est retardée au passage avantplan/arrière-plan appliqué à des unités d'image ayant des vecteurs de mouvement de longueur nulle. Le passage arrière-plan/avant plan se fait toutefois immé- diatement pour des vecteurs de mouvement différents de zé- ro. Pour le calcul de la valeur fixée B, on utilise par exemple la longueur moyenne de vecteur de mouvement corres- pondant à la formule suivante: n Xm = ( (2*r) * (Xi + yï) i=1 n = nombre de vecteurs qui sont des vecteurs nuls dans l'image instantanée, Xi, Yi = longueur des vecteurs dans la direction X et dans la direction Y, La valeur B est alors la suivante: B = Lm*Lm Le masque binaire peut être traité en plus selon les procédés connus d'érosion et de dilatation. L'erreur quadratique moyenne se calcule de préfé- rence suivant la formule ci-après: n MSE = pr * Y (orgi - prei)2 i=1 dans cette formule: n = nombre de pixels dans le bloc, i = indice courant de tous les pixels d'un bloc, orgi = pixels d'ordre i dans le bloc original, prei = pixels d'ordre i dans le bloc d'image précédent. R E V E N D I C A T IONS 1) Procédé de codage de la source d'image selon lequel on subdivise une image en des plages d'image de taille fixée et pour chaque plage d'image on détermine une statistique d'image et les plages d'image dont la statisti- que d'image dépasse un seuil prédéterminé sont codées en intra-trame alors que les autres plages d'image sont codées en inter-trame, les plages d'image étant classées suivant leur statistique d'image et les plages d'image qui doivent être codées en intra-trame ont la priorité de codage par rapport aux plages d'image à coder en inter-trame, caracté- risé en ce que les plages d'image sont réparties entre l'avant-plan et l'arrière-plan à l'aide d'une évaluation de mouvement et les plages d'image de l'avant-plan ont la priorité de codage par rapport aux plages-images de l'ar- rière-plan. 2) Procédé selon la revendication 1, caractérisé en ce qu'une image de l'avant-plan reste traitée pendant encore un certain temps fixé comme appartenant à l'avant- plan bien que l'évaluation de mouvement ait déjà déterminé que cette plage-image appartient à l'arrière-plan. 3) Procédé selon la revendication 2, caractérisé en ce qu'à la plageimage déterminée comme appartenant à l'avant-plan on associe une valeur fixée et on l'enregistre dans une mémoire et on augmente la valeur de la plage-image d'une valeur fixée dans des intervalles de temps fixés si la plage-image a été déterminée comme appartenant à l'ar- rière-plan et on ne traite la plage-image comme arrière- plan que lorsque la valeur de la plage-image dépasse un seuil fixé. 4) Procédé selon la revendication 3, caractérisé en ce que la valeur fixée est donnée en fonction du vecteur moyen de mouvement de la plage- image qui a été déterminé à partir de l'évaluation du mouvement. 5) Procédé selon l'une quelconque des revendica- tions 1 à 4, caractérisé en ce qu'on traite une plage-image de l'arrière- plan immédiatement comme appartenant à l'avant-plan si l'évaluation de mouvement a déterminé que cette plage-image appartenait à l'avant-plan.