Brevet FR2677206A1 — publié le 19921204

"Dispositif pour visualiser des vues partielles d'une image". Description: La présente invention concerne un dispositif pour visualiser sur un écran des vues partielles d'une image, dispositif comportant: une mémoire de masse pour emmagasiner tous les pixels de l'image préalablement numérisée, un organe de visualisation muni d'un écran pour visualiser les vues partielles, une mémoire tampon pour recevoir des informations de la mémoire de masse et pour alimenter l'organe de visualisation, un circuit d'utilisateur pour sélectionner des vues partielles se déduisant les unes des autres par scrolling en agissant sur une commande de déplacement. Ces dispositifs trouvent d'importantes applications lorsqu'il s'agit de visualiser sur un écran cathodique courant des cartes géographiques Comme celles-ci comportent en général un bon nombre de détails, l'organe de visualisation ne permet d'en restituer qu'une partie Au moyen du circuit d'utilisateur, on sélectionne des vues partielles d'une manière continue de telle sorte que l'on obtient l'impression de se déplacer dans la carte Pour le confort de l'utilisateur ce déplacement doit se produire avec douceur et sans à-coups. Le brevet des Etats-Unis d'Amérique n' 4 602 251 décrit un tel dispositif Ce dispositif connu comporte une mémoire tampon dont la capacité est prévue pour contenir d'une part les informations concernant la vue partielle à visualiser et d'autre part des informations de rafraîchissement provenant de la mémoire de masse et destinées à la mise à jour de la vue présentée à l'écran lorsqu'un déplacement dans l'image est désiré par l'utilisateur. Ce dispositif connu présente l'inconvénient que la mémoire tampon est plus grande que nécessaire et implique l'utilisation d'une mémoire de masse à accès rapide. La présente invention concerne un dispositif du genre mentionné dans le préambule, qui permet l'utilisation d'une mémoire tampon de capacité réduite et ne nécessite pas une mémoire de masse à accès rapide. Pour cela, un tel dispositif est remarquable en ce que la mémoire tampon est divisée en au moins: une première partie dite partie globale divisée en une sous-partie d'écran une sous-partie de lecture une sous partie de transfert contenant la sous-partie de lecture, la sous- partie d'écran se déplaçant dans les sous-parties de lecture et de transfert en fonction du déplacement, une deuxième partie dite partie supplémentaire destinée à recevoir les informations de la mémoire de masse lorsque la sous-partie d'écran entre en contact avec la sous- partie de lecture, et à transférer la partie globale des informations lorsque la sous-partie d'écran entre en contact avec la sous-partie de transfert. La présente invention est particulièrement adaptée pour être appliquée au système Compact Disque Interactif tel que décrit dans l'ouvrage: "Compact Disc-Interactive A Designer's Overviewn rédigé par J M Preston PHILIPS International, édité par KLUWER TECHNICAL BOOKS DEVENTER - ANVERS Belgique. En effet les diques compacts contiennent beaucoup d'informations et de ce fait l'accès à une information donnée est relativement lent et l'invention remédie dans une large mesure à cet accès lent. La description suivante accompagnée des dessins ci-annexés, le tout donné à titre d'exemple non limitatif, fera bien comprendre comment l'invention peut être réalisée. La figure 1 représente un schéma du dispositif de l'invention. La figure 2 montre une image (une carte géographique) à visualiser. La figure 3 montre comment les blocs de pixels de l'image sont organisés. La figure 4 montre comment un bloc de pixels est décomposé. La figure 5 montre la manière selon laquelle les différents pixels sont enregistrés dans la mémoire de masse. La figure 6 montre comment la mémoire tampon peut être chargée à partir de la mémoire de masse. La figure 7 montre les différents rectangles rectangle global, de lecture, de transfert. La figure 8 est un schéma explicitant l'adressage de la mémoire tampon pour la visualisation. Les figures 9 et 10 montrent le transfert des blocs depuis la mémoire de masse jusqu'à la mémoire tampon. La figure 11 montre le changement de ligne à prévoir lors du transfert d'une valeur de bloc. Les figures 12, 13 et 14 sont des organigrammes explicitant le fonctionnement du dispositif. La figure 15 montre la signification de différents paramètres. Le dispositif de la figure 1 comporte tout d'abord une mémoire de masse 1 contenant toutes les informations relatives aux pixels d'une carte géographique Cette mémoire est constituée par un disque optique monté dans son lecteur qui est commandé par un organe de contrôle 2 Les informations prélevées dans cette mémoire peuvent être transmises via une ligne commune (BUS) 4 dans une mémoire tampon 5 qui est divisée en au moins deux parties: une première partie Sa dite partie globale dont une sous- partie est lue pour faire apparaître l'image sur l'organe de visualisation 10 via un contrôleur de visualisation 12, une deuxième partie 5 b dite partie supplémentaire. A la ligne commune 4 sont aussi rattachés un microprocesseur 20 qui commande toutes les opérations, une mémoire de programme 22 qui contient le programme à exécuter, lequel peut être chargé au démarrage du dispositif à partir de la mémoire de masse 1. Il est prévu aussi un circuit utilisateur 30 pour sélectionner une vue partielle, montrée à l'écran 10, de toute l'image emmagasinée dans la mémoire de masse 1 Quatre déplacements peuvent être choisis U: déplacement vers le haut D: déplacement vers le bas L: déplacement vers la gauche R: déplacement vers la droite La structure du dispositif montré à la figure 1 est celle d'un produit connu sous le nom de CDI (voir l'ouvrage cité ci-dessus). Afin de bien expliquer l'invention, on va décrire un cas bien particulier avec des valeurs numériques, ceci pour des raisons de clarté Mais il est entendu que l'invention n'est pas limitée à cet exemple. Tout d'abord, on va décrire la manière dont est emmagasinée l'image; dans cet exemple, c'est une carte géographique montrée à la figure 2 Cette carte est découpée en 108 blocs dont les références et les emplacements respectifs sont explicités à la figure 3 Ces blocs portent les références Bl à B 108. La figure 4 montre la constitution de chacun de ces blocs Ces blocs sont formés de 116 colonnes de pixels CI à C 116 chaque colonne est formée de 120 pixels de telle sorte que le bloc est aussi formé de 120 Lignes LI à L 120 de 116 pixels. Pour enregistrer les images, on profite d'une des facilités du CDI procurées par ces canaux, ainsi les blocs BI, B 4,, B 34, B 37,, B 70, B 73,, B 106 sont enregistrés via le canal CH 1, les blocs B 2, B 5,, B 35, B 38,, B 71, B 74,, B 107 via le canal CH 2, et les blocs B 3, B 6,, B 36, B 39,, B 721 B 75,, B 108 via le canal CH 3. On rappelle que l'on peut utiliser jusqu'à 32 canaux mais qu'ici 3 seulement sont utilisés. La figure 5 montre la séquence selon laquelle les informations sont enregistrées Les blocs B 1, B 2, B 3, B 108 sont enregistrés dans cet ordre, tour à tour, en commençant par les 116 pixels de la ligne L 1 jusqu'à la ligne L 120. C'est à partir de ces informations qu'on va charger la mémoire tampon 5 Cette mémoire contient 20 blocs ( 5 x 4) contigus pris parmi les 108. Il convient de remarquer que le chargement total de cette mémoire s'effectue en deux temps. Par exemple si on veut charger la mémoire 10 des blocs B 9, B 12, B 15, B 18, B 21 et B 43 à B 57, ceci s'effectue dans un premier temps en ouvrant le canal 3 pour lire dans la mémoire de masse les blocs B 9, B 12, B 15, B 18 et B 21 et en fermant les canaux 1 et 2 et dans un deuxième temps en ouvrant les canaux CH 1, CH 2 et CH 3 pour lire les blocs B 43 à B 57; ceci est explicité à la figure 6. Vingt blocs sont donc enregistrés dans la mémoire tampon 5 dans la partie 5 a De tous les pixels de ces 20 blocs ( 20 x 116 x 120 = 278400) seuls 107520 (= 384 x 280) sont prélevés dans la mémoire tampon pour être affichés sur l'organe de visualisation 10. Ces blocs sont arrangés dans la mémoire tampon de telle manière qu'en adressant continûment celle-ci on puisse faire apparaître l'image. Ainsi, par exemple les adresses "O à 115 ' contiennent les pixels de la ligne LI du bloc B 9, les adresses " 116 à 231 " les pixels de la ligne L 1 du bloc B 12, puis la ligne L 1 des blocs B 15, B 18, B 21, puis la ligne L 2 de ces mêmes blocs B 9, B 12, B 15, B 18, B 21 et ainsi de suite jusqu'à la ligne L 120 Ensuite ce sera au tour de la ligne L 1 des blocs Ces différentes adresses sont représentées à la figure 7 avec un préfixe ADR. Selon l'invention on définit dans la mémoire tampon et plus précisément dans la partie 5 a différentes sous-parties représentées à la figure 7 par des rectangles le rectangle RG qui correspond à tout l'adressage de la partie 5 a c'est-à-dire des codes d'adresse ADRO à ADR 278399, le rectangle RT qui correspond à la sous-partie de transfert qui commence à l'adresse ADR 17400 et s'étend sur 520 pixels x 420 lignes, le rectangle RR qui correspond à la sous-partie de lecture qui commence à l'adresse ADR 30210 et s'étend sur 480 pixels x 376 lignes, le rectangle RE qui correspond à la sous-partie d'écran, qui se déplace à l'intérieur des rectangles précités en fonction du déplacement "U", "D", "R" et "LU demandé et qui s'étend sur 384 pixels x 280 lignes. La figure 8 montre comment la mémoire tampon est adressée et plus particulièrement l'adressage des pixels situés dans le rectangle d'écran. Il est prévu tout d'abord un compteur 100 dont la capacité est égale au nombre de pixels contenus dans une ligne, soit 580, chaque passage à zéro de compteur est comptabilisé dans un compteur de ligne 102. Le contenu de compteur va être modifié par un additionneur 104 recevant sur d'autres entrées des informations donnant l'adresse de chaque ligne Ces informations de ligne donnent pour chaque ligne l'adresse du premier pixel qui doit être lu dans la mémoire 5 a Ces informations sont contenues dans une double table 110 et 112. Une de ces tables est lue (sur la figure 8 c'est la table 112) tandis que l'autre est mise à jour, c'est la table 110 de préférence lors du temps de retour trame Chaque début de ligne contenu dans la mémoire 112 est sélectionné au moyen du compteur de ligne 102 Un commutateur 114 permet le chargement des tables 110 et 112 alternativement. Ces adresses de début de ligne sont élaborées au moyen d'un additionneur 115 modulo 278400 donc correspondant au champ d'adressage du Rectangle Global RG additionnant d'une part les conditions initiales de début de ligne correspondant par exemple au centrage du rectangle RE dans le rectangle global et d'autre part les accumulations accumulant les demandes de déplacement horizontal ou vertical effectuées au moyen des commandes 30 Les conditions initiales sont obtenues par des moyens d'initialisation figurés sur la figure 8 par une boîte 118 et les accumulations sont obtenues par un accumulateur 120 L'accumulateur fournit le décalage à apporter à chaque ligne en fonction du déplacement demandé, + 1 pour un déplacement à droite, 1 pour un déplacement à gauche, + 580 pour un déplacement vers le bas et 580 pour un déplacement vers le haut Ceci est représenté respectivement par des boîtes 125, 126, 127 et 128 Au repos, lorsqu'aucun déplacement n'est demandé, ce sont les boites 130 et 131 qui sont sollicitées, le contenu de l'accumulateur 120 restant invariable. Un décodeur 150 rattaché à l'additionneur 115 fournit les signaux SRT et SRR signifiant le contact du rectangle RE avec les rectangles RT et RR respectivement. Pour bien comprendre l'invention, on va seulement décrire un déplacement vers la droite Il sera après facile de déterminer le fonctionnement pour un déplacement vers la gauche, vers le haut ou vers le bas. On se place dans la disposition indiquée, c'est-à-dire celle o le rectangle global comporte les blocs B 9, B 12, B 15, B 18, B 21,, B 54, B 57. Lorsque le bord droit de RE touche le bord du rectangle de lecture RR, ce qui est facilement détectable en traitant les codes de début de lignes par comparaison avec les adresses de début des codes des rectangles de lecture (si le code d'adresse de la première ligne NLI est telle que NIL + 384 > 529 cf figure 9), il y a une demande d'accès de lecture au lecteur de CD, les informations sont alors emmagasinées dans la partie 5 b de la mémoire; les blocs B 24, B 58, B 59 et B 60 sont enregistrés dans la partie de la mémoire b. Si aucun déplacement supplémentaire n'est demandé aucune action n'est entreprise Par contre, si on persiste à demander un déplacement vers la droite, le rectangle écran va toucher le rectangle de transfert par exemple (Ni L + 384 > 549), les données contenues dans la partie 5 b vont alors venir remplacer les données anciennes c'est-à-dire que les blocs B 24, B 58, B 59 et BGO vont remplacer les blocs B 9, B 43, B 44 et B 45. On notera que le temps d'accès plutôt long aux informations contenues dans le CD est surmonté par ce chargement préalable dans la partie 5 b. il convient de remarquer que le transfert s'effectue dans des parties de la mémoire 5 a disjointe de la partie concernée par le rectangle d'écran et n'affecte pas la visualisation de la carte sur l'écran. Ce transfert s'accompagne évidemment d'une mise à jour de la définition des rectangles de lecture RR, d'écran RE et de transfert RT en ce qui concerne l'adressage de la mémoire 5 a. A la figure 10 on a représenté l'évolution des informations lorsqu'on persiste dans le déplacement à droite. Ainsi les blocs B 27, B 61, B 62 et B 63 remplacent les blocs B 12, B 46, B 47 et B 48. On notera que les bords droits des rectangles de lecture et de transfert passent de ADR 65 + k 580, ADR 85 + k 580 à ADR 181 + k 580, ADR 201 + k 580 o k représente le numéro de ligne o l'on considère ce bord. La figure 11 explicite un peu plus le transfert des blocs de la partie 5 b dans la partie 5 a Pour montrer qu'il faut prévoir un décalage d'une ligne on a décalé sur cette figure 11, les blocs B 24, B 58, B 59 et B 60 vers le bas d'une manière exagérée afin de bien montrer ce décalage vers le bas Ce décalage est justifié par le fait que le pixel Pl situé en bordure du rectangle global RG doit être situé à côté du pixel Pl + 1 en raison du rangement unidimensionnel des mémoires informatiques Si le pixel Pl est situé à l'adresse ADR 579 + k 580 le pixel Pl + 1 doit être situé à l'adresse ADR 580 + k 580 ou l'adresse ADRO + (k+ 1)580, donc à une ligne en dessous. La figure 12 montre un premier organigramme expliquant le fonctionnement du dispositif de l'invention. Le processus explicité par cet organigramme est déclenché lorsqu'une demande de déplacement est demandée (case K 10). Le processus démarre alors par un test indiqué à la case Kil pour savoir si tous les éléments de l'image à visualiser sont contenus dans la mémoire 5 a Pour cela, on compare les valeurs d'adresse des débuts de lignes augmentées de l'incrément imposé par le déplacement demandé aux valeurs préétablies Si les éléments sont contenus on passe à la case K 12. Si les éléments ne sont pas contenus on teste si on est au bord de la carte (case K 13) Il y a là impossibilité de charger des données supplémentaires depuis le disque compact. Si c'est impossible, aucune action n'est entreprise et on revient au système, case K 15. Si un chargement est possible on passe à la case K 16 o l'on teste si une demande de lecture ou de transfert est en cours, si oui on mémorise la demande de déplacement K 18 et l'on passe à la case K 12 Si il n'y a pas de lecture ou de transfert on passe à la case K 22 o une demande de lecture est demandée. Puis on prépare le décalage à visualiser en mettant à jour les codes de début de ligne (case K 12) puis on autorise le décalage (case K 24) puis on retourne au système. Le processus explicité par l'organigramme montré à la figure 13 est déclenché par un processus de décalage case K 30 puis, à la case K 32 on rafraîchit l'écran c'est-à-dire que l'on rend active la table de début de ligne mise à jour, ce qui implique que le rectangle écran se déplace dans le rectangle global case K 34. Si le rectangle écran rencontre un bord du rectangle global (test de la case K 35) on déclenche un programme d'erreur case K 38. Si il n'y a pas d'erreur on teste si le rectangle écran rencontre le rectangle de lecture case K 40 Si oui on va à la case K 42 o un accès au disque compact est lancé, si non on va à la case K 45. A la case K 45 on examine si le rectangle écran rencontre le rectangle de transfert, si non on va à la case K 48 o l'on met à jour la mémoire des codes de début de ligne et l'on met à jour aussi le contenu des rectangles de transfert et de lecture et l'on passe à la case K 50 o l'on retourne au système. Si le test de la case 145 est positif on va à la case K 55 o l'on teste si une opération de lecture déjà demandée est finie ou non Si l'opération de lecture n'est pas finie on va à la case K 58 o l'on bloque tout transfert des données de la mémoire supplémentaire dans la mémoire contenant le rectangle global puis on va à la case K 48. Si la demande de lecture est finie, on passe de la case K 55 à la case K 60 o le transfert est effectué. Le processus indiqué par l'organigramme de la figure 14 est déclenché par la fin de la lecture du disque compact case K 500. On teste ensuite case K 52 si une demande de déplacement a été demandée par exemple à la case K 18 Si oui on va à la case K 54 o l'on relance une lecture du CD puis le processus de décalage K 56 avant de revenir au système case K 58 Si aucun décalage n'a été demandé on passe de la case K 52 à la case K 62 o l'on teste si une demande de transfert n'a pas été bloquée (par exemple voir case K 58) Si oui on effectue le transfert case K 64 et on retourne au système case K 58 Si aucun transfert n'a été demandé, on passe de la case K 62 à la case K 58. Pour obtenir un déplacement satisfaisant il y a lieu de faire un choix judicieux des différents paramètres Ce choix est basé sur les considérations suivantes: 1 Le nombre de pixels contenu dans un bloc doit être le plus proche possible d'un multiple k du nombre d'octets VCD contenu dans un secteur vidéo du CD (soit 2324 octets) Si w est la largeur, en pixel, d'un bloc et h sa hauteur, on doit avoir la relation w h # k-VCD 2 Le temps de lecture d'une rangée de blocs d'un rectangle écran doit être à peu près égal au temps de lecture d'une colonne de blocs Si W est le nombre de blocs dans une rangée, H le nombre de blocs dans une colonne, t R le temps de lecture d'un bloc et tseek le temps de positionnement de la tête de lecture au CD, on doit avoir la relation: W.t R + tseek # H t R + 2- tseek 3 Pour avoir une mémoire tampon de taille minimale il faut que r soit minimum: (W.w) x (H h) = r Wscx hsc o wsc = largeur en pixel du rectangle écran, hsc = hauteur en pixel du rectangle écran. 4 Sachant que le déplacement s'effectue sur le temps de retour trame TRT du balayage de l'écran, il faut que a.TRT>TRLCD que: TRT>TRRCD que: Y TRT>TRM + TOR et que: 6.TRT>TRM + TOR o a E représente le nombre de pixels disposés horizontalement, séparant RR de RT, t représente le nombre de pixels disposés verticalement, séparant RR de RT, Y représente le nombre de pixels disposés horizontalement, séparant RT de RG, ô représente le nombre de pixels disposés verticalement, séparant RT de RG, (on se reportera à la figure 15 o les grandeurs sont mieux illustrées). TRLCD est le temps de lecture pris par le CD pour lire une rangée, TRRCD est le temps de lecture pris par le CD pour lire une colonne, TRM est le temps de transfert des blocs contenus dans la mémoire supplémentaire vers la mémoire 5 a, TOR est le temps pour mettre à jour les différents rectangles RR, RT et RG dans la mémoire tampon. 5 Si Ns et WS est le nombre (par forcément entier) de blocs correspondant au rectangle RE on doit avoir W-2 H-2 ainsi il n'y a qu'une colonne ou une rangée à charger dans la mémoire supplémentaire. Il est évident que ces considérations peuvent amener à d'autres valeurs que celles données ci-dessus, sans pour cela sortir du cadre de l'invention. Revendications 1 Dispositif pour visualiser sur un écran des vues partielles d'une image, dispositif comportant: une mémoire de masse pour emmagasiner tous les pixels de l'image préalablement numérisée, un organe de visualisation muni d'un écran pour visualiser les vues partielles, une mémoire tampon pour recevoir des informations de la mémoire de masse et pour alimenter l'organe de visualisation, un circuit d'utilisateur pour sélectionner des vues partielles se déduisant les unes des autres par scrolling en agissant sur une commande de déplacement, caractérisé en ce que la mémoire tampon est divisée en au moins: une première partie dite partie globale divisée en une sous- partie d'écran une sous-partie de lecture une sous partie de transfert contenant la sous-partie de lecture, la sous-partie d'écran se déplaçant dans les sous-parties de lecture et de transfert en fonction du déplacement, une deuxième partie dite partie supplémentaire destinée à recevoir les informations de la mémoire de masse lorsque la sous-partie d'écran entre en contact avec la sous-partie de lecture, et à transférer la partie globale des informations lorsque la sous-partie d'écran entre en contact avec la sous-partie de transfert. 2 Dispositif pour visualiser sur un écran des vues partielles d'une image, selon la revendication 1, caractérisé en ce que l'image est décomposée en blocs disposés en lignes et en colonnes et en ce que la sous-partie de transfert est prévue pour emmagasiner une ligne ou une colonne selon le déplacement requis afin de remplacer dans la partie globale la ligne ou la colonne qui n'est plus concernée par les vues partielles à visualiser. 3 Dispositif pour visualiser sur un écran des vues partielles d'une image, selon la revendication 1 ou 2, utilisant un circuit à 'c' canaux vidéo, caractérisé en ce que, pour enregistrer l'image dans la mémoire de masse l'image est analysée selon "k W groupes de 'c' rangées de 'n' blocs (k étant un entier suffisamment grand pour l'analyse totale de l'image), chaque rangée est affectée à un canal de sorte que les blocs sont enregistrés rang par rang, canal par canal et groupe par groupe.