(19)
(11) EP 0 145 046 A2

(12) DEMANDE DE BREVET EUROPEEN

(43) Date de publication:
19.06.1985  Bulletin  1985/25

(21) Numéro de dépôt: 84201491.2

(22) Date de dépôt:  16.10.1984
(51) Int. Cl.4G09G 1/16
(84) Etats contractants désignés:
DE FR GB

(30) Priorité: 19.10.1983 FR 8316637

(71) Demandeurs:
  • LA RADIOTECHNIQUE PORTENSEIGNE
    92150 Suresnes (FR)

    FR 
  • Philips Electronics N.V.
    5621 BA Eindhoven (NL)

    DE GB 

(72) Inventeur:
  • Bottiau, Michel Société Civile S.P.I.D.
    F-75007 Paris (FR)

(74) Mandataire: Pinchon, Pierre (FR) et al
10, Avenue Charles de Gaulle ESC J
F-78230 Le Pecq
F-78230 Le Pecq (FR)


(56) Documents cités: : 
   
       


    (54) Procédé pour engendrer des objets dans une image vidéo


    (57) Le procédé de l'invention concerne la génération d'une pluralité d'objets mobiles ou fixes sur un écran vidéo. particulièrement dans le cadre de systèmes de jeux.
    Il utilise une mémoire topologique 20 représentant l'image point à point et une mémoire de formes 31 dans laquelle les objets sont décrits par segments successifs placés à la suite les uns des autres dans la mémoire. Un générateur d'images 26 exploite le contenu de la mémoire de formes 31 en fonction de celui de la mémoire topologique 20 qui est lue en temps réel par l'interface 21, et fournit à chaque instant l'indication de la couleur à reproduire sur l'écran.




    Description


    [0001] La présente invention concerne un procédé pour engendrer dans une image décrite par une succession de lignes en liaison avec des signaux de synchronisation de ligne et de trame, des objets représentés par une série de segments les uns au-dessus des autres, chacun correspondant à une ligne de l'image.

    [0002] Elle concerne, de manière générale, l'affichage d'images vidéo et plus particulièrement la génération d'une pluralité d'objets mobiles sur un écran vidéo, dans le cadre de systèmes de jeux vidéo, dans lesquels on utilise un microprocesseur pour gérer l'ensemble d'un système et faire évoluer la position des objets en modifiant le contenu des mémoires.

    [0003] Pour placer l'image d'un objet mobile dans une trame de télévision, les générateurs vidéo connus comparent les coordonnées X et Y du premier point significatif du mobile au contenu de compteurs qui suivent la position du spot d'un tube à écran cathodique. Un tel procédé est décrit par exemple dans le brevet des Etats-Unis d'Amérique US 4 116 444 dans lequel un élément soustracteur et comparateur contrôle pour chaque ligne d'image si celle-ci comporte un objet, en lisant à chaque fois le contenu entier d'une mémoire contenant les coordonnées des objets.

    [0004] Un tel procédé est rapidement limité par la vitesse des circuits car un grand nombre de comparaisons de coordonnées et de calculs doit être réalisé au cours de la description de l'image, ce qui limite le nombre d'objets différents pouvant être représentés ensemble. Le procédé décrit dans le document cité apporte une amélioration en ce qu'il prépare à l'avance tout l'affichage d'une ligne dans une mémoire dite "horizontal memory". Cette mémoire doit cependant être complètement remise à jour pour chaque ligne de l'image, et on dispose seulement pour cela de la durée d'un retour de ligne.

    [0005] Il a également été proposé d'utiliser une mémoire représentant le contenu complet de l'écran.

    [0006] Le brevet des Etats-Unis d'Amérique US 4 165 072 décrit une telle solution. Ce document indique (colonne 3, dernier paragraphe) qu'une telle architecture est idéale pour deux niveaux de vidéo (par opposition à de la couleur) parce qu'une mémoire du contenu complet de l'écran enregistre "de façon inhérente" deux niveaux de données binaires. Le document mentionne que, cependant, en doublant le volume mémoire, quatre niveaux sont possibles; en triplant la mémoire, on aurait huit niveaux, etc... Une telle solution conduirait donc dans le cas de la couleur, et avec 4 bits seulement pour la définition de la couleur, à des mémoires de 256 K octets pour décrire une image de 256 x 256 points, ce qui est rédhibitoire. De plus, ces mémoires devraient être très rapides...

    [0007] Le procédé selon la présente invention évite ces inconvénients et permet de traiter aisément un grand nombre d'objets ensemble. Il permet en outre de traiter un paysage de fond selon la même procédure que les objets mobiles, ce qui simplifie la programmation de l'image complète et offre des possibilités supplémentaires d'animation.

    [0008] Il est basé sur l'idée d'introduire dans une mémoire de contenu complet de l'écran, à la place de bits décrivant directement chaque point d'image ou pixel, des numéros placés seulement aux endroits où commence un objet et renvoyant à une description des objets dans une autre mémoire.

    [0009] Le procédé selon la présente invention est ainsi notamment remarquable en ce que :

    - on enregistre dans au moins une mémoire dite "topologique" pour chaque ligne de l'image au cours de laquelle on rencontre un objet, un groupe de données indiquant le début du segment de l'objet au niveau de cette ligne et comportant un numéro d'identification de cet objet, ce groupe de données ayant une position dans la mémoire qui correspond sensiblement à la position du segment dans l'image,

    - on enregistre dans une mémoire dite "de formes" des chaines de données constituant la description desdits segments constituant les objets,

    - on enregistre dans un registre d'adresses, associé à la mémoire topologique, à des positions correspondant respectivement à chaque numéro d'objet, des adresses de début et de départ de la description desdits objets dans la' mémoire de formes,

    - on lit la mémoire topologique en synchronisme avec la description de l'image,

    - lorsqu'on y trouve l'indication du début d'un segment et le numéro de l'objet dont il fait partie, on se reporte à la position correspondant audit numéro dans le registre d'adresses pour y trouver l'adresse à laquelle se trouve, dans la mémoire de formes, la description du segment qui doit être représenté, et

    - enfin, on lit la chaîne de données décrivant ce segment, en synchronisme avec la description de l'image.



    [0010] Avantageusement, ledit registre d'adresses est constitué de deux piles, l'une contenant pour chaque numéro d'objet l'adresse, fixée au moins pour la durée d'une trame, du début de la description dudit objet dans la mémoire de formes, et l'autre contenant une adresse de départ correspondant à la description d'un segment de l'objet, adresse de départ qui est modifiée chaque fois qu'un nouveau segment différent du précédent doit être représenté.

    [0011] Dans une variante particulièrement avantageuse du procédé, au lieu d'enregistrer les groupes de données indiquant le début d'un segment à la place exacte, où commence ce segment, on les enregistre en des positions prédéterminées selon une grille régulière dans la mémoire topologique, et ces groupes de données comportent, outre le numéro d'objet, une série de bits indiquant la valeur du décalage entre la position exacte du segment et la position du groupe de données.

    [0012] Pour soulager le microprocesseur d'une partie répétitive des tâches de mise à jour des mémoires, on utilise avantageusement, pour modifier le contenu de la mémoire topologique, un automate qui arrange ledit numéro et ladite valeur du décalage selon un format prédéterminé, et charge ce groupe de données en parallèle dans la mémoire topologique. Ainsi, ces tâches sont considérablement allégées et peuvent être effectuées avantageusement pendant les retours de trame de l'image.

    [0013] Une amélioration qui permet de gagner de la place en mémoire consiste en ce qu'on enregistre en outre dans chaque groupe de données de la mémoire topologique un bit dit "de répétition" indiquant le cas échéant que, lorsqu'on retrouvera ultérieurement le même numéro d'objet, c'est le même segment qui devra alors être à nouveau représenté, et en ce que, après avoir lu l'adresse de départ dans le registre d'adresses, on y laisse cette même adresse dans le cas d'une répétition, alors qu'on la remplace par celle du segment suivant dans le cas contraire.

    [0014] Afin d'éviter la perte de l'adresse du segment suivant lorsque la description d'un segment est interrompue par une fin de ligne, il est avantageux d'enregistrer l'adresse de la chaîne de données décrivant le segment suivant en tête de chaque description de segment dans la mémoire de formes.

    [0015] Lorsqu'un objet qui se déplace sort progressivement de l'image par son bord gauche, l'indication de la présence de cet objet disparaît de la mémoire topologique, puisque c'est le début de chaque segment, c'est-à-dire son extrémité gauche, qui y est indiquée. Pour remédier à cet inconvénient, le procédé est remarquable en ce qu'en outre on subdivise la description de chaque segment dans la mémoire de formes en sous-segments dont la représentation dans l'image a une longueur déterminée constante, sauf pour le dernier sous-segment d'un segment, en ce qu'en tête de chaque chaîne de données décrivant un sous-segment, on place l'adresse du sous-segment correspondant du segment suivant, et en ce qu'on prévoit dans la mémoire topologique des positions correspondant à des portions de ligne d'image fictives non représentables et situées à gauche et à l'extérieur de l'image.

    [0016] En outre, pour gagner de la place dans la mémoire de formes, lesdites chaînes de données dans la mémoire de formes sont constituées avantageusement de blocs ayant tous la même longueur et comportant au moins un bloc d'adresse contenant l'adresse de la chaîne de données décrivant le segment suivant, et un bloc dit "bloc de pixels" contenant

    - des indications sur sa propre position par rapport aux autres blocs,

    - et la description d'une succession de points définie par leur couleur et leur nombre.



    [0017] Pour résoudre les problèmes de collisions entre objets, c'est-à-dire d'objets que leur mouvement entraîne à se recouvrir au moins partiellement l'un l'autre, il est avantageux d'utiliser plusieurs mémoires topologiques correspondant chacune à un plan d'image et qui exploitent ensemble une mémoire de formes commune, et d'établir alors des priorités entre les mémoires topologiques, c'est-à-dire entre les numéros d'objets à représenter issus de la lecture simultanée des différentesmémoires topologiques.

    [0018] La description qui va suivre en regard des figures annexées, données à titre d'exemple non limitatif, fera bien comprendre comment l'invention peut être réalisée.

    La figure 1 illustre la manière de réprésenter un objet.

    La figure 2 représente schématiquement un exemple de contenu d'une fraction de la mémoire topologique.

    La figure 3 représente schématiquement l'organisation en blocs de la mémoire de formes.

    La figure 4 représente un objet de grande dimension pouvant sortir de l'image par son bord gauche.

    La figure 5 est un schéma synoptique d'une configuration de système permettant de mettre en oeuvre le procédé.



    [0019] On appelle "forme" l'ensemble des points ou "pixels" constituant l'image d'un objet lorsque celui-ci est analysé suivant la trame télévision. Une telle forme est faite d'une suite de "segments". Un segment est lui-même une suite de points ou de groupes de points qui seront affichés à la suite les uns des autres sur une ligne télévision. Une telle suite de points ou pixels pourrait être décrite en tant que telle en admettant comme cas général que chaque pixel est décrit individuellement. Il est plus avantageux, dans le cas d'une suite de pixels identiques en couleur, qu'un code permette de décrire toute la suite en une seule fois. Les informations décrivant les segments d!une forme sont enregistrées à des adresses consécutives dans une mémoire appelée "mémoire de formes", y constituant ainsi des chaînes de données.

    [0020] Le fonctionnement du système est basé sur l'utilisation d'une mémoire dite "topologique" associée à ladite mémoire de formes. La mémoire topologique constitue en quelque sorte une carte géographique de l'image, cette dernière étant symboliquement divisée en petits carreaux dont chacun est représenté par une position dans la mémoire topologique. On enregistre dans cette mémoire topologique, pour chaque ligne de l'image au cours de laquelle on rencontre un objet, un groupe de données indiquant le début du segment de l'objet au niveau de cette ligne et comportant un numéro d'identification de cet objet, ce groupe de données ayant une position dans la mémoire qui correspond sensiblement à la position du segment dans l'image. On lit ensuite la mémoire topologique en synchronisme avec la description de l'image et, lorsqu'on y trouve l'indication du début d'un segment et le numéro de l'objet dont il fait partie, on se reporte à la description du segment qui doit être représenté, description qui se trouve dans la mémoire de formes où on lit, en synchronisme avec la description de l'image, la chaîne de données décrivant le segment.

    [0021] La lecture de la mémoire topologique est, en pratique, décalée très légèrement en avance par rapport à l'exploration de l'image pour tenir compte des temps d'accès mémoire précédant l'obtention des informations nécessaires pour définir chaque point d'image.

    [0022] Le champ de l'image comporte par exemple 256 lignes de 256 points ou pixels chacune, dont 220 sont affichés.

    [0023] En principe, et pour faciliter leur manipulation, tous les segments d'une forme sont alignés "à gauche", c'est-à-dire que leurs débuts ont tous la même abscisse sur l'écran. Par contre, ils peuvent être de longueur quelconque.

    [0024] La figure 1, qui représente un arbre, montre comment la description d'une forme est organisée. Cette silhouette mesure 24 pixels de large et 30 lignes de haut. Soit à placer cet arbre dans la position indiquée sur la figure, sa crête étant située à la ligne 32 et son pied à la ligne 61, son bord le plus à gauche à la colonne 156. Le premier segment rencontré est celui de la ligne 32 : il commence par 9 pixels "transparents" qui sont suivis de 6 pixels colorés, par exemple en vert.

    [0025] Au bout de ces 6 pixels verts, le segment est terminé. Un segment situé par exemple à la ligne 38 sera constitué de 24 pixels verts. Tous les segments commencent ainsi à la colonne 156. La couleur "transparent" signifie que la couleur d'un autre élément d'objet placé au même endroit a priorité sur elle, et ceci quelque soient d'autres priorités établies par ailleurs. Les segments correspondant aux lignes 38 à 43 sont identiques entre eux : une solution évidente consiste à répéter 6 fois le même segment en mémoire de formes. Il est plus avantageux qu'il n'y figure qu'une fois. Ceci est possible si on prévoit dans la mémoire topologique la possibilité d'indiquer une répétition du même segment. Il en est de même pour les lignes 50 à 58 et pour les deux lignes 60, 61. Ces segments peuvent être décrits une seule fois chacun dans la mémoire de formes, leur répétition étant signalée dans la mémoire topologique. On enregistre donc dans chaque groupe de données de la mémoire topologique un bit dit "de répétition" indiquant, le cas échéant, par exemple lorsqu'il est à "1",que lorsqu'on retrouvera ultérieurement le même numéro d'objet, c'est le même segment qui devra alors être à nouveau représenté.

    [0026] Ce bit peut être utilisé, comme ci-dessus, pour éviter la répétition de la description d'un segment dans la mémoire de formes, mais aussi en répétant par exemple deux fois chaque segment d'un objet donné pour dilater ce dernier dans le sens vertical. Il peut aussi être utilisé lorsque plusieurs objets identiques sont situés à une même coordonnée Y. Dans ce cas, chaque segment d'un objet qui n'est pas le premier rencontré est décrit par répétition du segment de l'objet précédent, qui porte le même numéro. Grâce à cet artifice, plusieurs objets peuvent être désignés par le même numéro, ce qui augmente encore le nombre d'objets pouvant être représentés. Inversement, lorsque le même objet doit être représenté,plusieurs fois à des hauteurs différentes dans l'image, il porte un numéro différent à chaque fois, mais ces numéros renvoient toujours à la même description dans la mémoire de formes.

    [0027] La figure 2 montre les portions de la mémoire topologique dans lesquelles des groupes de données indiquent les débuts de segments représentant l'arbre de la figure 1. Ces groupes de données sont enregistrés en des positions prédéterminées selon une grille régulière dans la mémoire topologique, et ils comportent, outre le numéro d'objet, une série de bits indiquant la valeur du décalage entre la position exacte du segment et la position du groupe de données.

    [0028] Chaque indication de début de segment occupe un octet de la mémoire, laquelle est organisée en octets. Le groupe de données n'est pas placé en position 156 (correspondant au début du segment dans l'image) car 156 n'est pas divisible par 8. Il est donc placé dans l'octet qui contient la position 156 et commence donc en 152. Les quatre premiers bits "1111" indiquent qu'il s'agit de l'objet numéro 15. Il ne peut y avoir ici que quinze objets (et non 16) car le code "0000" signifie "pas d'objet" et non "objet numéro zéro". Si l'on désire plus de quinze objets, il est facile d'imaginer d'autres codes à plus de quatre bits. Toutefois, en pratique, on utilise plusieurs mémoires topologiques correspondant chacune à un plan d'image et qui exploitent ensemble une mémoire de formes commune, et on établit des priorités entre les plans d'image, c'est-à-dire entre les numéros d'objets à représenter issus de la lecture simultanée des différentes mémoires topologiques. Ainsi, une image est composée de plusieurs plans, chacun étant décrit dans une mémoire topologique distincte, cependant que toutes les descriptions de segments sont rassemblées dans une mémoire de formes unique, commune à tous les plans. Ainsi, une grande souplesse de description est obtenue, en particulier grâce au principe des priorités, et avec par exemple quatre plans, il est possible de placer jusqu'à 4 x 15 = 60 objets différents.

    [0029] Sur la figure 2, les trois bits suivants "100" indiquent que l'objet est décalé de quatre positions par rapport à la colonne 152 : il se trouve en position 156. Le dernier bit 0 indique que ce segment ne sera pas répété. Aucune autre indication ne figure dans la ligne concernant l'objet 15.

    [0030] Le numéro d'objet et sa position "156" restent inchangés pour tout l'objet : le même octet est donc répété en même position pour les trente lignes de l'objet, à une différence près : pour les lignes 38 à 42, 50 à 57 et 60, le dernier bit est à 1, indiquant la répétition d'un segment identique à chaque ligne suivante, soit respectivement les lignes 39 à 43, 51 à 58 et 61.

    [0031] A la colonne 180 qui correspond à la fin de l'objet, rien ne figure dans la mémoire topologique : c'est dans la mémoire de formes que l'on trcuvera la mention "fin de segment" qui, en outre, n'apparaîtra pas forcément à l'abscisse 180 mais à une abscisse variable selon la forme du bord droit de l'objet.

    [0032] Les octets "10101100" dans les lignes 59 et 60 indiquent le début d'un nouvel objet, représenté sur la figure 1, portant le numéro 10 et débutant à la ligne 59 et en colonne 182.

    [0033] Une autre façon de procéder, selon laquelle on utilise encore un octet par début de segment, consiste à renoncer au bit de répétition et à utiliser quatre bits pour indiquer le décalage. Alors, un octet peut indiquer seize valeurs de décalage en plus du numéro d'objet de 1 à 15, c'est-à-dire qu'il permet de placer un objet sur seize positions tout en n'occupant lui-même que huit positions dans la mémoire. De ce fait, une mémoire topologique de 32 K bits suffit à décrire une image de 256 x 256 points.

    [0034] Le choix entre ces façons de procéder dépend du contenu de l'image : pour la description d'un fond contenant des segments longs et très répétitifs, il est avantageux d'employer un bit de répétition alors que, pour la description d'objets de petite dimension, on préfère indiquer le décalage par 4 bits, sans bit de répétition. Il est également possible d'attribuer un poids égal à "2" au chiffre de décalage, la description par 3 bits indiquant alors un décalage de zéro à seize défini deux unités par deux unités : on perd en précision de positionnement, mais on gagne la moitié de la mémoire topologique. Le procédé préféré consiste, puisque plusieurs mémoires topologiques sont employées correspondant chacune à un plan d'image, à réserver pour les fonds : une mémoire topologique avec bit de répétition et poids double pour la valeur de décalage, et pour les petits objets : des mémoires topologiques avec quatre bits de valeur de décalage et pas de bit de répétition. Bien entendu, toute autre répartition de l'affectation des bits est possible et, également, toute autre dimension totale des groupes de données,en restant dans le cadre de l'invention.

    [0035] On utilise un microprocesseur pour gérer l'ensemble du système et faire évoluer la position des objets en modifiant le contenu des mémoires et du registre d'adresses. Cette modification est effectuée pendant les retours de trame de l'image.

    [0036] Pour soulager ce microprocesseur lorsqu'on désire modifier le contenu de la mémoire topologique, un automate arrange ledit numéro et ladite valeur de décalage selon un format prédéterminé et charge ce groupe de données en parallèle dans la mémoire topologique.

    [0037] Le déplacement d'une forme n'affecte qu'une mémoire topologique. Il comprend deux opérations :

    - l'effacement

    - l'inscription. Pour l'effacement, le microprocesseur doit fournir


    à l'automate les informations suivantes :

    - "Effacement" 1 bit

    - Numéro de plan 1 bit

    - Coordonnée XO 8 bits

    - Coordonnée YO 8 bits

    - Hauteur de l'objet 8 bits



    [0038] L'automate exécute alors l'effacement de manière automatique. La fin de l'opération est marquée par l'envoi d'une interruption au microprocesseur.

    [0039] Pour l'écriture, on doit fournir :

    - "Ecriture" 1 bit

    - Numéro de l'objet 4 bits

    - Bit de répétition 1 bit

    - Coordonnées X et Y 2 octets



    [0040] Si l'on prend le cas d'un objet de hauteur égale à n lignes, il faudra n cycles d'effacement et n cycles d'inscription, soit un total de 2 x n cycles.

    [0041] On peut aussi fournir en une seule fois à l'automate les données suivantes, par exemple dans le cas où il n'y a pas de bit de répétition :

    - XO , YO , x , Y

    - numéro d'objet, numéro de plan

    - hauteur de l'objet.



    [0042] Le temps nécessaire pour exécuter cette commande, qui dépend du nombre de lignes, est de l'ordre de 0,8 µS par ligne. Le déplacement d'un arrière-plan complet simple représentant par exemple un terrain de football demande environ 250 µS. Le déplacement d'un objet moyen nécessite environ 25pS (pour une trentaine de lignes). Le temps de retour de trame d'environ 2 mS permet donc de déplacer un grand nombre d'objets.

    [0043] Dans la mémoire de formes, les chaines de données sont constituées de blocs ayant tous la même longueur et elles comportent au moins un bloc d'adresses contenant l'adresse de la chaîne de données décrivant le segment suivant, et au moins un bloc dit "bloc de pixels" contenant :

    - des indications sur sa propre position par rapport aux autres blocs

    - et la description d'une succession de points définie par leur couleur et leur nombre.



    [0044] La figure 3A donne un exemple de structure de la description d'un bloc de pixels dans la mémoire de formes.

    [0045] Un tel groupe est décrit par deux octets : l'octet de couleur 1 qui permet la description de 256 couleurs, et l'octet de service qui donne les informations suivantes :

    - le nombre de pixels dans le groupe (référence 2), (5 bits, soit 32 pixels maximum),

    - 2 bits de service (référence 3) qui décrivent la position du groupe dans le segment parmi les différentes possibilités suivantes exclusives les unes des autres : séquence normale (code 00), fin de segment (code 01), fin de l'objet (code 10), "saut ensuite" (code 11) qui signifie que les deux octets suivants doivent être sautés lorsqu'on voudra lire le groupe de pixels suivant,

    - un bit de transparence 4 indiquant par un "1" si le groupe de pixels est transparent.



    [0046] La figure 3A représente les 2 octets définissant les neuf points transparents de la première ligne de l'arbre de la figure 1.

    [0047] La figure 3B représente les deux octets définissant les six pixels suivants, le code "10110000" représentant par exemple la couleur verte désirée.

    [0048] La figure 3C représente les deux octets décrivant, à eux seuls, toute la ligne 38.

    [0049] Il est bien évident que toute autre organisation de ces chaînes de données est possible, pourvu que l'on y trouve les mêmes renseignements.

    [0050] En outre, les deux premiers octets de chaque description de segment ne décrivent pas un groupe de pixels, mais donnent l'adresse de départ du segment suivant. Ceci est utile dans le cas où un segment en cours serait interrompu avant sa fin par un retour de ligne.

    [0051] Un exemple de structure de la description d'un segment entier est représentée par la figure 3D. Elle commence par l'adresse 14 du segment suivant, est suivie d'un certain nombre de couples d'octets décrivant des groupes de points (15, 17, 170, 19) dans lesquels sont intercalées d'autres adresses (16, 18). Celles-ci sont utilisées dans un cas particulier qui sera expliqué plus loin.

    [0052] Les bits de service 3 des couples d'octets situés avant chaque bloc d'adresses intercalé indiquent "saut ensuite" afin que, dans une séquence normale, ce bloc d'adresses soit sauté. Le dernier couple comporte des bits de service 3 indiquant "fin de segment". Sauf dans le cas où une adresse est intercalée, les couples d'octets décrivant les groupes de pixels d'un segment sont mémorisés dans la mémoire de formes à des adresses consécutives. De même, les chaînes de données décrivant les segments sont enregistrées bout à bout dans l'ordre de description de l'objet par lignes.

    [0053] La mémoire de formes d'objet est par exemple une mémoire statique avec un temps d'accès d'environ 100 nS. Elle est organisée par blocs de 8 bits. Elle peut être adressée en entier par le microprocesseur durant les retours de trame. Pendant le reste du temps, elle est utilisée à 100 % par la circuiterie d'affichage de l'image.

    [0054] Pour permettre de trouver dans la mémoire de formes les segments rencontrés lors de la lecture de la mémoire topologique, identifiés par un numéro d'objet, on enregistre dans un registre d'adresses associé à chaque mémoire topologique, à des positions correspondant respectivement à chaque numéro d'objet, des adresses de début et de départ de la description desdits objets dans la mémoire de formes. Ce registre d'adresses est constitué de deux piles, l'une, P , contenant pour chaque numéro d'objet l'adresse, dite "de début", fixée au moins pour la durée d'une trame, du début de la description dudit objet dans la mémoire de formes, et l'autre, P, contenant pour chaque numéro d'objet une adresse dite "de départ" correspondant à la description d'un segment de l'objet, adresse de départ qui est modifiée chaque fois qu'un nouveau segment différent du précédent-doit être représenté.

    [0055] Avec plusieurs mémoires topologiques, il convient que chacune ait son propre registre d'adresses. Ces registres renvoient tous à la même mémoire de formes.

    [0056] Soit, par exemple, à afficher un objet décrit à partir d'une adresse de départ AD dans la mémoire de formes. Soit PL le plan dans lequel on désire placer cet objet, et soit N son numéro dans ledit plan. On écrit l'adresse AD à la position N dans la pile d'adresses de début P et dans la pile d'adresses de départ P qui sont associées à la mémoire topologique décrivant le plan PL. On introduit, en outre, l'indication de l'objet dans cette mémoire topologique, de la manière décrite plus haut. (s'il s'agit d'un objet nouveau et non du déplacement d'un objet préexistant, on indique conventionnellement comme adresse précédente : 256, 256).

    [0057] La pile d'adresses de début P contient donc à tout moment les 15 adresses initiales de 15 chaînes de données décrivant chacune l'ensemble des segments d'un objet. La pile d'adresses de départ P contient l'adresse du segment en cours d'affichage ou du segment suivant. Lors des mises à jour, pendant les retours de trame, la pile PO est recopiée dans la pile P. Chaque fois qu'on rencontre un nouveau numéro d'objet dans une ligne, on lit l'adresse du segment à décrire dans la pile P du registre d'adresses. Si le bit de répétition est à "1", on saute les deux octets d'adresse par lesquels commence la chaîne de données. Si ce bit n'est pas à "1", on lit l'adresse contenue dans ces deux octets et on l'enregistre dans le registre P à la place de l'adresse de départ qu'on vient d'utiliser. On lit ensuite le bloc de pixels qui se trouve à la suite du bloc d'adresse. Le nombre de pixels de ce groupe est chargé dans un décompteur CP dont l'horloge fournit une impulsion pour chaque point d'image balayé par le système d'affichage sur écran vidéo. Dans un autre compteur CA, est recopiée l'adresse trouvée dans la pile P. Ce compteur sert à conserver à tout moment l'adresse du groupe de pixels en cours de description. Les piles P et P contiennent chacune une adresse par numéro d'objet, soit 15 adresses chacune alors que, par contre, les compteurs CP et CA n'existent qu'à un exemplaire et sont utilisés par tous les objets tour à tour. Lorsque le nombre de points d'image balayés correspond au nombre de pixels du groupe, le décompteur CP arrive à zéro. Le zéro en sortie du compteur CP déclenche l'incrémentation d'une unité de l'adresse contenue dans le compteur d'adresse CA: Alors, quatre cas peuvent se présenter selon le contenu des deux bits de service :

    1) Séquence normale : le compteur d'adresse CA, qui vient d'être incrémenté, indique donc ainsi l'adresse du groupe de pixels suivant.

    2) Fin de segment : puisque les segments sont placés bout à bout dans la mémoire de formes, l'adresse du segment suivant est, comme dans le cas précédent, indiquée par le compteur CA. Mais cette adresse est ici inutile puisqu'elle a déjà été lue en tête de segment et placée dans la pile P.

    3) Fin d'objet : on recopie de P dans P l'adresse de début de l'objet.

    4) "Saut ensuite" : on incrémente d'une unité supplémentaire le compteur d'adresses CA.



    [0058] Il est évident qu'on suppose ici la mémoire de formes organisée par couples d'octets de façon que, lorsque le compteur CA est "incrémenté d'une unité", ceci procure l'adresse du couple d'octets suivant. La programmation des opérations décrites ci-dessus : saut d'adresse, recopie, opérations sélectionnées selon des bits de service... est un travail bien connu de l'homme du métier qu'il est donc inutile de décrire en détail.

    [0059] Un cas particulier important est celui où un objet mobile se déplace vers un bord de l'image et franchit ce bord pour sortir de l'image. Si l'objet sort par la droite, il "déborde" de l'image et la description d'au moins certains segments est interrompue par des retours de ligne. L'adresse contenue alors dans le compteur CA n'est plus valide. Mais l'adresse du début du segment suivant est dans la pile P. Tout se passe alors comme dans le cas d'une fin de segment. Si l'objet sort par le bas de l'image, cela ne pose aucun problème puisque les mémoires sont remises à jour pendant les retours de trame. Si l'objet sort par le haut de l'image, son ou ses premier(s) segment(s) commence(nt) par disparaître, puis un ou quelques- uns de plus à chaque image. Lors des mises à jour, le microprocesseur place dans la pile d'adresses de début P l'adresse du n ième segment désiré, au lieu de l'adresse de début d'objet. Il trouve cette adresse, pendant les retours de trame, en explorant la mémoire de formes.

    [0060] Le cas le plus difficile est celui où l'objet disparaît progressivement par la gauche de l'image. Dès que sa limite gauche n'est plus dans l'image, il n'est, en principe, plus possible d'indiquer la présence d'un objet au moyen de la mémoire topologique puisque c'est précisément cette limite gauche qui y est mentionnée et qu'elle a disparu. Pour résoudre ce problème, on prévoit dans la mémoire topologique des positions correspondant à des portions de ligne d'image fictives non représentables et situées à gauche et à l'extérieur de l'image. Dans le cas d'objets de grandes dimensions, on est amené à prévoir un volume de mémoire très important pour représenter les parties fictives, ce qui n'est pas souhaitable. Pour éviter cela, on subdivise la description de chaque segment dans la mémoire de formes en sous-segments dont la réprésenta- tion dans l'image a une longueur déterminée constante, sauf pour le dernier sous-segment d'un segment et, en tête de chaque chaîne de données décrivant un sous-segment, on place l'adresse du sous-segment correspondant du segment suivant. Par exemple, on prévoit une bande de 32 pixels fictifs à gauche de chaque ligne dans la mémoire topologique, et on divise en sous-segments de 32 pixels la représentation des objets mobiles dans la mémoire de formes. La valeur de 32 pixels est avantageuse car elle correspond au nombre maximum de pixels qu'il est possible de décrire par un seul couple d'octets dans la mémoire de formes.

    [0061] La description de l'objet commence alors par la première colonne dont une partie est encore visible.

    [0062] La figure 4 montre l'exemple d'un objet 13 divisé en colonnes 10, 11, 12 dont chacune a une largeur de 32 pixels, sauf la dernière. Le bord gauche de l'image est indiqué en 9. La colonne 10 n'est pas utilisée, et l'adresse indiquée dans la pile P est celle de la chaîne de données décrivant le segment qui commence au point AD1. Cette chaîne est représentée sur la figure 3D. En 14, se trouve l'adresse du segment suivant ; en 15, est décrit un bloc de pixelssitués à gauche du point AD1 sur la figure 4,dont l'octet de service est représenté en détail, comportant les bits "11111" : 32 points, "11" : saut ensuite, "1" : transparence ; en 16, se trouve l'adresse du sous-segment correspondant du segment suivant, c'est-à-dire du sous-segment situé en colonne 11 dans la ligne suivante ; en 17, sont décrits les 26 premiers pixels transparents après le point AD1 de la première ligne de la colonne 11, avec un octet de service comportant les bits "11010" : 26 points, "00" : séquence normale, "1" : transparence. En 170, sont décrits les 6 points restants du groupe de 32 points de la première ligne de la colonne 11, avec un octet de service comportant les bits "00110" : 6 points, "11" : saut ensuite, "0" : non transparence. En 18, est indiquée l'adresse du sous-segment situé en colonne 12 dans le segment suivant et, en 19, est décrit le dernier groupe de pixels de la première ligne de l'objet, avec un octet de service comportant : "01100" : 12 points, "01" : fin de segment, "0" : non transparence. La référence AD1 entre les couples d'octets 15 et 16 indique l'adresse qui est enregistrée dans la pile P lors de la mise à jour d'image. Tout se passe comme si l'objet était un nouvel objet amputé de sa colonne gauche 10, sa description étant "prise au vol" à partir de l'adresse AD1. Bien entendu, à chaque amputation d'une nouvelle colonne, la coordonnée X de l'objet dans la mémoire topologique doit être augmentée de 32, en plus de la variation correspondant au déplacement souhaité, ceci pour compenser la disparition de la colonne.

    [0063] Le système représenté par la figure 5 est donc organisé autour d'une mémoire topologique 20, constituée ici de deux blocs de mémoire à accès aléatoire, dite "RAM dynamique", d'une capacité unitaire de 16 K x 4 bits, représentant quatre plans d'image en utilisant 32 K bits par plan, et de la mémoire de formes 31 constituée par exemple de 8 K octets de mémoire RAM statique rapide. Cette mémoire de formes contient tous les objets utilisables au cours d'une session d'utilisation, et pas seulement ceux qui sont affichés à un instant donné.

    [0064] Un module d'interface 21, qui contient le susdit automate, est relié par les liaisons 23, 34 respectivement à la mémoire topologique 20 et à un module 26 générateur d'images. Un multiplexeur 25 connecte à la demande les liaisons 22 entre le microprocesseur 33 et les modules Un élément de service 24 procure aux différents modules divers signaux de service : horloge, synchronisation ligne et trame. Le module d'interface 21 assure le chargement de la mémoire 20 pendant les retours de trame et sa lecture synchrone pendant l'exploration de l'image. Le générateur d'image 26, qui contient les piles P, P0 et les compteurs CA, CP, assure via la liaison 35 la lecture de la mémoire de formes selon les indications de numéro d'objet fournies par le module d'interface 21, et fournit en temps réel sur une connexion 30 l'indication de la couleur à reproduire.


    Revendications

    1. Procédé pour engendrer, dans une image décrite par une succession de lignes en liaison avec des signaux de synchronisation de ligne et de trame, des objets représentés par une série de segments les uns au-dessus des autres, chacun correspondant à une ligne de l'image, caractérisé en ce que :

    - on enregistre dans au moins une mémoire dite "topologique", pour chaque ligne de l'image au cours de laquelle on rencontre un objet, un groupe de données indiquant le début du segment de l'objet au niveau de cette ligne et comportant un numéro d'identification de cet objet, ce groupe de données ayant une position dans la mémoire qui correspond sensiblement à la position du segment dans l'image,

    - on enregistre dans une mémoire dite "de formes" des chaînes de données constituant la description desdits segments constituant les objets,

    - on enregistre dans un registre d'adresses associé à la mémoire topologique, à des positions correspondant respectivement à chaque numéro d'objet, des adresses de début et de départ de la description desdits objets dans la mémoire de formes,

    - on lit la mémoire topologique en synchronisme avec la description de l'image,

    - lorsqu'on y trouve l'indication du début d'un segment et le numéro de l'objet dont il fait partie, on se reporte à la position correspondant audit numéro dans le registre d'adresses pour y trouver l'adresse à laquelle se trouve, dans la mémoire de formes, la description du segment qui doit être représenté, et

    - enfin, on lit la chaîne de données décrivant ce segment, en synchronisme avec la description de l'image.


     
    2. Procédé selon la revendication 1, caractérisé en ce que le registre d'adresses est constitué de deux piles, l'une contenant pour chaque numéro d'objet l'adresse, fixée au moins pour la durée d'une trame, du début de la description dudit objet dans la mémoire de formes, et l'autre contenant une adresse de départ correspondant à la description d'un segment de l'objet, adresse de départ qui est modifiée chaque fois qu'un nouveau segment différent du précédent doit être représenté.
     
    3. Procédé selon l'une des revendications 1 ou 2, dans lequel on effectue une modification du contenu d'au moins une mémoire afin de faire évoluer la position des objets dans l'image, caractérisé en ce que cette modification est effectuée pendant les temps de retour de trame de l'image.
     
    4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'on enregistre lesdits groupes de données indiquant le début d'un segment en des positions prédéterminées selon une grille régulière dans la mémoire topologique, et en ce que ces groupes de données comportent, outre le numéro d'objet, une série de bits indiquant la valeur du décalage entre la position exacte du segment et la position du groupe de données.
     
    5. Procédé selon la revendication 4, caractérisé en ce que le numéro d'identification de l'objet comporte quatre bits et la valeur du décalage est indiquée également par quatre bits.
     
    6. Procédé selon la revendication 4, dans lequel on utilise un microprocesseur pour gérer l'ensemble du système et faire évoluer la position des objets en modifiant au moins le contenu de la mémoire topologique, caractérisé en ce qu'on utilise pour modifier ce contenu un automate qui arrange ledit numéro et ladite valeur de décalage selon un format prédéterminé, et charge ce groupe de données en parallèle dans la mémoire topologique.
     
    7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on enregistre en outre dans chaque groupe de données de la mémoire topologique un bit dit "de répétition" indiquant, le cas échéant, que lorsqu'on retrouvera ultérieurement le même numéro d'objet, c'est le même segment qui devra alors être à nouveau représenté, et en ce que, après avoir lu l'adresse de départ dans le registre d'adresses, on y laisse cette même adresse dans le cas d'une répétition, alors qu'on la remplace par celle du segment suivant dans le cas contraire.
     
    8. Procédé selon la revendication 7, caractérisé en ce que le numéro d'identification de l'objet comporte quatre bits, la valeur du décalage étant indiquée par trois bits.
     
    9. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que, en tête de chaque description de segment dans la mémoire de formes, on enregistre l'adresse de la chaîne de données décrivant le segment suivant.
     
    10. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on subdivise la description de chaque segment dans la mémoire de formes en sous-segments dont la représentation dans l'image a une longueur déterminée constante, sauf pour le dernier sous-segment d'un segment, en ce qu'en tête de chaque chaîne de données décrivant un sous-segment, on place l'adresse du sous-segment correspondant du segment suivant, et en ce qu'on prévoit dans la mémoire topologique des positions correspondant à des portions de ligne d'image fictives non représentables et situées à gauche et à l'extérieur de l'image.
     
    11. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que lesdites chaînes de données sont constituées de blocs ayant tous la même longueur, l'un au moins de ces blocs dit "bloc d'adresses" contenant l'adresse de la chaîne de données décrivant le segment suivant, et au moins un autre bloc dit "bloc de pixels" contenant :

    - des indications sur sa propre position par rapport aux autres blocs,

    - et la description d'une succession de points définie par leur couleur et leur nombre.


     
    12. Procédé selon l'ensemble des revendications 10 et 11, caractérisé en ce que ladite longueur déterminée constante des sous-segments comporte un nombre de points égal au nombre maximum de points que les blocs de pixels sont susceptibles de définir.
     
    13. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on utilise plusieurs mémoires topologiques correspondant chacune à un plan d'image et qui exploitent ensemble une mémoire de formes commune, et en ce qu'on établit des priorités entre les différentes mémoires topologiques, c'est-à-dire entre les numéros d'objets à représenter issus de leurs lectures simultanées.
     




    Dessins