Brevet FR2655793A1 — publié le 19910614

La présente invention concerne un procédé de décodage d'images animées, faisant usage d'un processeur pour traiter des informations de luminance et de chrominance, et d'une mémoire pour mémoriser les infor- mations correspondantes concernant une ou plusieurs images, procédé dans lequel on procède d'abord au décodage de données numériques puis à la génération d'images à partir desdites données, et dans lequel, en ce qui concerne la luminance, on procède à la création d'images par interpola- tion à partir d'une image précédente et d'une image subséquente. Un tel procédé s'applique notamment dans des systèmes pour la transmission d'images à débit modéré: système de visualisation d'images animées enregistrées sur disque compact ou magnétophone numérique dit "Digital Audio Tape", canal à 1 Mb/s, vidéotéléphone. Le codage ayant été réalisé de façon connue, le décodage pro- cède à la reconstruction d'une trame sur deux par interpolation avec compensation de mouvement symétrique connue sous le nom de "frame skip". Les dispositifs de décodage réalisés jusqu'à présent sont peu intégrés par le simple fait qu'il n'existe pas de circuits intégrés per- mettant de réaliser toutes ces fonctions Des architectures modulaires ont été envisagées, mais avec une faible possibilité d'intégration, et une optimisation limitée entre les différents blocs Cette approche est insuffisante lorsque l'on désire utiliser de tels décodeurs dans une gamme de produits grand public o le faible coût et le nombre limité de boîtiers sont primordiaux. Le décodage en temps réel d'images animées fortement compri- mées requiert à la fois une grande puissance de traitement et un vaste espace mémoire destiné à stocker une ou plusieurs images Une partie significative du coût d'un tel décodeur est représentée par la mémoire. La taille de cette mémoire étant relativement importante, on ne peut pas la réaliser en un seul circuit intégré avec la partie opérative du déco- deur Il se pose alors des problèmes d'accès à cette mémoire externe, le rythme d'échanges nécessitant un débit très important Ce problème prend toute son-acuité avec les décodeurs mettant en oeuvre des algorithmes de codage inter-image et de reconstruction par interpolation d'images En effet il faut, pour générer un point d'une image accéder aux points cor- respondants dans d'autres images, et donc conserver en mémoire plusieurs images complètes D'autre part, la mise en oeuvre d'algorithmes de compression d'images nécessite à l'entrée du décodeur une mémoire tampon d'une taille telle qu'il n'est pas non plus envisageable de l'intégrer dans le décodeur. En résumé, un tel décodeur se compose de deux parties une partie 'processeur" chargée de réaliser des traitements plus ou moins complexes, et une partie "mémoire" chargée de mémoriser une ou plusieurs images issues du décodage (ainsi qu'éventuellement une mémoire tampon de régulation située en amont du décodage). Chacune de ces parties représente une fraction sensible- ment comparable du coût du décodeur Il est donc indispensable, pour offrir un ensemble intéressant, de disposer d'un procédé de décodage qui, en respectent les contraintes de l'algorithme, optimise le coût de l'ensemble processeur et mémoire associée. A cet effet, le procédé selon l'invention est remarquable en ce que ladite interpolation, pour créer une image à partir d'une ima- ge précédente et d'une image subséquente, débute avant la fin du décoda- ge des données de luminance de l'image subséquente. On économise ainsi la capacité de mémoire d'une trame en luminance. Avantageusement, ladite interpolation débute après le décodage de la moitié des données de luminance de l'image subséquente, et les données de luminance d'une image de rang N sont remplacées dans la mémoire par celles de l'image de rang N+ 4 dès que la moitié de la génération de la luminance de l'image de rang N+ 1 a été réalisée. Pour simplifier la mise en oeuvre du procédé, il est avan- tageux de prévoir un retard fixe entre le commencement de la génération d'une image et le commencement du décodage des données numériques d'une autre image. Afin d'économiser encore de la capacité mémoire, il est avanta- geux de commencer la présentation d'une image avant que la génération de cette image ne soit terminée. La description qui va suivre, en regard des dessins annexés décrivant des exemples non limitatifs fera bien comprendre comment l'in- vention peut être réalisée. La figure 1 est un schéma d'un système incorporant un décodeur dans lequel l'invention peut être mise en oeuvre. La figure 2 illustre le découpage fonctionnel du décodage. La figure 3 est un diagramme pour expliquer les temps d'accès aux différentes images contenues en mémoire. La figure 4 est un schéma d'un décodeur et d'une mémoire pour la mise en oeuvre du procédé de l'invention. Les figures 5 et 6 sont des diagrammes de temps montrant la syn- chronisation entre le décodage et la génération des images. Dans le présent exemple, on utilise une base de données stockée sur disque compact, données qui sont enregistrées sous forme numérique et représentent des informations de types divers programme à exécuter par le microprocesseur du système données alphanumériques graphiques affichables sur un écran de type télévision images naturelles fixes séquences d'images naturelles animées son ou parole Le système d'exploitation de cette base de données consiste en un lecteur de disque compact numérique auquel relié à un système de traitement de l'information représenté sur la figure 1 organisé autour d'un microprocesseur et de son bus associé Un circuit spécialisé 22 (Video Controleur) se charge de l'interface avec le dispositif d'affi- chage 24 de type écran de télévision Ce circuit 22 commande la lecture d'une mémoire d'affichage 23 qui contient les images à afficher et assu- re ainsi la lecture des pixels de manière à les délivrer à l'écran au rythme du balayage de télévision Le système est muni en outre d'un décodeur 21 dans lequel est mise en oeuvre la présente invention et dont le rôle est de décoder les informations des images animées dans la mémoire d'affichage 23 à une cadence suffisante pour permettre au cir- cuit 22 de les lire et de les visualiser. Le codage est fait selon un algorithme qui code des images suc- cessives notées IM(N), IM(N+ 1), IM(N+ 2) de façon séquentielle, à un rythmes de 25 Hz Une image IM(N) est composée d'une trame en luminance notée Y(N) et d'une trame en chrominance notée C(N) représentant les composantes de différence de couleur notées U(N) et V(N). La chrominance de toutes les trames est codée et la luminance d'une trame sur deux est codée, celle des trames paires par exemple. Pour ces codages, on réalise des fonctions algorithmiques connues dans le domaine de la compression d'images: codage en cosinus discret (DCT = Discret Cosinus Transform) avec compensation de mouvement par rapport à la trame précédente, quantification adaptative, codage à longueur variable (VLC = Variable Length Coding) On ne transmet que l'informa- tion de mouvement des trames impaires en luminance Y(N) qui sont recons- truites au décodage par compensation de mouvement symétrique par rapport aux trames Y(N-1) et Y(N+ 1). L'algorithme de décodage nécessite au minimum deux mémoires de trame en luminance et deux mémoires de trame en chrominance En effet pour décoder une trame codée, on doit disposer de la trame précédente et pour reconstruire les trames interpolées en luminance Y(N) on doit dis- poser en mémoire des informations dans Y(N-1) et Y(N+ 1) nécessaires à la compensation de mouvement symétrique. L'algorithme complet réalisé par le décodeur 21 peut être séparé en un processus de décodage proprement dit (DEC) et un processus de génération d'images (GEN) Le décodage proprement dit consiste en un décodage de codes à longueur variable, suivi d'une quantification inver- se puis d'une transformation en cosinus discret avec compensation de mouvement, toutes ces opérations étant connues de l'homme du métier La génération d'images est constituée par: l'interpolation de la trame manquante en luminance à partir de l'in- formation de déplacement le rééchantillonage de la chrominance le formatage des images au format YUV ou DYUV Sur la figure 2, l'algorithme est schématisé par ses opérations essentielles Les codes à décoder sont présentés sur le bus système 9. Le module 10 réalise la fonction de régularisation de la fourniture des codes, lesquels arrivent à longueur variable sur le bus 9 Les codes sont ensuite traités dans le module 4 qui réalise le décodage proprement dit, c'est-à-dire quantification inverse, et DCT inverse Les données décodées sont reprises par le module 5 qui réalise la génération d'ima- ges. Deux mémoires 7 et 8 notées aussi MEM 1 et MEM 2 sont utilisées à tour de rôle d'une manière symbolisée par les flèches 1, 2, 3: La flè- che 1 symbolise l'écriture d'un bloc décodé, la flèche 2 symbolise la lecture d'un bloc compensé en mouvement dans la trame précédente, et la flèche 3 symbolise la lecture d'un bloc décodé avec ou sans compensation de mouvement. Une image affichable est enfin fournie au module 22 (qui réalise l'interface avec l'affichage) par le module de génération d'image 5, à l'aide des mémoires 7 et 8. Sur la figure 3 est indiqué de quelle façon les différents accès mémoire sont imbriqués, au cours du temps Un groupe de tracés référencé DEC se rapporte aux accès mémoire correspondant au décodage proprement dit et un groupe de tracés référencé GEN se rapporte aux accès mémoire correspondant à la génération d'image proprement dite Dans chacun de ces groupes, un signal noté S comporte des impulsions de synchronisation (front descendant actif), et des lignes notées Y(N), Y(N+ 2), C(N), C(N+ 1) indiquent par des segments dessinés en gras les périodes o ont lieu les transferts mémoire concernant respectivement la luminance d'une image de rang N (paire), la luminance de l'image de rang N+ 2 (soit donc la luminance de l'image transmise après celle de rang N), la chrominan- ce d'une image de rang N, et la chrominance de l'image de rang N+ 1 (soit donc la chrominance de l'image suivante) Le dessin respecte la concor- dance temporelle des signaux entre les groupes DEC et GEN, et chaque ligne Y ou C correspond à une position physique différente en mémoire. La partie DEC est facile à comprendre: les informations de chrominance d'une image sont traitées deux fois plus vite que les infor- mations de luminance de cette même image, du fait du sous-échantillonna- ge spatial de la chrominance et du sous-échantillonnage temporel de la luminance On traite donc deux images en chrominance pendant qu'on trai- te une image en luminance Les données de chrominance des images de rang N et N-1 sont traitées en même temps que les données de luminance de l'image de rang N Par exemple les données de chrominance C 2 et Cl sont traitées en même temps que les données de luminance Y 2, les données de chrominance C 4 et C 3 sont traitées en même temps que les données de luminance Y 4, etc Les données Y 4 remplacent en mémoire les données YO, les données C 2 remplacent les données Co et de même chaque fois que des données sont représentées sur la même ligne que d'autres. Sur la partie GEN sont indiquées des périodes I Me à IM 6 dont les indices représentent à chaque fois le rang de l'image en cours de géné- ration, par rapport au rang N (par exemple IM 1 se rapporte à une image de rang N+ 1, IM 2 à une image de rang N+ 2, etc) Lors de la génération de la luminance pour l'image IMO (de rang N), qui se fait sans interpola- tion, les transferts mémoire concernent la luminance et la chrominance de l'image de rang N, ce qui est indiqué par un trait gras sur les lignes Y(N) et C(N) Lors de la génération de la luminance pour l'image IM 1 (de rang N+ 1), qui se fait par interpolation entre les images N et N+ 2, les transferts mémoire concernent ces deux images, ce qui est indiqué par un trait gras sur les lignes Y(N) et Y(N+ 2) Il est à remar- quer que la génération d'une image impaire (interpolée en luminance) se fait en deux fois plus de temps que pour une image paire car il faut lire deux trames de luminance pour en générer une En ce qui concerne la chrominance, comme il n'y a pas d'interpolation, la génération de l'ima- ge IM 1 se fait en accédant à la chrominance de rang N+ 1, ce qui est indiqué par un trait gras sur la ligne C(N+ 1), et ainsi de suite. La génération de la trame impaire IM 1 par interpolation débute, au moment illustré par une ligne verticale G, avant la fin du décodage des données de luminance de la trame subséquente Y 2 (dans le groupe DEC), et plus exactement après le décodage de la moitié de ces données, illustré par la ligne verticale D En outre les données de luminance d'une trame de rang N sont remplacées dans la mémoire par celles de la trame de rang N+ 4 dès que la moitié de la génération de la luminance de la trame de rang N+ 1 a été réalisée, par exemple Y 8 commence à remplacer Y 4 avant la fin de IM 5, plus précisémment lorsque la moitié de I Ms a été réalisée Ces deux conditions aux limites donnent la valeur à donner au retard fixe entre le processus de génération et celui de décodage Ce retard fixe est illustré par D entre le commencement de la génération d'une image IM 3 et le commencement du décodage Y 6,C 5 d'un autre image. Bien entendu, comme la durée de chaque processus est fixée, cala revient au même de dire qu'il y a un retard de Y 6 vis-à-vis de IM 8 ou un retard de IM 4 ou IM 5 vis-à-vis de Y 6. La génération d'une image non interpolée (paire) débute après la fin du décodage des données de luminance et de chrominance de cette tra- me, et la génération d'une image interpolée débute après la fin du déco- dage des données de chrominance de cette trame Par exemple la généra- tion de I Mz débute après la fin du décodage des données de luminance Y 2 et de chrominance C 2 et la génération d'une image interpolée IM 1 débute après la fin du décodage C 1. La génération d'images est donc synchrone avec le décodage des images, ce qui permet d'utiliser les buffers d'images nécessaires à la génération des images à la fois en lecture et en écriture On économise ainsi la mémorisation d'une trame en luminance et d'une trame en chromi- nance Comme l'interpolation de la trame de luminance relative à la génération de l'image impaire s'effectue "à la volée" il n'est pas nécessaire de mémoriser cette trame, d'o un gain mémoire d'une image complète. Grâce à l'organisation particulière décrite ci-dessus du séquen- cement de décodage et de la génération des images, on peut se contenter d'une capacité mémoire du décodeur correspondant à deux images, l'image générée étant directement envoyée dans la mémoire d'affichage Cette réduction de capacité mémoire permet la réalisation avec un petit nombre de boitiers Une conséquence de ce fait est que la largeur du bus de données se réduit: le bus a en effet une largeur au plus égale au nom- bre de boîtiers multiplié par le nombres de bits accessibles en parallè- le sur un boîtier Ceci conditionne le débit maximum entre le décodeur et sa mémoire. L'algorithme de décodage étant différentiel, Y(N+ 2) est décodé à partir de Y(N), et C(N+ 2) est décodé à partir de C(N+ 1), l'organisation de la mémoire en deux buffers de luminance et deux buffers de chrominan- ce permet de réaliser un décodage (VLC inverse, quantification inverse, DCT inverse avec compensation de mouvement) selon la séquence indiquée sur la figure 3. Concernant la luminance, la reconstruction de la trame Y(N) par compensation de mouvement symétrique implique que les déplacements ver- ticaux ne dépassent pas la moitié de la dimension verticale de l'image en 40 ms On notera que les déplacements verticaux critiques ne dépassent guère 32 pixels par 40 ms, autrement dit la limite algorithmique ne sera jamais atteinte avec les formats d'images standards (par exemple: 256 x 352 pixels). Les mémoires les moins chères sont des mémoires dynamiques L'in- convénient de telles mémoires est leur long temps d'accès en mode aléa- toire, dû au multiplexage des adresses en deux champs (rangée et colon- ne) Pour pallier cet inconvénient, les traitements sont organisés de telle façon que les accès à la mémoire se font en majorité par salves de mots d'adresses consécutives appartenant à une même rangée (mode Ipage'). A l'intérieur du circuit sont ajoutées des mémoires tampons permettant de constituer ces salves Ce mode de travail permet d'accéder à la mémoire dynamique en mode page, dans lequel on ne spécifie pour chaque mot que l'adresse colonne, et qui permet un débit considérable, typique- ment supérieur à celui des mémoires statiques de taille équivalente. L'ensemble des transferts nécessaires peut être alors conduit avec un bus de données acheminant un seul pixel à la fois, compatible avec la faible largeur de bus mentionnée plus haut La conjugaison de ces mesu- res (accès en salves et réduction du nombre d'images intermédiaires) aboutit à une solution particulièrement économique. Le schéma bloc du décodeur et de sa mémoire associée pour la mise en oeuvre du procédé est représenté sur la figure 4 Un automate 14 reçoit en début de séquence d'images à décoder, de la part d'un supervi- seur non représenté, des informations lui donnant le nombre NH de blocs de l'image en horizontal et le nombre NV de blocs de l'image en verti- cal A partir de ces paramètres il compte tous les T/2 unités de temps (la valeur de T sera explicitée plus moin) et génère des signaux de validation AG et AD des modules de génération 13 et de décodage 12 res- pectivement, ainsi qu'un signal AEBD d'autorisation d'écriture de code dans la mémoire tampon de régulation 15, d'une capacité de quelques kilooctets. Les données transitent entre la mémoire tampon 15, les modules de génération 13 et de décodage 12 et une mémoire 18 au moyen d'un bus de données 16, avec l'aide d'un bus d'adresse 17. Le système est bâti autour d'une seule mémoire 18 contenant l'équivalent de deux images intermédiaires et dans laquelle le décodeur lit et écrit les valeurs des pixels appartenant à ces images Cette mémoire contient: deux trames en luminance espacées temporellement de 80 ms, soit YN et YN+ 2 deux trames en chrominance espacées temporellement de 40 ms, soit CN+j et CN+ 2 la mémoire tampon de régulation organisée en FIFO et contenant le code d'un couple d'images comprimées. Le décodeur doit pouvoir fournir au dispositif d'affichage un couple d'images en moins de 80 ms Cependant si ce dispositif désire afficher des images à un rythme inférieur à 25 images par secondes, le décodeur peut stopper la génération d'images et par conséquent le déco- dage sur ordre du superviseur. Le superviseur envoie à l'automate 14 un signal de début de génération d'un couple d'images P 21 (Prêt pour 2 Images) Ce signal pas- se à l'état haut avec une périodicité supérieure ou égale à 80 ms A par- tir de ce signal le décodeur génère en interne des signaux nommés: AGP (Attente de Génération d'Image Paire) AGI (Attente de Génération d'Image Impaire) AD (Attente de Décodage) AEBD (Attente d'Ecriture de la mémoire tampon Décodeur) Les signaux P 2 I, AGI, AGP, AD, et AEBD sont illustrés par les figures 5 et 6 qui montrent la synchronisation des processus de décodage et de génération d'images Les figures utilisent les références (GEN, YN, etc) déja employées plus haut Le temps de base pour la génération d'une image paire est indiqué par T La figure 5 concerne le cas o on décode des images de taille maximale à une fréquence d'affichage infé- rieure à 25 Hz La figure 6 concerne le cas o la taille des images est inférieure à la taille maximum autorisée Dans ce cas le processus est terminé à un instant indiqué par le front descendant du signal AEBD et il y a alors un temps d'attente avant le début du processus suivant. Le système décrit ci-dessus impose que les processus GEN et DEC soient réalisés en un temps fixe, et la mémoire 18 qui est reliée à un seul bus doit être partagée entre ces deux processus Ceci pose un pro- blème qui peut être résolu en attribuant des fenêtres temporelles de longueur fixe à chacun des processus GEN et DEC pour accéder à la mémoi- re La taille et la fréquence de répétition de ces fenêtres doivent être déterminées en fonction du nombre d'accès mémoire à effectuer pendant le temps imparti à chaque processus, comme indiqué par la figure 6, et de la largeur du bus de communication entre le décodeur 18 et sa mémoire 21 (figure 4). On appelera performance du système de décodage la puissance de calcul du décodeur (nombre maximum de blocs pouvant être décodés par unité de temps) et la bande passante des unités dialoguant avec le déco- deur (nombre d'échanges par unité de temps) La performance du système de décodage doit assurer que T+T/2 (voir figures 5 et 6) soit inférieur à 80 ms, pour assurer la génération ainsi que le décodage d'un couple d'images en moins de 80 ms Il est à remarquer que les performances du système de décodage doivent être calculées pour la taille d'image maxi- male Si le format d'images est réduit, le décodage se fera comme indi- qué sur la figure 6. L'automate autorise l'écriture dans la mémoire de régulation s'il reçoit le signal P 2 I toutes les 80 ms Il compte en interne pendant ms après l'arrivée de chaque signal M 22 Si au bout de 80 ms il ne reçoit pas un nouveau signal M 22 il interdit toute nouvelle écriture dans la mémoire de régulation jusqu'à l'arrivée du nouveau signal P 2 I. Un tel système évite tout débordement de la mémoire de régulation. REVENDICATIONS: 1 Procédé de décodage d'images animées, faisant usage d'un proces- seur pour traiter des informations de luminance et de chrominance, et d'une mémoire pour mémoriser les informations correspondantes concernant une ou plusieurs images, dans lequel on procède d'abord au décodage de données numériques puis à la génération d'images à partir desdites don- nées décodées, et dans lequel la création d'images se fait avec interpo- lation à partir d'une image précédente et d'une image subséquente, caractérisé en ce que ladite interpolation débute avant la fin du déco- dage des données de l'image subséquente. 2 Procédé selon la revendication 1, caractérisé en ce que ladite interpolation porte sur les données de luminance, et l'interpolation débute avant la fin du décodage des données de luminance de l'image sub- séquente. 3 Procédé selon la revendication 2, caractérisé en ce que ladite interpolation débute après le décodage de la moitié des données de lumi- nance de l'image subséquente. 4 Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que les données de luminance d'une image de rang N sont remplacées dans la mémoire par celles de l'image de rang N+ 4 dès que la moitié de la génération de la luminance de l'image de rang 4 + 1 a été réalisée. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on prévoit un retard fixe entre le commencement de la génération d'une image et le commencement du décodage de données numériques d'une autre image. 6 Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la génération d'une image non interpolée débute après la fin du décodage des données de luminance et de chrominance de cette image, et la génération d'une image interpolée débute après la fin du décodage des données de chrominance de cette image. 7 Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on commence la présentation d'une image avant que la génération de cette image ne soit terminée. 8 Dispositif de décodage muni d'une mémoire d'images, muni d'un processeur pour traiter des informations de luminance et de chrominance, avec des moyens pour décoder des données numériques, des moyens pour générer des images à partir desdites données décodées, des moyens pour créer une image avec interpolation entre une image précédente et une image subséquente,et avec une mémoire pour mémoriser les informations correspondantes concernant une ou plusieurs images, caractérisé en ce que ladite mémoire est organisée en: deux parties contenant respectivement deux trames en luminance espacées temporellement de 80 ms, deux autres parties contenant respectivement deux trames en chrominance espacées temporellement de 40 ms, et une partie servant de tampon de régulation, organisée en FIFO, et contenant les codes d'un couple d'images comprimées.