Brevet FR2619461A1 — publié le 19890217

La présente invention concerne le domaine des algorithmes de compression vidéo, et plus précisément le domaine des algorithmes de compression pour affichages graphiques sous forme de carte de bits. On connait de nombreux procédés de compression de données pour systèmes informatiques, et de compression de données pour les affichages vidéo ou les affichages graphiques sous forme de carte de bits. Cependant, tous ces procédés souffrent d'un ou plusieurs inconvénients. On souhaiterait disposer d'un procédé qui permette de mémoriser les données sous forme comprimée après qu'elles aient été reçues d'un afficheur graphique sous forme de carte de bits ou d'un autre dispositif semblable. Les données devraient être mémorisées d'une façon qui permette de les décoder en utilisant un minimum de ressources du processus de décodage. En outre, les données devraient être mémorisées sous une forme aussi compacte que possible. La présente invention propose un procédé et un circuit pour comprimer des informations vidéo provenant d'un afficheur graphique sous forme de carte de bits ou d'un appareil similaire. Le procédé réduit le nombre de bits qui doivent être physiquement mémorisés pour mémoriser une image vidéo. Les étapes principales de l'algorithme consistent à enrichir en zéros une carte de bits de l'image vidéo et à coder l'image enrichie en séquences de zéros et d'octets de données. L'enrichissement en zéros de l'image vidéo est réalisé en exécutant une autocorrélation (décalage puis exécution d'un OU EXCLUSIF) pour les lignes horizontales et verticales. Le nombre de zéros résultant de chaque corrélation est compté jusqu'à ce que l'on puisse déterminer celle des combinaisons qui produit les zéros les plus riches. La carte de bits de lignes enrichies en zéros est ensuite codée en séquences de zéros et d'octets de données. On reconnaît les cas particuliers, comme par exemple une rangée constituée uniquement de zéros ou une rangée constituée uniquement de uns, et on leur attribue un code spécial. En outre, on affecte des codes spéciaux dans le cas de coïncidence zéro avec la rangée qui se trouve juste au-dessus ou avec celle qui se trouve deux rangées au-dessus. On attribue également des codes spéciaux pour indiquer qu'un code est répété un certain nombre de fois. On verra d'autres utilisations de codes spéciaux dans la description détaillée qui suivra de la présente invention. La présente invention propose également un procédé de reconstruction des données comprimées. Ce procédé permet de lire des données codées et de recréer les données non comprimées. Il est prévu divers procédés pour optimiser la vitesse de ce processus, notamment l'utilisation d'une table pour décoder certaines données codées. La présente invention a également pour objet un circuit de système informatique pour la mise en oeuvre de ce procédé, comprenant: des premiers moyens de mémorisation, pour mémoriser une image vidéo sous forme de carte de bits; des premiers moyens de comparaison, pour déterminer si l'une des conditions d'un jeu de conditions prédéterminées est vérifiée par une première rangée de cette image vidéo sous forme de carte de bits; des moyens décaleurs, pour décaler cette première rangée de l'image vidéo sous forme de carte de bits; des seconds moyens comparateurs, pour comparer cette première rangée de l'image vidéo sous forme de carte de bits à une seconde rangée de cette même image vidéo sous forme de carte de bits, ces premiers moyens comparateurs, moyens décaleurs et seconds moyens comparateurs permettant d'obtenir une information permettant de coder ladite image vidéo sous forme de carte de bits; et des seconds moyens de mémorisation, pour mémoriser une information vidéo codée. D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description détaillée ci-dessous, faite en référence aux dessins annexés sur lesquels: - la figure 1 est un organigramme décrivant les étapes impliquées par le codage des données vidéo qui pourront être utilisées pour la mise en oeuvre de la présente invention, - la figure 2A illustre un dispositif d'affichage avec en son centre un carré noir qui pourra être comprimé par le procédé de la présente invention, - la figure 2B illustre l'affichage du carré noir après une première étape de compression qui pourra être exécutée par le procédé de la présente invention, - la figure 2C illustre l'affichage du carré noir après une seconde étape de compression qui pourra être exécutée par le procédé de la présente invention, - la figure 3 illustre un espace adressable de codes opératoires qui pourront être utilisés pour la mise en oeuvre de la présente invention, - la figure 4A illustre des rangées de données qui pourront être comprimées par le procédé de la présente invention, - la figure 4B illustre une étape d'exécution d'un OU EXCLUSIF sur des rangées de données qui pourra être exécutée par le procédé de la présente invention pendant la compression des données, - la figure 4C illustre des rangées de données et leur code de compression associé qui pourront être utilisées pour la mise en oeuvre de la présente invention, - la figure 5 est un organigramme illustrant les tests préliminaires à exécuter sur des rangées de données pendant le codage qui pourront être exécutés par le procédé de la présente invention, - la figure 6 est un organigramme illustrant un procédé de détermination du procédé optimal d'enrichissement en zéros qui pourra être mis en oeuvre par la présente invention, - la figure 7 est un organigramme illustrant un procédé pour reconstruire des données vidéo à partir de données comprimées qui pourra être mis en oeuvre par la présente invention, - la figure 8 est un organigramme illustrant un procédé de traitement d'un code opératoire de début de rangée qui pourra être mis en oeuvre par la présente invention, - la figure 9 est un organigramme illustrant un processus de décodage de rangées codées par décalage et exécution d'un OU EXCLUSIF qui pourra être mis en oeuvre par la présente invention. On va décrire un procédé de compression et de recontruction de données vidéo. Dans la description qui va suivre, on a donné de nombreux détails particuliers tels que des codes opératoires, des étapes particulières, etc. afin de permettre une compréhension complète de la présente invention. Il est bien évident, cependant, que pour l'homme du métier la présente invention peut être mise en oeuvre sans ces détails particuliers. Inversement, des structures et des techniques bien connues n'ont pas été décrites en détail afin de de ne pas alourdir inutilement la description de la présente invention. La présente invention comprend un procédé de compression d'information vidéo, informations provenant typiquement d'un afficheur sous forme de carte de bits ou d'un dispositif semblable, ainsi qu'un procédé pour reconstruire l'information vidéo comprimée afin de permettre un réaffichage des données. La présente invention est basée sur la constatation du fait qu'une image vidéo typique sous forme de carte de bits comporte principalement soit des "zones blanches" soit des motifs de données. Un motif purement aléatoire de zones blanches et noires sur un affichage vidéo sous forme de carte de bits est rare. Par conséquent, la présente invention tire parti de ces observations en enrichissant encore en zéros une carte de bits d'une image vidéo en exécutant une autocorrélation des lignes verticales et horizontales. L'enrichissement en zéros est dû à la quantité importante de "surfaces blanches" sur l'écran avant le processus d'enrichissement, et aux motifs qui existaient dans l'image vidéo. La présente invention essaye plusieurs corrélations différentes en comptant le nombre de zéros produit par chaque corrélation, et utilise la corrélation qui produit le mélange de zéros le plus riche. L'affichage enrichi en zéros est ensuite codé, et l'on reconnait des combinaisons répétitives codées puis on leur attribue des codes spéciaux afin de pouvoir comprimer encore plus les données. Si l'on se réfère maintenant à la figure 1, on y a représenté le procédé permettant de comprimer des données utilisées par le mode de réalisation préféré de la présente invention. Le procédé exécute d'abord plusieurs tests préliminaires (bloc 1) sur chaque rangée en entrée. Ces tests seront décrits plus en détail à propos de la figure 5. Ces tests servent notamment à examiner si une rangée est constituée uniquement de zéros ou si la rangée est constituée uniquement de uns, etc. Si l'une quelconque de plusieurs conditions préliminaires est vérifiée (embranchement 2), on mémorise un code et on reçoit en entrée la rangée suivante. Si aucune des conditions préliminaires n'est vérifiée (embranchement 3), on essaye plusieurs procédés afin d'enrichir en zéros les données (bloc 4) . Ceci sera décrit plus en détail à propos de la figure 6. On code ensuite (bloc ) la rangée enrichie en zéros. On exécute alors un test pour déterminer si les données comprimées utilisent moins de place que les informations non comprimés. Dans la négative (embranchement 7), on mémorise les informations non comprimées (bloc 9). Dans l'affirmative (branche 8), on mémorise les informations comprimées (bloc 10). On soumet ensuite au même processus la rangée de données suivante de l'affichage graphique sous forme de carte de bits. La figure 2A illustre un exemple de données qui peuvent être mémorisées en utilisant le procédé de la présente invention. Il sera évident, pour l'homme de l'art, que le procédé de la présente invention permet de traiter, avec un niveau d'efficacité variable, n'importe quelle donnée affichée sur un affichage graphique sous forme de carte de bits. La figure 2A illustre un rectangle noir 21 affiché sur un afficheur vidéo. L'un des procédés de compression des donnés sur la figure 2A consiste à exécuter un OU EXCLUSIF de chaque rangée avec la rangée qui se trouve juste au-dessus d'elle. Le résulat est représenté sur la figure 2B. La mise en oeuvre d'un processus o l'on exécute un OU EXCLUSIF sur chaque rangée de données de l'affichage produit deux lignes: la ligne 23 et la ligne 24. La ligne 23 se trouve sur la même rangée que le côté supérieur du rectangle 21 de la figure 2 A. La ligne 24 se trouve une rangée au- dessous du côté inférieur du rectangle 21. La figure 2C illustre le résultat de l'utilisation d'un processus semblable o l'on exécute un OU EXCLUSIF sur les deux lignes 23 et 24 de la figure 2B. Dans ce cas, on a exécuté des OU EXCLUSIF sur les lignes verticales de l'affichage, avec exécution d'un OU EXCLUSIF entre chaque ligne verticale et la ligne située immédiatement à sa gauche. Le résultat consiste en quatre pixels 26, 27, 28 et 29 qui restent noirs. Deux des pixels, 26 et 29, sont les pixels d'extrême gauche des rangées 23 et 24. Les deux autres pixels, 27 et 28, sont situés sur la ligne verticale adjacente aux pixels d'extrême droite des lignes 23 et 24. Ces figures 2A, 2B et 2C illustrent le procédé utilisé par la présente invention pour enrichir en zéros des données sous forme de carte de bits. Cependant, on verra que le mode de réalisation préféré utilise plusieurs variations de ce procédé afin d'optimiser à la fois la mémorisation et la récupération des données. Le mode. de réalisation préféré de la présente invention utilise, pour comprimer les données, un jeu de codes sur un octet (huit bits). Ces codes sont illustrés plus en détail en relation avec la figure 3. Les codes peuvent être répartis en cinq types principaux: les séquences normales 31, les codes divers 32, les codes de répétition 33, les données de grande taille 34 et les zéros de grande taille 35. Les codes de séquences normales 31 utilisent les valeurs hexadécimales 00 à 7F. Le format d'un code de séquence normale, dans le mode de réalisation préféré de la présente invention, est Odddzzzz, ddd étant une valeur de compte d'octets de données qui suivent cet octet de code et zzzz étant une valeur de compte de zéros comprise entre O et 15. Par exemple, une chaîne de données consistant en huit zéros suivis par deux octets de données, l'un étant représenté par la valeur hexadécimale FF, ce qui correspond à une portion entièrement noire, et le second octet étant représenté par la valeur AA ou étant constitué d'un gris, peut être codé par la valeur hexadécimale 28 FF AA. Ainsi, on a comprimé quatre octets de données en trois octets de données. On utilise, avec la présente invention, un certain nombre de codes divers pour mémoriser les informations concernant les rangées qui ont rempli les conditions préliminaires décrites à propos de la figure 1 et de la figure 5, et pour mémoriser des informations concernant celui des procédés qui a procuré la meilleure rangée de données enrichie en zéros. Le mode de réalisation préféré de la présente invention utilise pour les code divers les valeurs hexadécimales 80 à 9F indiquées ci-dessous. Codes divers Code Description $80 Compression impossible $81 Rangée entièrement formée de zéros $82 Rangée entièrement formée de uns $83 Donnée de remplissage $84 Donnée de remplissage identique $85 Reproduire une ligne au-dessus $86 Reproduire deux lignes au-dessus $87 Inutilisé $88 (dh,dv) = (16,0) $89 (dh,dv) = (0, 0) $8A (dh,dv) = (0,1) $8B (dh,dv) = (0,2) $8C (dh,dv) = (1,0) $8D (dh,dv) = (1,1) $8E (dh,dv) = (2,2) $8F (dh,dv) = (8,0) $90 à 9F Inutilisés Le code hexadécimal 80 indique que les données ne peuvent être comprimées sans utiliser plus d'espace que les données originelles; les données non comprimées suivent le code. Le code hexadécimal 81 indique que la rangée était entièrement formée de zéros. Le code hexadécimal 82 indique que la rangée était entièrement formée de uns. Le code hexadécimal 83 indique que la rangée était formée d'octets de données qui se répétaient; dans ce cas, le code est suivi d'un unique octet de donnée indiquant l'octet de donnée qui se répête. Le code hexadécimal 84 indique que cette rangée reproduit le même octet de données que celui qui était répété dans la rangée précédente. Le code hexadécimal 85 indique que cette rangée est identique à la rangée qui se trouve juste au-dessus d'elle. Le code hexadécimal 86 indique que cette rangée est identique à la rangée qui se trouve deux rangées au-dessus d'elle. Le code hexadécimal 87 n'est actuellement pas utilisé dans le mode de réalisation préféré. Les codes hexadécimaux 88 à 8F indiquent ceux des divers intervalles horizontaux (dh) et intervalles verticaux (dv) qui ont été utilisés pour obtenir la meilleure rangée enrichie en zéros. Dans le mode de réalisation préféré, les codes hexadécimaux 90 à 9F ne sont actuellement pas utilisés. Chacun de ces divers codes 80 à 9F ne sont utilisés que lorsque l'on analyse une rangée, en début de cette rangée. De la sorte, ces codes ne sont pas utilisés lorsque l'on mémorise des données à l'intérieur d'une rangée, et ils pourront être utilisés à l'intérieur d'une rangée pour des perfectionnements ultérieurs. Les codes A0 à BF indiquent que le précédent code opératoire d'un octet se répète entre zéro et trente et une fois. Le format de ces codes est lOnnnnn2, nnnnn étant une valeur comprise entre 010 et 3110. Par exemple si le code opératoire précédent était 81 et que l'on détecte un code de répétition A6, le résultat sera l'affichage de six lignes blanches. Les codes CO à DF indiquent que suit une chaine d'octets de données. Le format de ces codes, en valeur binaire, est lllddddd, ddddd étant une valeur de compte, divisée par huit, des octets de données qui suivent. Par exemple si l'on doit représenter une chaine de seize octets de données, on mémorise un code hexadécimal C2 (16 - 8 = 2), suivi par les seize octets de données. Les codes EO à FF indique qu'il existe dans les données une chaine de zéros. le format de ce code est lllzzzzz, zzzzz étant une valeur de compte, divisée par 16, des zéros. Par exemple, si l'on a trouvé une chaine de 160 zéros dans une rangée de données, on mémorise un code de valeur hexadécimale CA (160 - 16 = 10,, ou A16). Les figures 4A à 4C ilustrent ce procédé de codage des données. Sur la figure 4A, on a représenté un ensemble de rangées de données qui pourront être comprimées par le procédé de la présente invention. Les données consistent en une rangée 41 ne contenant que des zéros, suivie par quatre rangées 42 qui correspondraient à l'affichage d'un rectangle noir, puis une autre rangée 43 uniquement constituée de zéros. La première rangée 41 peut être représentée par le code 81, correspondant à une rangée constituée uniquement en zéros. La rangée n 2 peut être décalée d'un bit vers la droite et on peut lui faire subir un OU EXCLUSIF avec elle-même. Ceci est représenté sur la figure 4B. La rangée n 2 44 subit un OU EXCLUSIF avec une copie d'elle-même décalée d'un bit vers la droite (rangée 45), donnant la rangée 46 comme résultat. Cette rangée est optimisée en ce qui concerne les zéros. Un code opératoire 8C est mémorisé, avec le mode de réalisation préféré de la présente invention, pour indiquer un intervalle de décalage horizontal vers la droite d'un bit et un intervalle vertical de zéro bit lors de l'exécution du OU EXCLUSIF. Les rangées n 3, 4 et 5 peuvent être représentées par le code 85, qui indique qu'elles sont des répliques des lignes qui se trouvent juste au-dessus d'elles. La rangée n 6 peut être représenté par le code 81 indiquant qu'elle est constituée uniquement de zéros. La figure 4C illustre les rangées n 1 à 6 et les codes résultants 50. Si l'on se réfère à la figure 5, on y a représenté un organigramme illustrant les tests préliminaires exécutés, dans le mode de réalisation préféré de la présente invention, lors de la compression des données. On commence par tester une rangée pour déterminer si elle est constituée entièrement de blancs ou de zéros et, si tel est le cas, on prend l'embranchement 55 et on enregistre le code indiquant qu'elle est entièrement blanche. On exécute ensuite un test pour déterminer si la rangée est entièrement noire ou constituée de uns et, si tel est le cas, on prend l'embranchement 56 et on enregistre un code indiquant qu'elle est entièrement noire. On exécute ensuite un test pour déterminer si la rangée répète le même octet de données sur toute la longueur de la rangée. Si tel est le cas, on prend l'embranchement 57. Si l'on a pris l'embranchement 57, on exécute un test pour voir si la rangée répète le même octet que celui qui avait été répété par la rangée précédente et, si tel est le cas, on prend l'embranchement 54 et on mémorise un code indiquant qu'elle répète le même code. Si tel n'est pas le cas, on mémorise un code indiquant qu'elle répète un octet, et on mémorise cet octet. On exécute ensuite une vérification pour déterminer si la rangée coïncide avec la rangée qui se trouve juste au-dessus d'elle et, si tel est le cas, on prend l'embranchement 58 et on mémorise un code indiquant que la rangée est une réplique de la rangée qui se trouve juste au-dessus d'elle. On exécute ensuite un test pour déterminer si la rangée coïncide avec la rangée qui se trouve deux rangées au-desssus d'elle et, si tel est le cas, on prend l'embranchement 59 et on mémorise un code indiquant que la rangée coïncide avec la rangée qui se trouve deux rangées au-desssus d'elle. Comme décrit précédemment à propos de la figure 1, si aucune de ces conditions préliminaires n'est vérifiée, on effectue une détermination de celui qui, parmi plusieurs procédés de décalage et d'exécution d'un OU EXCLUSIF sur des rangées de données, produira une rangée qui soit optimisée en ce qui concerne les zéros. Si l'on se réfère maintenant à la figure 6, on y a représenté un organigramme d'un processus permettant de déterminer le procédé optimal en ce qui concerne l'enrichissement en zéros, tel qu'il est utilisé dans le mode de réalisation préféré de la présente invention. Ce procédé consiste à tout d'abord initialiser plusieurs variables, notamment le positionnement d'une variable, appelée 'meilleur compte', à la valeur du nombre de mots non à zéro dans la rangée courante (bloc 60). On détermine ensuite ceux des mots qui ne sont pas les mêmes dans la rangée courante et la rangée qui se trouve juste au-dessus d'elle (bloc 61). Si ce compte de mots non égaux est inférieur à la valeur 'meilleur compte', on prend l'embranchement 62 et on mémorise la valeur '0' comme étant le meilleur intervalle horizontal, on mémorise la valeur '1' comme étant le meilleur intervalle vertical et l'on mémorise la valeur du compte comme étant 'meilleur compte'. En d'autres termes, s'il s'agit du pocédé optimal l'exécution d'un OU EXCLUSIF sera faite avec comme entrée la rangée précédant immédiatement la rangée courante et la rangée courante, sans décaler vers la droite la rangée courante. On effectue alors une vérification pour voir si la valeur 'meilleur compte' est inférieure à une valeur de seuil, la valeur de seuil étant calculée comme étant égale à deux, plus la valeur de compte divisée par huit des mots du tampon de rangée. Si 'meilleur compte' est inférieur à la valeur de seuil, on suppose qu'il s'agit du procédé optimal pour enrichir en zéros cette rangée de données. Si tel n'est pas le cas, on prend l'embranchement 75. Si l'on a pris soit l'embranchement 63 soit l'embranchement 75, l'étape suivante consiste à déterminer la valeur du compte des mots qui ne sont pas les mêmes dans la rangée courante et la rangée qui se trouve deux rangées au-dessus d'elle (bloc 64). Si ce compte est inférieur à la valeur 'meilleur compte', on prend l'embranchement 65 et l'on mémorise '0' comme meilleure valeur d'intervalle horizontal et '2' comme meilleure valeur d'intervalle vertical. La valeur de compte est alors mémorisée comme étant 'meilleur compte' (bloc 76). Si 'meilleur compte' est inférieur à la valeur de seuil, on prend l'embranchement 77 et l'on suppose que le procédé optimal d'enrichissement en zéros est celui utilisant en entrée d'un OU EXCLUSIF la rangée courante et la rangée qui se trouve deux rangées au-dessus de la rangée courante. Si tel n'est pas le cas, on prend l'embranchement 78. Si l'on a pris soit l'embranchement 66 soit l'embranchement 78, on exécute une boucle pour déterminer, parmi plusieurs, celle des combinaisons d'intervalle vertical et d'intervalle horizontal qui donnera le meilleur procédé d'enrichissement des zéros. Dans le mode de réalisation préféré de la présente invention, ces combinaisons comportent un intervalle horizontal égal à 1 avec un intervalle vertical égal à 0, c'est-à-dire un décalage d'un bit vers la droite de la rangée courante et l'utilisation de la rangée décalée et de la rangée courante comme valeurs d'entréed'un OU EXCLUSIF, un intervalle horizontal égal à 1 avec un intervalle vertical égal à 1, un intervalle horizontal égal à 2 avec un intervalle vertical égal à 2, un intervalle horizontal égal à 8 avec un intervalle vertical égal à 0, et un intervalle horizontal égal à 16 avec un intervalle vertical égal à 0. Pour chacune de ces combinaisons on détermine une valeur de compte des mots non à zéro (bloc 67). Si cette valeur de compte est inférieure à la valeur 'meilleur compte' (embranchement 69), on mémorise cette combinaison comme étant celle correspondant au meilleur intervalle horizontal et au meilleur intervalle vertical. Si la valeur de compte n'est pas inférieure à la valeur 'meilleur compte' (embranchement ), on essaye la combinaison (dh,dv) suivante (embranchement 71). S'il n'y a pas d'autre combinaison (dh,dv), on suppose que les meilleures valeurs de dh et dv qui ont été mémorisées sont les valeurs optimales pour enrichir en zéros cette rangée. La figure 7 est un organigramme montrant un processus utilisé pour le décodage de l'information vidéo comprimée, qui peut être utilisé avec le procédé de la présente invention. Tout d'abord, on initialise plusieurs variables (bloc 81). Ceci comprend l'initialisation à zéro d'une variable nommée 'valeur de compte de répétition'. On entre ensuite dans une boucle qui est exécutée pour chaque code mémorisé de l'image vidéo. La première étape consiste à déterminer si 'valeur de compte de répétition' est supérieure à zéro et, si tel est le cas, on prend l'embranchement 82 et on positionne le code opératoire à la valeur précédente de code opératoire, c'est-à-dire que l'on répète le code opératoire et l'on décrémente 'valeur de compte de répétition' (bloc 84). Si 'valeur de compte de répétition' est égale à zéro (embranchement 83), on lit le code opératoire suivant (bloc 85). On effectue alors une vérification pour déterminer si ce code opératoire indique le début d'une rangée de données. Si tel n'est pas le cas (embranchement 86), on décomprime l'information de rangée (bloc 88). Si le code indique qu'il s'agit du début d'une rangée, on prend l'embranchement 87. On exécute un test pour déterminer si le code opératoire est un code opératoire de répétition. Si tel est le cas (embranchement 89), 'valeur de compte de répétition' est positionnnée à la valeur de compte de répétition du code opératoire de répétition, et le code opératoire suivant est mémorisé comme étant le code opératoire à répéter (bloc 91). Si le code opératoire n'est pas égal au code opératoire de répétition, on prend l'embranchement 90 et on exécute le traitement d'un code opératoire de début de rangée (bloc 92). Le traitement d'un code opératoire de début de rangée sera expliqué plus en détail à propos des figures 8 et 9. Les données sont alors mises dans un tampon (bloc 93). On exécute un test pour déterminer s'il y a d'autres codes opératoires à traiter. Si tel est le cas, on prend l'embranchement 94. Dans le cas contraire, on prend l'embranchement 95. Le traitement d'un code opératoire de début de rangée, tel qu'il est exécuté dans le mode de réalisation préféré de la présente invention, est représenté sur la figure 8. La première étape du traitement d'un code opératoire de début de rangée consiste à rechercher un code qui indique que les données ne sont pas comprimées. Si les données ne sont pas comprimées (embranchement 101), les données non comprimées sont recopiées dans un tampon (bloc 110). Si les données sont comprimées, on exécute un test pour déterminer si le code opératoire indique que la rangée doit être remplie par des zéros (c'est-à-dire s'il s'agit d'une rangée blanche). Si la rangée dQit être remplie par des zéros (embranchement 102), on exécute une opération pour remplir la rangée de zéros (bloc 111). Dans le cas contraire, on exécute un test pour déterminer si la rangée doit être remplie de uns (c'est-àdire s'il s'agit d'une rangée noire). Si tel est le cas, on prend l'embranchement 103 et on remplit la rangée de uns (bloc 112). Dans le cas contraire, on effectue une vérification pour déterminer si le code indique qu'un octet de données est répété sur toute la rangée. Si tel est le cas, on prend l'embranchement 104, on lit l'octet de données considéré et on leduplique sur toute la rangée (bloc 113). Ensuite, on exécute un test pour déterminer si le code opératoire indique que l'octet répété le long de la rangée précédente doit être répété le long de cette rangée. Si tel est le cas, on prend l'embranchement 105 et on duplique l'octet de données sur toute la rangée (bloc 114). Dans le cas contraire, on effectue un test pour déterminer si la rangée courante est une recopie de la rangée qui se trouve juste au-dessus et, si tel est le cas, on prend l'embranchement 106. On effectue alors une recopie de la rangée qui se trouve juste au-dessus (bloc 115). Enfin, on effectue un test pour déterminer si le code indique que la rangée est une réplique exacte de la rangée qui se trouve deux rangées au-dessus d'elle et, si tel est le cas, on prend l'embranchement 107. Dans ce cas, on recopie la rangée qui se trouve deux rangées au-dessus de la rangée courante (bloc 116). Si tous les tests précédents se sont révélés négatifs, on exécute une série de tests pour déterminer quel intervalle horizontal et quel intervalle vertical devront être utilisés pour cette rangée dans le processus de décalage et d'exécution du OU EXCLUSIF (bloc 117). Après avoir établi les valeurs courantes d'intervalle horizontal et d'intervalle vertical, on effectue le processus de décalage et d'exécution du OU EXCLUSIF. La première étape peut consister & déterminer pour la rangée de données l'intervalle horizontal approprié et à décaler vers la gauche, d'un nombre d'octets égal à la valeur de l'intervalle, une copie de la rangée. On exécute alors un OU EXCLUSIF avec en entrée la rangée de données courante d'origine et la copie décalée de cette rangée. On effectue ensuite des tests pour déterminer si la rangée résultante doit être soumise à un OU EXCLUSIF soit avec la rangée qui se trouve juste au-dessus d'elle, soit avec celle qui se trouve deux rangées au-dessus. Si l'on se réfère maintenant à la figure 9, on effectue tout d'abord, dans le mode de réalisation préféré de la présente invention, un contrôle pour voir si l'intervalle horizontal de la rangée courante vaut '1'. Si tel est le cas, on prend l'embranchement 121. On utilise, dans le mode de réalisation préféré de la présente invention, une table pour transformer la rangée de données mémorisée en la rangée de données à afficher. L'utilisation de la table augmente la vitesse de traitement de des données. La table est constituée par les valeurs transformées de chaque valeur codée possible. Par exemple, dans cette table, on a une valeur 110 située à un décalage relatif de 141. Ceci est dû au fait que la valeur 1110 (10112) décalée vers la droite d'une position (01012), utilisée comme entrée pour l'exécution d'un OU EXCLUSIF avec l'autre entrée qui est 1110, donne comme résultat 1410 (10112 E 10102 = 11102). De la sorte, la rangée codée présentera une valeur 1410 retransformée en 1110, grâce à cette table. La table contient des valeurs de transformation semblable pour les autres valeurs, situées aux adresses de décalages appropriées. Si l'intervalle horizontal vaut '2', on prend l'embranchement 124 et on utilise une table semblable pour obtenir les codes transformés (bloc 123). Si l'intervalle horizontal vaut '8', on prend l'embranchement 125, on décale de huit octets la rangée et on la soumet à un OU EXCLUSIF pour obtenir les données originelles. Enfin, si l'intervalle horizontal vaut '16', on prend l'embranchement 127, on décale la rangée de 16 octets et on la soumet à un OU EXCLUSIF (bloc 128). Après avoir traité les' intervalles horizontaux, on effectue une vérification pour déterminer si l'intervalle vertical vaut '1'. Si tel est le cas, on utilise l'embranchement 130. La rangée courante et la.rangée qui se trouve juste au-dessus d'elle sont utilisées en entrée pour l'exécution d'un OU EXCLUSIF afin d'obtenir la valeur originelle de la rangée courante (bloc 131). Dans le cas contraire, on effectue une vérification pour déterminer si l'intervalle vertical vaut '2'. Si tel est le cas, on prend l'embranchement 132 et on soumet la rangée courante à un OU EXCLUSIF avec la rangée qui se trouve deux rangées au-dessus d'elle, le résultat étant la valeur originelle de cette rangée (bloc 133). 17 2619461 REVENDICATIONS 1. Un procédé pour comprimer une information, caractérisé en ce qu'il comprend les étapes suivantes: - enrichissement d'une carte de bits de cette information en un premier-état binaire, et - codage de cette carte de bits enrichie, de manière à comprimer ladite information. 2. Le procédé de la revendication 1, dans lequel l'étape de codage de la carte de bits enrichie comporte les étapes suivantes: - détermination du fait qu'une première rangée de la carte de bits remplit ou non l'une des conditions d'un jeu de conditions prédéterminé, et - si l'une de ces conditions du jeu prédéterminé de conditions est remplie, mémorisation d'un code appartenant à un premier jeu de codes prédéterminé. 3. Le procédé de la revendication 2, dans lequel ledit jeu de conditions prédéterminé comporte: - le fait que la première rangée se trouve ou non entièrement audit premier état binaire, - le fait que ladite première rangée se trouve ou non entièrement à un second état binaire, - le fait qu'un premier groupe de bits se répète ou non dans ladite première rangée, et - le fait que ladite première rangée est identique ou non à une seconde rangée de la carte de bits. 4. Le procédé de la revendication 1, dans lequel l'enrichissement de la carte de bits comporte les étapes suivantes: (a) copie d'une première rangée de la carte de bits, (b) décalage de cette copie de la première rangée d'un nombre prédéterminé de bits dans un premier sens, (c) exécution d'un OU EXCLUSIF en utilisant comme valeurs d'entrée ladite première rangée de données et ladite copie de cette première rangée de données, le résultat ainsi obtenu étant une seconde rangée de données, (d) détermination du nombre de mots de données de cette seconde rangée de données qui se trouvent audit premier état binaire, (e) si ledit nombre de mots se trouvant à cet état binaire est supérieur à une première valeur, mémorisation de ce nombre de mots comme première valeur et mémorisation dudit nombre prédéterminé comme seconde valeur, et (f) répétition des étapes (b) à (e) pour chacun des nombres d'un premier jeu de nombres prédéterminés. 5. Le procédé de la revendication 4, dans lequel l'enrichissement de la carte de bits comporte en outre les étapes suivantes: (a) exécution d'un OU EXCLUSIF en utilisant comme valeurs d'entrée ladite première rangée de données et une troisième rangée de données, cette troisième rangée de données étant décalée d'un nombre prédéterminé de rangées par rapport à ladite première rangée de données, le résultat ainsi obtenu étant une quatrième rangée de données, (b) détermination du nombre de mots de données de cette quatrième rangée de données qui se trouvent audit premier état binaire, (c) si ledit nombre de mots se trouvant à cet état binaire est supérieur à une troisième valeur, mémorisation de ce nombre de mots comme troisième valeur et mémorisation dudit nombre prédéterminé comme quatrième valeur, et (d) répétition des étapes (a) à (c) pour chacun des nombres d'un second jeu de nombres prédéterminés. 6. Le procédé de la revendication 5, dans lequel ledit premier jeu de nombres prédéterminés comprend les valeurs un, deux, huit et seize. 7. Le procédé de la revendication 6, dans lequel ledit second jeu de nombres prédéterminés comprend les valeurs zéro, un et deux. 8. Le procédé de la revendication 1, comprenant en outre une étape de décodage de ladite information codée. 9. Le procédé de la revendication 8, dans lequel le décodage de ladite information codée comporte les étapes de: (a) lecture d'un code opératoire, (b) détermination, à partir de ce code opératoire, du fait que le code opératoire indique ou non le début d'une première rangée de données, et (c) si ce code opératoire indique un tel début de première rangée de données, exécution de ce code opératoire, (d) dans le cas contraire, décompression de ladite première rangée de données. 10. Le procédé de la revendication 9, dans lequel le traitement du code opératoire de début de rangée comporte les étapes suivantes: (a) si le code opératoire indique que les données ne sont pas comprimées, copie des données non comprimées, (b) si le code opératoire indique que ladite première rangée est composée de bits qui sont tous à un premier état binaire, remplissage de cette première rangée avec des bits à ce premier état binaire, (c) si le code opératoire indique que ladite première rangée est composée de bits qui sont tous à un second état binaire, remplissage de cette première rangée avec des bits à ce second état binaire, (d) si le code opératoire indique que les données répètent un bloc de données, remplissage de ladite première rangée avec des répliques de bloc de données, et (e) si le code opératoire indique que ladite première rangée est la même qu'une seconde rangée décalée d'un nombre prédéterminé de rangées par rapport à cette première rangée, copie de cette seconde rangée. 11. Le procédé de la revendication 10, dans lequel la décompression desdites données comporte l'étape d'utilisation d'une table comportant des valeurs prédéterminées permettant de décomprimer ces données. 12. Le procédé de la revendication 1, dans lequel le codage de la carte de bits enrichie comporte l'étape de représentation de cette carte de bits enrichie par des codes représentant des séquences de bits se trouvant audit premier état binaire et des séquences de bits se trouvant à un second état binaire. 13. Le procédé de la revendication 1, dans lequel ledit premier état binaire est un état bas. 14. Un procédé pour comprimer et réafficher une information vidéo à partir d'un dispositif d'affichage sous forme de carte de bits, caractérisé en ce qu'il comprend les étapes suivantes: - détermination du fait que l'une des conditions d'un premier jeu de conditions prédéterminées est ou non vérifiée par une première rangée de données, - si l'une des conditions de ce premier jeu de conditions prédéterminées est vérifiée, mémorisation de l'un des codes d'un premier jeu de codes, - enrichissement de la carte de bits de ladite information en un premier état binaire par décalage et exécution d'un OU EXCLUSIF, - codage de cette carte de bits enrichie par représentation de cette carte de bits sous forme de séquences de ce premier état binaire et de séquences d'un second état binaire, et décodage de cette information par lecture d'une pluralité de codes opératoires et reconstruction de la carte de bits à partir de ces codes opératoires, de manière à comprimer et réafficher ladite information. 15. Le procédé de la revendication 14, dans lequel le premier jeu de conditions prédéterminées comporte: - le fait que tous les bits de ladite première rangée de ladite information se trouvent ou non audit premier état binaire, - le fait que tous les bits de ladite première rangée de ladite information se trouvent ou non audit second état binaire, - le fait qu'un premier groupe de bits se répète ou non dans cette première rangée, et - le fait que cette première rangée est identique ou non à une seconde rangée de la carte de bits. 16. Le procédé de la revendication 14, dans lequel la décompression desdites données comporte l'étape d'utilisation d'une table de transformation comportant des valeurs prédéterminées permettant de décomprimer ces données. 17. Le procédé de la revendication 15, dans lequel le premier état binaire est un état bas. 18. Le procédé de la revendication 17, dans lequel le second état binaire est un état haut. 19. Un circuit de système informatique pour comprimer des informations vidéo sous forme de carte de bits, caractérisé par: - des premiers moyens de mémorisation, pour mémoriser une image vidéo sous forme de carte de bits, - des premiers moyens de comparaison, pour déterminer si l'une des conditions d'un jeu de conditions prédéterminées est vérifiée par une première rangée de cette image vidéo sous forme de carte de bits, - des moyens décaleurs, pour décaler cette première rangée de l'image vidéo sous forme de carte de bits, - des seconds moyens comparateurs, pour comparer cette première rangée de l'image vidéo sous forme de carte de bits à une seconde rangée de cette même image vidéo sous forme de carte de bits, ces premiers moyens comparateurs, moyens décaleurs et seconds moyens comparateurs permettant d'obtenir une 22 2619461 information permettant de coder ladite image vidéo sous forme de carte de bits, et - des seconds moyens de mémorisation, pour mémoriser une information vidéo codée. 20. Le circuit de la revendication 19, dans lequel ledit jeu de conditions prédéterminées comporte: - le fait que tous les bits de ladite première rangée de ladite image vidéo se trouvent ou non à un premier état binaire, - le fait que tous les bits de ladite première rangée de ladite information vidéo se trouvent ou non à un second état binaire, - le fait qu'un premier groupe de bits se répète ou non dans ladite première rangée de ladite information vidéo, et - le fait que ladite première rangée est identique ou non à ladite seconde rangée de ladite image vidéo sous forme de carte de bits. 21. Le circuit de la revendication 20, dans lequel le premier état binaire est un état bas. 22. Le circuit de la revendication 21, dans lequel le second état binaire est un état haut. 23. Le circuit de la revendication 19, dans lequel lesdits seconds moyens comparateurs permettent l'exécution d'un OU EXCLUSIF.