PROCEDE DE CODAGE D'UNE IMAGE NUMERIQUE COULEUR COMPORTANT UNE INFORMATION DE PONDERATION.
Le domaine de l'invention est celui des systèmes de visualisation comportant des chaînes de génération graphique. Le domaine d'application privilégiée est celui de l'incrustation de symbologies synthétiques issues des chaînes de génération graphique sur une ou des images vidéos. L'invention s'applique notamment aux systèmes de visualisation embarqués sur aéronefs.
Classiquement, une image numérique couleur est composée de pixels de couleur élémentaire. Chaque pixel coloré est codé sur trois composantes numériques comportant chacune le même nombre de bits, chaque composante correspondant à une couleur primaire, généralement rouge, verte ou bleue, encore désignées sous le vocable composantes RVB.
Pour un certain nombre d'applications, en particulier dans le domaine aéronautique, il peut être nécessaire comme indiqué en figure 1 , d'incruster dans une première image électronique venant d'un capteur d'imagerie 5 une seconde image provenant d'une chaîne de génération graphique 1 comportant une mémoire d'images 2. Les deux images électroniques sont fusionnées par des moyens électroniques avant d'être envoyées à un écran de visualisation 4. C'est le cas notamment dans le domaine aéronautique où il est nécessaire de présenter en superposition sur une image du paysage extérieur des informations nécessaires au pilotage ou à la navigation aérienne.
Cependant, si l'on souhaite obtenir une incrustation de qualité dans laquelle l'image incrustée conserve une bonne lisibilité et un bon contraste, on ne peut additionner ou superposer simplement les images. Ainsi, si l'on génère un segment d'une certaine épaisseur d'une première couleur initiale sur un fond d'une seconde couleur initiale, on obtient des marches d'escalier dues à l'effet de l'application sur le segment de la méthode connue sous le terme anglo-saxon d' « antialiasing ». Même si la taille du pixel de l'écran est faible, ces marches d'escalier sont vues par l'utilisateur et constituent une gêne visuelle. Pour atténuer cet effet visuel, on
utilise généralement une méthode de combinaison de couleurs qui consiste à mélanger pour les pixels situés aux frontières du segment la couleur du segment avec la couleur du fond en appliquant une loi de mélange, fonction d'une loi de transparence dépendant d'un coefficient de transparence alpha A et des couleurs initiales du segment et du fond. Dans ce cas, il est nécessaire que chaque pixel comporte en plus de l'information colorimétrique RVB, une information de pondération symbolisée par un A majuscule. Dans ce cas, les pixels comportent 4 composantes RVBA. Actuellement, la plupart des solutions embarquées de génération graphique synthétique pour des applications commerciales sont des solutions dites « propriétaires », c'est-à- dire totalement gérées par le concepteur de la chaîne de génération graphique. Dans ce cas, les quatre composantes RVBA sont, par conception, gérées tout au long de la chaîne de calcul et conservées dans les mémoires images de manière à les délivrer à toute ressource externe assurant l'incrustation avec une ou des vidéos capteur.
Cependant, l'évolution des technologies, les coûts de développement de plus en plus importants ainsi que les niveaux de performance requis pour répondre aux exigences des nouveaux programmes conduisent les différents équipementiers du domaine aéronautique à mettre en œuvre des composants de type GPU-COTS, acronyme signifiant Graphie Processing Unit - Commercial Off The Shelf. Ainsi, la chaîne de génération graphique est basée sur un processeur graphique banalisé reposant sur les standards graphiques actuels de type OpenGL. OpenGL, acronyme de Open Graphics library, est une interface de programmation multi plate-forme pour la conception d'applications générant des images bi- ou tri-dimensionnelles. Cette interface regroupe des fonctions différentes qui peuvent être utilisées pour afficher des scènes tridimensionnelles complexes à partir de simples primitives. Or le domaine d'utilisation de ces composants n'inclut pas le besoin d'incrustation d'une imagerie synthétique sur une ou des vidéos capteur par des ressources externes. Par conséquent, ces composants n'extraient pas la composante Alpha de la mémoire image et donc ne fournissent pas la composante Alpha sur leur sortie vidéo numérique, ce qui ne permet pas une incrustation de qualité.
Le but du procédé selon l'invention est de fournir en sortie de la chaîne de génération graphique synthétique toutes les informations permettant de réaliser une incrustation de qualité sur une vidéo capteur sur uniquement les trois composantes habituellement utilisées. Les informations à fournir par pixel sont les informations de couleur RVB ainsi que la composante Alpha qui correspond au coefficient de pondération de la couleur nécessaire aux algorithmes d'antialiasing ou de filtrage.
Le but de ce procédé est d'être générique par rapport aux standards graphiques actuels, et de ne pas dépendre de spécificités de certains composants telle que la disponibilité de deux sorties vidéos numériques indépendantes qui, en traçant la même image sur chaque voie dans des modes graphiques légèrement différents, permettraient de sortir le RVB sur une voie et le coefficient Alpha sur une autre voie. Ce procédé s'applique essentiellement lorsque l'incrustation est réalisée par une ressource externe à la chaîne de génération graphique synthétique. Le besoin de cette ressource externe provient de la multiplicité des formats de vidéos capteur potentielles à traiter, ainsi de que des différentes fréquences de rafraîchissement des vidéos. Le procédé selon l'invention s'applique notamment lorsque la chaîne de génération graphique synthétique est basée sur un processeur graphique banalisé de type COTS reposant sur les standards graphiques actuels de type OpenGL.
Plus précisément, l'invention a pour objet un procédé de codage des pixels d'une image numérique couleur, chaque pixel coloré étant codé sur trois composantes numériques comportant chacune le même nombre de bits, caractérisé en ce que au moins une des composantes codées comporte d'une part une information de couleur et d'autre part une information de pondération, ladite information de pondération étant destinée à être utilisée par des algorithmes de traitement d'images de type filtrage numérique ou antialiasing.
Avantageusement, les composantes sont codées sur huit bits, une au moins des composantes comportant une information de couleur codée sur
5 bits et une information de pondération codée sur 3 bits, l'information de couleur est codée sur les bits de poids fort ou MSB (Most Signifiant Bit).
Avantageusement, le procédé comporte au moins quatre étapes :
• Une première étape consistant à ne coder l'information de couleur de chaque composante que sur un nombre de bits inférieur au nombre total de bits de ladite composante ;
• Une seconde étape consistant à positionner l'information de couleur sur les bits de poids fort ou MSB (Most Signifiant Bit) de chaque composante ; • Une troisième étape consistant à coder l'information de pondération sur un nombre de bits correspondant à la différence entre le nombre total de bits d'une composante moins le nombre de bits correspondant à l'information de couleur ; • Une quatrième étape consistant sur, au moins, une des composantes à positionner l'information de pondération sur les bits de poids faible ou LSB (Least Significant Bit) non utilisés par le codage de l'information de couleur.
Avantageusement, la seconde étape est réalisée en ajoutant au moins une fois la valeur des bits de chaque composante avec elle-même.
L'invention concerne également un dispositif électronique de génération d'images numériques comportant une unité de calcul de type GPU (Graphie Processing Unit) caractérisé en ce qu'il comporte un procédé de codage ayant l'une des caractéristiques précédentes.
L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description qui va suivre donnée à titre non limitatif et grâce aux figures annexées parmi lesquelles :
• La figure 1 représente le synoptique général d'un système de visualisation permettant l'incrustation d'images ;
• La figure 2 représente deux des étapes du procédé selon l'invention ;
• La figure 3 représente le détail des opérations réalisées au cours de la seconde étape.
Le principe de base de l'invention consiste à exploiter uniquement des ressources graphiques génériques disponibles sur les chaînes de génération d'image standard de type OpenGL. Par conséquent, le procédé de codage selon l'invention consiste à coder les trois informations nécessaires à la couleur et l'information de pondération sur les trois composantes standard classiquement utilisées pour coder uniquement la couleur.
Pour que ce procédé de codage puisse être appliqué, il faut que trois conditions soient remplies : • La chaîne de génération graphique doit fournir l'image sous un format de vidéo numérique dans lequel les couleurs sont représentées par leurs trois composantes, par exemple RVB (Rouge, Vert et Bleu) ;
• II est possible de coder les couleurs utiles utilisées par les éléments constituants l'image sur un nombre de bits inférieur à celui disponible en sortie de la chaîne de génération graphique ;
• Un minimum de trois bits doit être suffisant pour définir le paramètre alpha et ainsi réaliser une incrustation de symbologie sur de la vidéo capteur avec une qualité suffisante.
Généralement, ces trois conditions sont remplies. En effet, les sorties vidéo numériques des chaînes actuelles de génération graphique standard proposent 8 bits en standard par composante RVB. On appelle classiquement LSB les bits de poids faible, LSB étant l'acronyme de Least Significant Bit et MSB, les bits de poids fort, MSB étant l'acronyme de Most Significant Bit. Or, il est clair que le codage des pixels couleur d'une symbologie ne nécessitent pas une gamme de couleur aussi importante que celle d'une image réelle. Généralement, quelques dizaines de couleur suffisent pour coder l'ensemble des caractères et des symboles. On peut, par conséquent, coder les couleurs utiles en n'utilisant qu'un nombre limité de bits de chaque composante. A titre d'exemple, une configuration type peut être :
• 5 bits sur les LSB du Rouge ; « 6 bits sur les LSB du Vert et ;
• 5 bits sur les LSB du Bleu.
Ainsi, au moins 3 bits restent disponibles sur au moins deux des composantes. D'autre part, le codage de l'information de pondération ne nécessite qu'un nombre limité de bits, généralement 3 bits suffisent. Ainsi, il est possible de coder sur une même composante à la fois l'information de couleur et l'information de pondération.
Les différentes étapes du procédé consistent à élaborer la séquence d'opérations graphiques qui conduit à insérer pour chaque pixel la valeur du Alpha mémorisée dans la mémoire image à l'emplacement des bits non utilisés dans les composantes couleur RVB, en tenant compte des contraintes et des règles particulières liées à l'utilisation des processeurs graphiques. Globalement, comme illustré en figure 2, le procédé selon l'invention comporte deux étapes principales qui sont d'une part une étape de mise en forme des composantes couleur de chaque pixel et une étape d'insertion de l'information de pondération sur au moins une des composantes couleur. Dans le cas de la figure 2, chaque pixel comprend trois composantes couleur codées sur 8 bits notées symboliquement par des successions de « R », de « V » ou de « B » majuscules et une composante de pondération codée sur 8 bits notée symboliquement par une succession de « A», les bits à zéro étant notés « 0 ».
De façon plus détaillée et à titre d'exemple, lorsqu'il est mis en oeuvre dans un GPU, l'ensemble du procédé comprend 4 étapes notées 1 , 2, 3 et 4 qui sont :
• Etape 1 : Tout symbole est généré classiquement dans la mémoire image du GPU au format RVBA ;
• Etape 2 : Cette étape est illustrée en figure 3. Tous les bits utiles des composantes RVB inscrits en mémoire image sont décalés sur les MSB (Most Significant Bit) de chaque composante. La technique utilisée consiste à tracer autant de
fois qu'il y a de décalage à effectuer une surface ou un ensemble de surfaces: o Qui couvrent de façon unique la surface de l'image, o Qui seront soumises à une loi de mélange de couleur telle que chaque composante RVB de chaque pixel résultant de la loi de mélange dans la mémoire image soit le résultat de l'addition de chaque composante source de la mémoire image sur elle-même. Cette opération revient à réaliser une multiplication par deux de chaque composante affectée. o Qui sont affectées d'une couleur définie selon les critères suivants :
• Une composante couleur R, V ou B positionnée à la valeur maximale qui sera 255 ou 1.0 selon l'unité choisie entraînera l'application de la loi de mélange sur toutes les composantes correspondantes des pixels de la mémoire image ;
• Une composante couleur R, V ou B positionnée à la valeur minimale qui sera 0 ou 1.0 selon l'unité entraînera un effet nul de la loi de mélange sur toutes les composantes correspondantes des pixels de la mémoire image ;
• Etape 3 : Lorsque les bits utiles des composantes couleur sont positionnés sur les MSB, cette étape consiste à convertir linéairement et par pixel la valeur Alpha sur 8 bits contenue dans la mémoire image en une valeur sur 3 bits ;
• Etape 4 : La valeur convertie sur 3 bits est injectée par pixel sur les LSB non utilisés d'une composante couleur R ou B au choix. La technique utilisée consiste à tracer une surface ou un ensemble de surfaces : o Qui couvrent de façon unique la surface de l'image, o Qui sont soumises à une loi de mélange de couleur telle que :
• Chaque composante de l'objet tracé est pondérée par pixel par le alpha de la mémoire image ;
• Chaque composante résultante est additionnée par pixel à celle correspondante de la mémoire image ; o Qui sont affectées d'une couleur sur laquelle va s'appliquer la pondération en Alpha :
• Les bits actifs doivent être positionnés sur les bits non utilisés de la composante couleur de la mémoire image dans laquelle sera insérée le Alpha. Il est possible de faire cette opération sur la composante R ou B la mieux appropriée ;
• L'intervalle de valeur de la composante doit correspondre au nombre de bits non utilisés sur la composante cible, 3 bits dans le cas de la figure 3.
Une fois le codage effectué, la mémoire image est relue par la chaîne de génération graphique qui fournit alors par pixel sur la sortie vidéo numérique la combinaison de l'information de couleur RVB et de l'information de Alpha. Bien entendu, le décodage et la séparation des informations de couleur de l'information de pondération ne pose aucun problème technique particulier.