[0001] La présente invention concerne les circuits de traitement d'images numériques, et
en particulier un circuit permettant de modifier le codage des couleurs associées
aux pixels d'une image numérique.
[0002] Une image numérique est classiquement composée de rangées et de colonnes de pixels.
Chaque pixel de l'image est associé notamment à une couleur. Un type de codage de
couleur répandu est le codage dit RGB, dans lequel les couleurs sont représentées
par trois composantes : rouge (R), verte (V) et bleue (B), dont chacune est classiquement
codée sur un même nombre de bits. Dans un tel codage, le nombre de bits utilisés pour
les coeposantes R, G et B détermine le nombre de couleurs possible pour chaque pixel.
Par exemple, des composantes R, G et B codées sur 8 bits chacune permettent de décrire
2
3×8 c'est-à-dire plus de 16 millions de couleurs différentes. On notera que tous les
pixels d'une même image sont classiquement codés avec un même nombre de bits. On ajoute
parfois aux trois composantes R, G et B, une composante A correspondant à une information
de transparence.
[0003] Dans certaines applications, on peut souhaiter réduire le nombre de bits utilisé
pour coder les couleurs des pixels d'une image numérique. En effet, plus les couleurs
des pixels d'une image sont codées sur un grand nombre de bits, plus cette image représente
une grande quantité d'informations. Réduire le nombre de bits du codage des couleurs
permet de réduire la quantité d'informations que représente une image, ce qui permet
de stocker l'image dans un espace mémoire réduit, de la traiter plus rapidement ou
bien de la transmettre, par exemple avec un modem, en un temps réduit.
[0004] Une solution connue pour réduire le nombre de bits codant une image consiste à créer
une table de référence, ou palette de couleurs (Color Look Up Table, ou CLUT) contenant
un nombre restreint de couleurs codées comme les couleurs d'origine des pixels de
l'image. Le codage RGB de la couleur d'origine de chaque pixel est alors remplacé
par un code CLUT correspondant à une adresse d'une couleur de la palette, qui est
la plus proche de la couleur d'origine du pixel. Le nombre de couleurs de la palette
étant restreint, le codage de ses adresses peut comporter un nombre de bits réduit
par rapport à celui utilisé dans le codage RGB des couleurs d'origine. Ainsi, le code
CLUT d'une couleur peut avoir un nombre de bits réduit par rapport au nombre de bits
d'un code RGB. Par exemple, une adresse codée sur huit bits permet d'adresser complètement
une palette de 2
8 = 256 couleurs. Si l'on reprend l'exemple précédent, et que l'on dispose d'une palette
de 256 couleurs dont chacune est codée en RGB sur 24 bits, on peut remplacer le code
RGB de 24 bits de la couleur d'origine de chaque pixel par une adresse de palette
de 8 bits. Une telle substitution permet de réduire sensiblement (environ par trois
dans cet exemple) la quantité d'informations représentée par une image.
[0005] Dans un dispositif de traitement d'images numériques, on retrouve des codages de
couleur complets (de type RGB) et réduits (de type CLUT) décrits précédemment. Par
exemple, une image peut être créée avec un codage de couleur complet, puis elle peut
être transformée de manière à avoir un codage de couleur réduit, ce qui permet de
rapidement la transmettre par modem ou la retoucher au moyen d'un logiciel. Enfin,
une telle image peut être retransformée pour avoir à nouveau un codage de couleur
complet, qui permette par exemple de l'afficher sur un écran d'ordinateur. Certains
dispositifs de traitement d'images numériques sont destinés à recevoir plusieurs images
et à les assembler en une image unique. A titre d'exemple, on considère par la suite
un circuit de composition d'image, plus connu sous son appellation anglo-saxonne "blitter",
classiquement utilisé pour créer une image à partir de plusieurs images de provenances
diverses.
[0006] La figure 1 représente schématiquement sous forme de blocs un exemple d'un dispositif
de traitement d'images 2, par exemple une carte graphique d'un ordinateur. Le dispositif
2 comprend une mémoire 4 dans laquelle sont stockées plusieurs images numériques pouvant
avoir des codages de couleurs différents, complets ou réduits. La mémoire (MEM) 4
est connectée à un bus 6 de manière à recevoir des commandes d'écriture et de lecture
et à fournir ou recevoir des données. Une unité centrale de traitement (CPU) 8 est
connectée au bus 6 de manière à recevoir ou fournir des données ou des commandes.
Le dispositif 2 comporte également un circuit de composition d'images 9 pourvu d'un
circuit de calcul (BLITTER CORE) 10 et de deux mémoires intermédiaires ou tampons
de mémoire (BUF1) 12 et (BUF2) 14. Le circuit 10 comprend une première et une seconde
entrées d'image connectées respectivement à travers les mémoires intermédiaires 12
et 14 de manière à recevoir des données depuis le bus 6. Le circuit 10 comprend une
sortie de données qui constitue la sortie du circuit de composition d'image 9. Cette
sortie est reliée à travers une mémoire intermédiaire ou tampon de mémoire (BUF3)
16 à un dispositif d'affichage (DISP) 18. La mémoire intermédiaire 16 est également
reliée au bus 6 de manière à recevoir des commandes ou des données depuis l'unité
centrale de traitement et à lui fournir des données.
[0007] Classiquement, le circuit de calcul 10 du circuit de composition d'image 9 est prévu
pour traiter des images ayant un codage de couleur donné, par exemple un codage CLUT.
Des images ayant un codage de couleur différent, dans cet exemple un codage RGB ou
semblable, doivent être converties pour avoir ce codage CLUT avant de pouvoir être
fournies au circuit de calcul 10. Ainsi, des images ayant un codage de couleur non
directement utilisable par le circuit de calcul sont lues dans la mémoire 4 par l'unité
centrale ou processeur 8 qui convertit leur codage puis commande leur écriture dans
une des mémoires intermédiaires 12 ou 14 du circuit de composition d'image 9. Lorsque
les deux mémoires intermédiaires 12 et 14 contiennent des images ayant un codage de
couleur utilisable par le circuit de calcul 10, le circuit 10 lit leurs contenus respectifs
et produit une image qu'il fournit à la mémoire intermédiaire 16. On notera que les
images produites par le circuit 10 peuvent ne pas être dans un code directement utilisable
par le dispositif d'affichage 18. Dans un tel cas, l'image contenue dans la mémoire
intermédiaire 16 devra être lue et son codage de couleur devra être converti par le
processeur 8 avant qu'elle puisse être fournie au dispositif d'affichage 18 par l'intermédiaire
de la mémoire intermédiaire 16.
[0008] Dans un tel fonctionnement, l'unité centrale de traitement doit fréquent être utilisée
pour convertir des images au format accepté par le circuit de calcul du circuit de
composition d'image. Une telle utilisation de l'unité centrale ne permet pas de l'utiliser
à d'autres tâches, ce qui nuit aux performances du système dans lequel est intégré
le circuit 10, par exemple un micro-ordinateur.
[0009] La seule solution pour accroître les performances du système consiste à utiliser
une unité centrale de traitement plus rapide, mais une telle solution est coûteuse.
[0010] La présente invention vise à pallier les inconvénients des circuits connus de composition
d'images.
[0011] La présente invention vise, en particulier, à proposer un circuit de traitement d'images
permettant d'économiser du temps de travail de l'unité centrale de traitement du système
dans lequel il est intégré.
[0012] La présente invention vise également à proposer un tel circuit de traitement d'images
qui comporte un circuit ayant une fonction de conversion des codages de couleur et
une fonction de composition d'images.
[0013] La présente invention vise en outre à proposer une solution particulièrement économique.
[0014] Pour atteindre ces objets, la présente invention prévoit un circuit de traitement
d'image numérique propre à remplacer un code d'entrée associé à un pixel de l'image
par un code de sortie choisi dans un premier moyen de mémorisation contenant un ensemble
de codes, qui comporte un bus d'entrée propre à recevoir le code d'entrée, un bus
de sortie propre à délivrer le code de sortie, ledit premier moyen de mémorisation,
un moyen de calcul d'adresse du premier moyen de mémorisation, un moyen de sélection
d'adresse du premier moyen de mémorisation entre le code d'entrée et un code d'adresse
généré par le moyen de calcul d'adresse, un deuxième moyen de mémorisation propre
à contenir un code d'adresse généré par le moyen de calcul d'adresse, et un moyen
de sélection du code de sortie entre un code lu à l'adresse courante du premier moyen
de mémorisation et ledit code contenu dans le deuxième moyen de mémorisation.
[0015] Selon un mode de réalisation de la présente invention, le moyen de calcul d'adresse
comprend un générateur d'adresses propre à fournir des codes d'adresse prédéterminés
au moyen d'adressage, et un circuit de comparaison de données prévu pour comparer
le premier code et les codes stockés aux adresses prédéterminées dans le premier moyen
de mémorisation, déterminer celui des codes comparés qui est le plus proche du premier
code, et commander, au second moyen de mémorisation, de stocker le code de l'adresse
à laquelle le code comparé le plus proche est stocké dans le premier moyen de mémorisation.
[0016] Selon un mode de réalisation de la présente invention, les bus d'entrée et de sortie
comprennent chacun un premier, un deuxième, un troisième et un quatrième sous-bus
ayant un même nombre de bits, le moyen de sélection d'adresse comprend un premier,
un deuxième, un troisième et un quatrième multiplexeurs dont les premières entrées
sont respectivement connectées aux premier, deuxième, troisième et quatrième sous-bus
d'entrée, la sortie du premier multiplexeur étant reliée aux secondes entrées des
deuxième, troisième et quatrième multiplexeurs, le premier moyen de mémorisation comprend
un premier, un deuxième, un troisième et un quatrième circuits de mémoire identiques
dont les entrées d'adressage sont respectivement connectées aux sorties des premier,
deuxième, troisième et quatrième multiplexeurs, et le moyen de sélection du code de
sortie comprend un cinquième multiplexeur dont la première entrée est connectée à
la sortie de données du premier circuit de mémoire et dont la sortie est connectée
au premier sous-bus de sortie, les deuxième, troisième et quatrième sous-bus de sortie
étant connectés respectivement aux sorties de données des deuxième, troisième et quatrième
circuits de mémoire.
[0017] Selon un mode de réalisation de la présente invention, le générateur d'adresses est
formé d'un compteur propre à fournir une série prédéterminée de codes d'adresse à
la seconde entrée du premier multiplexeur, et le circuit de comparaison de données
comprend : un calculateur connecté pour recevoir respectivement les codes fournis
aux trois premiers sous-bus d'entrée et les codes fournis par les trois premiers circuits
de mémoire, et prévu pour fournir un signal numérique égal à la différence entre ces
codes, et un comparateur à mémoire connecté pour conserver le signal numérique de
différence le plus faible calculé pour la série prédéterminée de codes d'adresse et
pour commander au second moyen de mémorisation de stocker le code de l'adresse à laquelle
les codes correspondant à la différence la plus faible sont stockés dans le premier
moyen de mémorisation.
[0018] La présente invention vise également un procédé de traitement d'image au moyen d'un
circuit de traitement d'image numérique selon l'un des modes de réalisation précédents,
qui consiste à recevoir des images dont les codes de couleurs correspondent chacun
à une adresse d'une table de référence de couleurs, et à remplacer chaque adresse
par le code de couleur désigné par cette adresse dans la table de référence.
[0019] Selon un mode de mise en oeuvre de la présente invention, le procédé consiste à recevoir
des images dont les couleurs sont codées d'une manière prédéterminée, et à remplacer
le code de chaque couleur de l'image par une adresse d'une table de référence de couleurs.
[0020] Selon un mode de mise en oeuvre de la présente invention, le procédé comprend les
étapes consistant à stocker, dans les premier, deuxième, troisième et quatrième circuits
de mémoire, des codes respectivement de couleurs rouge, verte et bleue et de transparence,
à fournir un code respectivement de couleur rouge, verte et bleue et de transparence
aux premier, deuxième, troisième et quatrième sous-bus d'entrée, et à commander les
multiplexeurs du moyen de sélection d'adresse et du moyen de sélection de sortie pour
fournir aux premier, deuxième, troisième et quatrième circuits de mémoire les codes
reçus sur les premier, deuxième, troisième et quatrième sous-bus d'entrée, et pour
fournir aux quatre sous-bus de sortie les codes respectifs fournis par les quatre
circuits de mémoire.
[0021] Selon un mode de mise en oeuvre de la présente invention, le procédé comprend les
étapes consistant à stocker, dans les premier, deuxième, troisième et quatrième circuits
de mémoire, des codes respectivement de couleurs rouge, verte et bleue, et de transparence,
à fournir un code d'adresse au premier sous-bus d'entrée, et à commander les multiplexeurs
du moyen de sélection d'adresse et du moyen de sélection de sortie pour fournir, aux
premier, deuxième, troisième et quatrième circuits de mémoire, le code reçu sur le
premier sous-bus d'entrée, et pour fournir, aux quatre sous-bus de sortie, les codes
respectifs fournis par les quatre circuits de mémoire.
[0022] Selon un mode de mise en oeuvre de la présente invention, le procédé comprend les
étapes consistant à stocker dans les premier, deuxième, troisième et quatrième circuits
de mémoire des codes respectivement de couleurs rouge, verte et bleue, et de transparence,
à fournir un code d'adresse au premier sous-bus d'entrée, à fournir un code de transparence
au quatrième sous-bus d'entrée, et à commander les multiplexeurs du moyen de sélection
d'adresse et du moyen de sélection de sortie pour fournir aux premier, deuxième et
troisième circuits de mémoire le code reçu sur le premier sous-bus d'entrée, pour
fournir au quatrième circuit de mémoire le code reçu sur le quatrième sous-bus d'entrée,
et pour fournir aux quatre sous-bus de sortie les codes respectifs fournis par les
quatre circuits mémoire.
[0023] Selon un mode de mise en oeuvre de la présente invention, le procédé comprend les
étapes consistant à stocker dans les premier, deuxième, troisième et quatrième circuits
de mémoire des codes respectivement de couleurs rouge, verte et bleue, et de transparence,
à fournir aux premier, deuxième et troisième sous-bus d'entrée respectivement des
codes de couleurs rouge, verte et bleue, à activer le compteur, et à commander les
multiplexeurs du moyen de sélection d'adresse et du moyen de sélection de sortie pour
fournir, aux trois premiers circuits de mémoire les codes d'adresse fournis par le
compteur, et pour fournir au premier sous-bus de sortie le code d'adresse fourni par
le second moyen de mémorisation.
[0024] Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention
seront exposés en détail dans la description suivante de modes de réalisation particuliers
faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles
:
la figure 1, décrite précédemment, représente schématiquement un dispositif classique
de traitement d'images numériques ;
la figure 2 représente schématiquement un dispositif de traitement d'images numériques
comportant un circuit de composition d'images selon un mode de réalisation de la présente
invention ;
la figure 3 représente, de façon schématique sous forme de blocs, un mode de réalisation
d'un convertisseur de couleurs du circuit de composition d'image selon la présente
invention ;
les figures 4A à 4E représentent, sous forme de blocs et de façon plus détaillée qu'à
la figure 3, un mode de réalisation d'un convertisseur de couleurs selon la présente
invention ; et
les figures 4B, 4C, 4D et 4E représentent le convertisseur de la figure 4 respectivement
dans quatre modes de fonctionnement.
[0025] Les mêmes éléments ont été désignés par les mêmes références aux différentes figures.
Pour des raisons de clarté, seuls les éléments nécessaires à la compréhension de l'invention
ont été représentés. En particulier, les détails constitutifs du circuit de calcul
n'ont pas été spécifiés et ne font pas l'objet de la présente invention. De plus,
le circuit de composition d'image de l'invention ne sera décrit que pour ses éléments
qui diffèrent du circuit classique.
[0026] La figure 2 représente un dispositif de traitement d'images tel que celui de la figure
1, comportant un circuit de composition d'image (BLITTER) 20 selon la présente invention.
Dans l'exemple de la figure 2, le dispositif de traitement comprend, comme précédemment,
une unité centrale de traitement (CPU) 8, une mémoire (MEM) 4, un bus 6, un dispositif
d'affichage (DISP) 18 et une mémoire intermédiaire (BUF3) 16. Le circuit 20 comprend
également un circuit de calcul (BLITTER CORE) 10 classique dont les deux entrées sont
reliées aux sorties de deux mémoires intermédiaires (BUF1) 12 et (BUF2) 14.
[0027] Selon l'invention, le circuit de composition d'image 20 comprend un convertisseur
de couleurs (CONV) 22 connecté de manière à pouvoir convertir les codages de couleur
des images fournies aux mémoires intermédiaires 12 et 14, et ceux des images fournies
par le circuit 10. Ainsi, l'entrée (IN) du convertisseur 22 est connectée à un multiplexeur
d'entrée (MUX1) 26 de manière à pouvoir recevoir des données depuis le bus 6 ou depuis
la sortie du circuit de calcul 10, et la sortie (OUT) du convertisseur 22 est connectée
à un démultiplexeur (DEMUX) 28 de manière à pouvoir fournir des données à l'une ou
l'autre des mémoires intermédiaires 12 et 14, ou à une première entrée d'un multiplexeur
de sortie (MUX2) 30. Une seconde entrée du multiplexeur 30 est connectée à la sortie
du circuit de calcul 10, et sa sortie est connectée en entrée de la mémoire intermédiaire
16. On notera que la sortie du circuit 10 pourrait, dans un autre mode de réalisation,
être connectée au bus 6 de manière à pouvoir écrire directement dans la mémoire 4.
Les éléments d'aiguillage tels que les multiplexeurs 26 et 30 et le démultiplexeur
28, le convertisseur 22 ainsi que le circuit de calcul 10 sont tous connectés de manière
à être commandés par l'unité centrale de traitement 8. Les connexions de commande
nécessaires, ainsi que leur gestion, sont classiques et elles ne seront pas détaillées
plus avant. Ainsi connecté, le convertisseur 22 a pour fonction de modifier le codage
des couleurs des images fournies au circuit de calcul 10 ou par le circuit de calcul
10. Ainsi, les codages des couleurs des images destinées aux première et deuxième
entrées du circuit 10 peuvent être modifiés par le convertisseur 22 avant que ces
images ne soient stockées dans les mémoires intermédiaires 12 et 14. De même, le codage
des couleurs d'une image produite par le circuit de calcul peut être modifié de manière
que cette image soit directement utilisable par le circuit d'affichage 18. Dans le
présent exemple, cette image est stockée dans la mémoire intermédiaire 16.
[0028] On notera que les éléments d'aiguillage 26, 28 et 30 permettent de réaliser un circuit
économique qui n'utilise qu'un seul convertisseur 22 pour convertir le format des
images écrites dans les mémoires intermédiaires 12, 14 et 16. A titre de variante,
on pourra utiliser trois circuits de conversion distincts, ce qui est moins économique
mais qui permet d'obtenir une vitesse de travail plus élevée.
[0029] La figure 3 représente un mode de réalisation du convertisseur de couleur 22 de la
figure 2. Ce circuit comprend un bus d'entrée (IN) 32 propre à recevoir un code d'entrée
qui est le codage de la couleur d'un pixel d'une image d'entrée, et un bus de sortie
(OUT) 34 propre à délivrer un code de sortie qui est le codage de la couleur du même
pixel d'une image de sortie. Le circuit 22 comprend également un premier moyen de
mémorisation ou mémoire (MEM1) 36 stockant un nombre prédéterminé de codes de sortie,
qui constitue une table de référence de couleurs, par exemple une palette de couleurs,
un deuxième moyen de mémorisation ou mémoire (MEM2) 38 dont le rôle sera expliqué
par la suite, un calculateur d'adresse (ADC) 40, connecté pour recevoir le code d'entrée
ainsi que les codes fournis par la mémoire 36. Le calculateur d'adresse 40 est en
outre connecté pour fournir un code d'adresse et une commande d'écriture à la mémoire
38. Le circuit de conversion 22 comprend également un sélecteur d'adresse (ADR) 42
connecté pour fournir, à la mémoire 36, un code d'adresse reçu soit du bus d'entrée
32, soit du calculateur d'adresse 40. Le circuit 22 comprend en outre un sélecteur
du code de sortie (SEL) 44 prévu pour fournir, au bus de sortie 34, un code de sortie
correspondant soit aux codes fournis par la mémoire 36 soit aux codes fournis par
la mémoire 38. On notera que, pour des raisons de clarté, on a omis de représenter
une troisième entrée du sélecteur 44, reliée directement au bus 32 et permettant de
traverser le circuit 22 lorsque le codage des couleurs de l'image d'entrée ne doit
pas être changé.
[0030] Selon le mode de réalisation de la figure 3, le calculateur d'adresse 40 comprend
un générateur d'adresse (GEN) 46 prévu pour générer et fournir une adresse au sélecteur
42 et à la mémoire 38. Le calculateur 40 comprend également un circuit de comparaison
de codes (COMP) 47 prévu pour comparer les codes reçus sur le bus 32 avec les codes
fournis par la mémoire 36, et pour fournir, à la mémoire 38, une commande d'écriture
lorsque la différence entre les codes comparés satisfait à des conditions prédéterminées.
On notera que la mémoire 36 est connectée de manière que son contenu soit modifiable
par l'unité centrale 8.
[0031] Une caractéristique de l'invention est que le circuit de conversion 22 est prévu
pour fonctionner dans plusieurs modes. Les sélecteurs 42 et 44, ainsi que le calculateur
d'adresse 40 sont connectés de manière à pouvoir être commandés par l'unité centrale
8 en fonction des modes de fonctionnement du circuit 22. Les connexions existant entre
l'unité centrale et les éléments du circuit de conversion 22 sont à la portée de l'homme
de l'art et ne seront pas décrites plus avant.
[0032] Selon son mode de fonctionnement, le circuit 22 de l'invention fournit des codes
complets tels que des codes RGB ou des codes réduits tels que des codes CLUT.
[0033] La figure 4 représente de façon plus détaillée un mode de réalisation du circuit
22 de la figure 3. Ce circuit est prévu pour recevoir ou fournir des données de couleur
codées, par exemple, sur 32 bits en un format appelé RGBA, comprenant trois composantes
R, G et B codées chacune sur 8 bits et une composante A de transparence codée sur
8 bits. On notera que ce circuit peut également recevoir ou fournir des données de
couleur codées en RGB sur 24 bits, comprenant trois composantes R, G et B codées sur
8 bits chacune. Dans un tel cas, la composante A précédente sera simplement ignorée.
Le circuit 22 peut en outre recevoir ou fournir des données de couleurs sous la forme
d'un code CLUT de 8 bits correspondant à une adresse d'une palette de 256 couleurs.
[0034] Selon le mode de réalisation de la figure 4, le bus d'entrée 32 comprend quatre sous-bus
de 8 bits 321 à 324. Le sélecteur 42 comprend quatre multiplexeurs 421 à 424 recevant
respectivement, sur une première entrée, les sous-bus 321 à 324. La mémoire 36 comprend
quatre circuits de mémoire 361 à 364 ayant chacun 256 emplacements mémoires de 8 bits,
repérés par une adresse comprise entre 0 et 255. Les entrées d'adressage des circuits
de mémoire 361 à 364, sur 8 bits, sont respectivement reliées aux sorties des multiplexeurs
421 à 424. Le bus de sortie 34 comprend quatre sous-bus de 8 bits 341 à 344. Le sélecteur
44 comprend un multiplexeur 441 dont une première entrée est reliée à la sortie du
circuit de mémoire 361, et dont la sortie est reliée au sous-bus 341. Les sous-bus
342 à 344 sont reliés respectivement aux sorties des circuits de mémoire 362 à 364.
La sortie du multiplexeur 421 est reliée aux secondes entrées des multiplexeurs 422
à 424. Le générateur d'adresse 46 est un compteur propre à fournir une série prédéterminée
de codes d'adresse de 8 bits à la seconde entrée du multiplexeur 421 ainsi qu'à l'entrée
de la mémoire 38. La mémoire 38 comporte un seul emplacement mémoire de 8 bits. La
sortie de la mémoire 38 est reliée à la seconde entrée du multiplexeur 441.
[0035] Le circuit de comparaison 47 comprend un calculateur (CAL) 471, dont une première,
une deuxième et une troisième entrées, sont respectivement connectées aux sous-bus
321, 322 et 323 et dont une quatrième, une cinquième et une sixième entrées sont respectivement
connectées aux sorties des trois circuits de mémoire 361, 362 et 363. Le calculateur
471 est prévu pour fournir un signal numérique dit "de différence" égal à la somme
des valeurs absolues des différences, respectivement des codes reçus sur la première
et la quatrième entrée, la deuxième et la cinquième entrée, et la troisième et la
sixième entrée. Le circuit de comparaison 47 comprend en outre un comparateur à mémoire
(C/M) 472 connecté pour stocker le signal de différence le plus faible des signaux
de différence calculés par le calculateur 471 pour la série prédéterminée de codes
d'adresse. Le comparateur 472 est en outre connecté de manière à, lorsqu'il stocke
ce signal de différence, commander à la mémoire 38 de stocker le code de l'adresse
fournie par le compteur 46. Une première borne de commande 500 est reliée aux bornes
de sélection d'entrées des multiplexeurs 422 et 423. Une seconde borne de commande
501 est reliée à la borne de sélection d'entrées du multiplexeur 424. Enfin, une troisième
borne de commande 502 est reliée aux bornes de sélection d'entrées des multiplexeurs
421 et 441, ainsi qu'à une borne de commande du compteur 46. Ces trois bornes de commande
sont connectées de manière classique, par exemple à un registre de commande de l'unité
centrale. Les circuits de mémoire 361 à 364 sont également connectés de manière que
l'unité centrale puisse changer leur contenu.
[0036] Les figures 4A à 4D représentent avec de mêmes références les éléments du circuit
de la figure 4 dans différents modes de fonctionnement pris pour exemple. Pour faciliter
la lecture de ces figures, les éléments inutilisés dans chacun des modes sont hachurés.
[0037] La figure 4A représente le circuit de la figure 4 dans un premier mode de fonctionnement,
dit de transposition de couleurs, où les codes de couleurs sont modifiés mais pas
la nature du codage. Les sous-bus 321 à 323 reçoivent respectivement des composantes
R, G et B codées sur 8 bits d'un pixel et le sous-bus 324 reçoit une composante A
de transparence codée sur 8 bits de ce même pixel. Les multiplexeurs 421 à 424 sont
commandés de manière à fournir aux circuits de mémoire 361 à 364 les codes reçus sur
les sous-bus 321 à 324. Les composantes R, G, B et A sont ainsi utilisées directement
comme adresses par chacun des circuits 361 à 364. Le sélecteur de sortie 44 est commandé
de manière que le code fourni par le circuit 361 soit fourni au sous-bus 341. Ainsi,
les codes fournis à chacun des sous-bus 341 à 344 sont les codes fournis par les circuits
respectifs 361 à 364. Les circuits de mémoire 361 à 364 sont respectivement chargés
avec 256 composantes R, G, B et A codées sur 8 bits chacune, qui constituent une palette
de couleurs et de transparence.
[0038] Un tel mode de fonctionnement permet de soumettre les images à une correction de
couleurs dite γ (gamma) . Il est connu que certains tubes cathodiques, de par leur
géométrie, modifient certaines couleurs lors de l'affichage des images. Cette modification
varie en fonction des couleurs et de la géométrie des tubes. La correction γ consiste
à remplacer une couleur d'origine dont on sait qu'elle sera modifiée à l'affichage
par une couleur proche qui, modifiée à l'affichage par le tube, correspondra à la
couleur d'origine.
[0039] Classiquement, la correction γ est effectuée par le dispositif d'affichage, généralement
de façon analogique. Un inconvénient est que toute l'image à afficher subit la correction,
même si cette image est composée de plusieurs sous-images dont certaines n'ont pas
besoin de correction. En effet, selon leur provenance, certaines images reçues par
le circuit de composition d'image peuvent déjà avoir subi une correction γ, par exemple,
selon le site Internet d'où elles sont téléchargées.
[0040] Le circuit de composition d'image de la présente invention permet d'harmoniser le
niveau de correction γ des images produites. Il est en effet possible de stocker,
dans la mémoire 36, une table de couleurs comportant une correction γ ou éventuellement
une table de correction γ inverse, selon qu'on veut produire en sortie du circuit
de composition d'image une image comportant ou ne comportant pas de correction γ,
à partir d'images comportant déjà une correction γ ou non. On notera que la sélection
du mode de fonctionnement peut être modifiée en cours de composition d'une image à
afficher de sorte qu'il est possible de n'affecter la correction γ que de parties
de l'image composite.
[0041] La figure 4B représente le circuit de la figure 4 dans un second mode de fonctionnement
de conversion d'une image en code réduit vers une image en code complet. Les multiplexeurs
422 à 424 sont commandés pour fournir les codes reçus sur leurs secondes entrées,
et le multiplexeur 421 est commandé pour fournir en sortie les codes reçus sur sa
première entrée. Ainsi, dans ce mode, les circuits de mémoire 361 à 364 reçoivent,
comme adresse, les 8 bits de code reçus sur le sous-bus 321. Egalement, le multiplexeur
441 est commandé de manière que le sous-bus 341 est relié à la sortie du circuit de
mémoire 361, d'où il résulte que les sous-bus de sortie 341 à 344 reçoivent respectivement
les sorties des circuits de mémoire 361 à 364. Les circuits de mémoire 361 à 364 sont
respectivement chargés avec 256 composantes R, G, B et A codées sur 8 bits chacune,
qui constituent une palette de couleurs et de transparence. Dans ce mode de fonctionnement,
on fournit un code CLUT de 8 bits au sous-bus 321, et le circuit lui associe un code
de couleur RGBA codé sur 32 bits. Ce mode de fonctionnement correspond, par exemple,
à une conversion CLUT/RGBA classique. On notera que, selon l'invention, les couleurs
de la palette de couleurs peuvent être modifiées pour intégrer des fonctions de correction
γ telles que décrites précédemment.
[0042] La figure 4C représente le circuit de la figure 4 dans une variante du deuxième mode
de fonctionnement de la figure 4B. La seule différence est que le multiplexeur 424
est commandé de manière à fournir au circuit de mémoire 364 les codes reçus sur le
sous-bus 324. De cette manière, on associe à un code CLUT de 8 bits reçu sur le sous-bus
321 un code de couleur RGB codé sur 24 bits, et à une information A de transparence
reçue sur le sous-bus 324, une information de transparence codée sur huit bits fournie
sur le sous-bus 344. Cette variante permet, par exemple, d'utiliser une palette de
transparence comportant un nombre réduit de valeurs qui recevra une composante A ayant
un nombre de bit réduit, par exemple 4 bits, et qui fournira une composante de transparence
codée sur 8 bits au sous-bus 344.
[0043] La figure 4D représente le circuit de la figure 4A dans un quatrième mode de fonctionnement
de conversion d'une image en code complet vers une image en code réduit. Dans ce mode,
les multiplexeurs 421 à 424 sont commandés de manière à fournir aux circuits de mémoire
361 à 364 les codes reçus sur leurs secondes entrées respectives. Pour chaque pixel,
le compteur 46 est commandé pour générer successivement 256 codes correspondant aux
adresses 0 à 255. Ces codes d'adresse sont fournis aux circuits 361 à 364 par le biais
des multiplexeurs 421 à 424, ainsi qu'à la mémoire 38. Ainsi, pour chaque pixel, chaque
circuit 361 à 364 fournit successivement les codes contenus dans ses 256 emplacements
mémoires.
[0044] Le calculateur 471 calcule les différences entre les codes reçus sur les sous-bus
d'entrée et les codes fournis par les circuits 361 à 364 en réponse aux 256 codes
d'adresse produits par le compteur 46.
[0045] Dans un premier temps, le comparateur 472 mémorise la différence calculée pour le
premier code d'adresse (0) fourni par le compteur 46. Puis, à chaque fois que la différence
entre les codes reçus sur le bus d'entrée et les codes fournis par la mémoire 36 est
inférieure à cette première différence mémorisée, le comparateur 472 fournit un signal
d'écriture à la mémoire 38. La mémoire 38 reçoit également les 256 codes d'adresse
fournis à la mémoire 36. On mémorise ainsi le code de l'adresse à laquelle est stockée,
dans les circuits 361 à 364, la couleur dont le code est le plus proche du code de
couleur reçu sur le bus 32. Dans ce mode de fonctionnement, le multiplexeur 441 est
commandé de manière à fournir, au sous-bus de sortie 341, l'adresse fournie par la
mémoire 38.
[0046] Ce mode de fonctionnement permet, par exemple, d'associer à une couleur codée en
RGB sur 24 bits, un code CLUT de 8 bits associé à une palette de couleurs stockée
dans la mémoire 36.
[0047] On notera que bien que les données stockées dans les circuits 361 à 364 soient toujours
des codes de 8 bits, respectivement de couleurs rouge, verte et bleue et de transparence,
ces données peuvent varier en fonction des modes de fonctionnement. La présente invention
prévoit que le contenu de la mémoire 36 peut être changé entre chaque mode de fonctionnement.
[0048] On notera que le circuit de conversion de la figure 4 peut être utilisé dans d'autres
modes de fonctionnement que ceux décrits en relation avec les figures 4A à 4D pour
convertir des images ayant des codes de couleurs différents de ceux décrits, par exemple
des codages RGB utilisant moins de 24 bits.
[0049] Bien entendu, la présente invention est susceptible de diverses variantes et modifications
qui apparaîtront à l'homme de l'art. En particulier, la figure 4 décrit un mode de
réalisation utilisant des multiplexeurs, mais d'autres modes de réalisation utilisant
des éléments équivalents pourront être utilisés. Egalement, l'homme du métier adaptera
sans difficultés le circuit de composition d'image selon la présente invention de
manière qu'il accepte d'autres formats de données. A titre d'exemple, on pourra ajouter,
au circuit de conversion décrit précédemment, un circuit pour convertir un codage
RGB en un autre codage classique, par exemple un codage dit "YCbCr", et réciproquement.
1. Circuit de traitement d'image numérique propre à remplacer un code d'entrée associé
à un pixel de l'image par un code de sortie choisi dans un premier moyen de mémorisation
(36) contenant un ensemble de codes, caractérisé en ce qu'il comporte :
un bus d'entrée (IN) propre à recevoir le code d'entrée ;
un bus de sortie (OUT) propre à délivrer le code de sortie ;
ledit premier moyen de mémorisation ;
un moyen (40) de calcul d'adresse du premier moyen de mémorisation ;
un moyen (42) de sélection d'adresse du premier moyen de mémorisation entre le code
d'entrée et un code d'adresse généré par le moyen de calcul d'adresse ;
un deuxième moyen de mémorisation (38) propre à contenir un code d'adresse généré
par le moyen de calcul d'adresse ; et
un moyen (44) de sélection du code de sortie entre un code lu à l'adresse courante
du premier moyen de mémorisation et ledit code contenu dans le deuxième moyen de mémorisation.
2. Circuit de traitement d'image numérique selon la revendication 1, caractérisé en ce
que le moyen de calcul d'adresse (40) comprend :
un générateur d'adresses (46) propre à fournir des codes d'adresse prédéterminés au
moyen d'adressage,
un circuit (47) de comparaison de données prévu pour :
comparer le premier code et les codes stockés aux adresses prédéterminées dans le
premier moyen de mémorisation (36), déterminer celui des codes comparés qui est le
plus proche du premier code, et
commander, au second moyen de mémorisation (38), de stocker le code de l'adresse à
laquelle le code comparé le plus proche est stocké dans le premier moyen de mémorisation.
3. Circuit de traitement d'image numérique selon la revendication 1 ou 2, caractérisé
en ce que
les bus d'entrée (IN) et de sortie (OUT) comprennent chacun un premier (321, 341),
un deuxième (322, 342), un troisième (323, 343) et un quatrième (324, 344) sous-bus
ayant un même nombre de bits,
le moyen de sélection d'adresse (42) comprend un premier (421), un deuxième (422),
un troisième (423) et un quatrième (424) multiplexeurs dont les premières entrées
sont respectivement connectées aux premier, deuxième, troisième et quatrième sous-bus
d'entrée, la sortie du premier multiplexeur étant reliée aux secondes entrées des
deuxième, troisième et quatrième multiplexeurs,
le premier moyen de mémorisation (36) comprend un premier (361), un deuxième (362),
un troisième (363) et un quatrième (364) circuits de mémoire identiques dont les entrées
d'adressage sont respectivement connectées aux sorties des premier, deuxième, troisième
et quatrième multiplexeurs, et
le moyen de sélection du code de sortie (44) comprend un cinquième multiplexeur (441)
dont la première entrée est connectée à la sortie de données du premier circuit de
mémoire (361) et dont la sortie est connectée au premier sous-bus de sortie (341),
les deuxième (342), troisième (343) et quatrième (344) sous-bus de sortie étant connectés
respectivement aux sorties de données des deuxième (362), troisième (363) et quatrième
(364) circuits de mémoire.
4. Circuit de traitement d'image numérique selon les revendications 2 et 3, caractérisé
en ce que :
le générateur d'adresses (46) est formé d'un compteur propre à fournir une série prédéterminée
de codes d'adresse à la seconde entrée du premier multiplexeur (421), et
le circuit de comparaison de données (47) comprend :
un calculateur (471) connecté pour recevoir respectivement les codes fournis aux trois
premiers sous-bus d'entrée (321, 322, 323) et les codes fournis par les trois premiers
circuits de mémoire (361, 362, 363), et prévu pour fournir un signal numérique égal
à la différence entre ces codes, et
un comparateur à mémoire (472) connecté pour conserver le signal numérique de différence
le plus faible calculé pour la série prédéterminée de codes d'adresse et pour commander
au second moyen de mémorisation (38) de stocker le code de l'adresse à laquelle les
codes correspondant à la différence la plus faible sont stockés dans le premier moyen
de mémorisation (36).
5. Procédé de traitement d'image au moyen d'un circuit selon l'une quelconque des revendications
1 à 4, caractérisé en ce qu'il consiste à recevoir des images dont les codes de couleurs
correspondent chacun à une adresse d'une table de référence de couleurs, et à remplacer
chaque adresse par le code de couleur désigné par cette adresse dans la table de référence.
6. Procédé de traitement d'image au moyen d'un circuit selon les revendications 2 ou
4, caractérisé en ce qu'il consiste à recevoir des images dont les couleurs sont codées
d'une manière prédéterminée, et à remplacer le code de chaque couleur de l'image par
une adresse d'une table de référence de couleurs.
7. Procédé de traitement d'image au moyen d'un circuit selon la revendication 3 ou 4,
caractérisé en ce qu'il comprend les étapes consistant à :
stocker, dans les premier (361), deuxième (362), troisième (363) et quatrième (364)
circuits de mémoire, des codes respectivement de couleurs rouge, verte et bleue et
de transparence,
fournir un code respectivement de couleur rouge, verte et bleue et de transparence
aux premier (321), deuxième (322), troisième (323) et quatrième (324) sous-bus d'entrée,
et
commander les multiplexeurs (421, 422, 423, 424, 441) du moyen de sélection d'adresse
(42) et du moyen de sélection de sortie (44) pour fournir aux premier, deuxième, troisième
et quatrième circuits de mémoire les codes reçus sur les premier, deuxième, troisième
et quatrième sous-bus d'entrée, et pour fournir aux quatre sous-bus de sortie (341,
342, 343, 344) les codes respectifs fournis par les quatre circuits de mémoire.
8. Procédé de traitement d'image au moyen d'un circuit selon la revendication 3 ou 4,
caractérisé en ce qu'il comprend les étapes consistant à :
stocker, dans les premier (361), deuxième (362), troisième (363) et quatrième (364)
circuits de mémoire, des codes respectivement de couleurs rouge, verte et bleue, et
de transparence,
fournir un code d'adresse au premier sous-bus d'entrée (321), et
commander les multiplexeurs (421, 422, 423, 424, 441) du moyen de sélection d'adresse
(42) et du moyen de sélection de sortie (44) pour fournir, aux premier (361), deuxième
(362), troisième (363) et quatrième (364) circuits de mémoire, le code reçu sur le
premier sous-bus d'entrée (321), et pour fournir, aux quatre sous-bus de sortie, les
codes respectifs fournis par les quatre circuits de mémoire.
9. Procédé de traitement d'image au moyen d'un circuit selon la revendication 3 ou 4,
caractérisé en ce qu'il comprend les étapes consistant à :
stocker dans les premier (361), deuxième (362), troisième (363) et quatrième (364)
circuits de mémoire des codes respectivement de couleurs rouge, verte et bleue, et
de transparence,
fournir un code d'adresse au premier sous-bus d'entrée (321),
fournir un code de transparence au quatrième sous-bus d'entrée (324), et
commander les multiplexeurs (421, 422, 423, 424, 441) du moyen de sélection d'adresse
(42) et du moyen de sélection de sortie (44) pour fournir aux premier, deuxième et
troisième circuits de mémoire le code reçu sur le premier sous-bus d'entrée, pour
fournir au quatrième circuit de mémoire le code reçu sur le quatrième sous-bus d'entrée,
et pour fournir aux quatre sous-bus de sortie les codes respectifs fournis par les
quatre circuits mémoire.
10. Procédé de traitement d'image au moyen d'un circuit selon la revendication 4, caractérisé
en ce qu'il comprend les étapes consistant à :
stocker dans les premier (361), deuxième (362), troisième (363) et quatrième (364)
circuits de mémoire des codes respectivement de couleurs rouge, verte et bleue, et
de transparence,
fournir aux premier (321), deuxième (322) et troisième (323) sous-bus d'entrée respectivement
des codes de couleurs rouge, verte et bleue,
activer le compteur (46), et
commander les multiplexeurs (421, 422, 423, 424, 441) du moyen de sélection d'adresse
(42) et du moyen de sélection de sortie (44) pour fournir, aux trois premiers circuits
de mémoire les codes d'adresse fournis par le compteur, et pour fournir au premier
sous-bus de sortie (341) le code d'adresse fourni par le second moyen de mémorisation
(38).