FR 2901946 A1 20071207 FR 0605002 A 20060606 PROCEDE DE CODAGE D'UNE IMAGE NUMERIQUE COULEUR COMPORTANT UNE INFORMATION DE MARQUAGE Le domaine de l'invention est celui de la sûreté de fonctionnement des systèmes de visualisation. Le domaine d'application est plus particulièrement celui des systèmes de cockpit embarqués sur aéronefs. Ce type de système est destiné à afficher des informations critiques pour le pilotage de l'aéronef. A ce titre, l'affichage erroné de certains paramètres peut conduire à une situation catastrophique en terme de sûreté de fonctionnement. L'intégrité de base de la chaîne de visualisation n'étant pas suffisante pour garantir ces exigences de sûreté, il est nécessaire de mettre en oeuvre des mécanismes de surveillance destinés à détecter de telles erreurs. Le problème de la vérification et de la surveillance de la qualité d'une image consiste essentiellement à identifier des éléments caractéristiques de cette image puis à analyser si ces éléments restent correctement disposés le long de la chaîne de visualisation. Ce problème a été résolu de deux manières différentes dans les solutions actuelles : • Dans le premier cas, la solution consiste à vérifier le résultat des calculs appliqués sur les points caractéristiques de l'image par la chaîne de génération graphique, mais sans propager l'information de marquage de ces points jusqu'à la mémoire image ; • Dans le second cas, la solution consiste à faire calculer l'image par deux voies dissemblables puis à comparer le résultat graphique lors de la relecture simultanée des deux mémoires d'images. La technique mise en oeuvre dans le premier cas consiste à identifier les points caractéristiques de l'image lors de sa spécification en leur associant un marqueur. Ces points caractéristiques conservent ainsi leur marqueur tout au long de la chaîne de calcul de l'image, ce qui permet à la génération graphique d'être capable de fournir le résultat des calculs appliqués sur ces points à un module externe de vérification. Une fois ces résultats de calcul disponibles, il est alors possible de vérifier s'ils sont conformes aux résultats attendus. Cette solution présente plusieurs inconvénients : • Elle ne s'applique qu'à des solutions de générations graphiques spécifiques qui sont : ^ Capables d'accepter des marqueurs sur les points caractéristiques fournis en entrée de la chaîne de calcul ; ^ Capables de propager le marqueur le long de la chaîne de calcul ; ^ Capables d'extraire les résultats des calculs appliqués sur les points caractéristiques. • Elle ne couvre pas la phase d'écriture des points caractéristiques dans la mémoire image et la phase de relecture de la mémoire image, de telle sorte qu'une corruption des points soit en position, soit par effacement n'est pas couverte par ce mécanisme. • Elle nécessite des mécanismes complémentaires qui permettent de vérifier l'intégrité des phases d'accès aux mémoires images comme l'écriture, la lecture ou l'échange de données encore appelé swap . La technique mise en oeuvre dans le second cas consiste à réaliser la vérification du contenu d'une l'image par la comparaison pixel à pixel de l'image issue de deux voies dissemblables et indépendantes. La vérification se fait alors sur la base de la comparaison des couleurs. Elle nécessite la gestion d'un seuil de tolérance adapté qui permet de ne pas imposer à chacune des voies de génération graphique d'avoir un résultat strictement identique. Cette technique dispose de plusieurs variantes, de telle manière qu'une voie génère l'image complète et l'autre voie génère uniquement les éléments de l'image dont l'intégrité doit être vérifiée. Cette solution présente plusieurs inconvénients. En effet, elle impose de mettre en oeuvre deux chaînes dissemblables de génération graphique, avec des impacts significatifs en terme de performance et de coût de développement. De plus, il est nécessaire de démontrer que le seuil de tolérance mis en oeuvre pour la comparaison colorimétrique des images permet de garantir dans tous les cas l'intégrité de l'image. La détermination de ce juste seuil est délicate à obtenir. Le but de l'invention est de fournir en sortie de la chaîne de génération graphique des repères dans l'image qui vont permettre de garantir l'intégrité d'affichage de la chaîne de visualisation embarquée. Ces repères sont en particulier associés aux symboles critiques de l'image et permettent de vérifier l'intégrité de ces symboles. L'invention consiste à élaborer la séquence d'opérations graphiques qui conduit à l'insertion de repères sous la forme de bits positionnés à 1 à l'emplacement des bits non utilisés dans les composantes couleur dites RVB, acronyme de Rouge-Vert-Bleu. Plus précisément, l'invention a pour objet un procédé de codage des pixels d'une image numérique couleur comportant des symboles critiques représentés par des pixels critiques, chaque pixel coloré étant codé sur trois composantes numériques comportant chacune le même nombre de bits, caractérisé en ce que les composantes des pixels critiques comporte d'une part une information de couleur et d'autre part un marqueur encore appelé tag codé sur au moins un bit, ledit marqueur étant destiné à être exploité par des fonctions de génération et de prédiction des symboles critiques. Avantageusement, les composantes sont codées sur huit bits, deux des composantes comportant une information de couleur codée sur cinq bits et une des composantes comportant une information de couleur codée sur six bits. Avantageusement, l'information de couleur est codée sur les bits 30 de poids faible ou LSB (Least Signifiant Bit). Avantageusement, le procédé est réalisé dans un dispositif de génération d'images numériques comportant une unité de calcul de type GPU comportant au moins une mémoire image, une mémoire dédiée aux masques encore appelés stencils comportant au moins un plan mémoire et un processeur graphique, et ledit procédé comporte au moins quatre étapes : • Une première étape de génération des symboles non critiques dans la mémoire image ; • Une seconde étape de génération des symboles critiques dans la mémoire image et de génération des marqueurs associés auxdits symboles critiques dans un plan mémoire de la mémoire dédiée aux masques ; • Une troisième étape de création de l'image codée par le processeur graphique en incorporant lesdits marqueurs aux composantes des pixels des symboles critiques ; • Une quatrième étape de relecture de l'image codée . L'invention concerne également un dispositif électronique de génération d'images numériques comportant une unité de calcul de type 15 GPU (Graphic Processing Unit) caractérisé en ce qu'il comporte un procédé de codage selon l'une des revendications 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 20 limitatif et grâce aux figures annexées parmi lesquelles : • La figure 1 représente le synoptique général d'un dispositif électronique de génération d'images numérique selon l'invention ; • La figure 2 représente les principales étapes du procédé selon 25 l'invention ; • La figure 3 représente le synoptique général d'un dispositif électronique de sécurisation d'images numériques comportant un dispositif électronique de génération d'images numériques selon l'invention. 30 Le principe de base de l'invention consiste à : • Mettre en oeuvre un mécanisme de marquage des pixels dans l'image qui couvre dans sa globalité : • La chaîne de calcul des points caractéristiques de l'image, 35 • L'écriture des points dans le mémoire image, • L'échange encore appelé swap et la lecture des mémoires images. • Exploiter uniquement des ressources graphiques génériques disponibles sur les chaînes de génération d'image standard 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 ; • Positionner des marqueurs dans l'image pour chaque pixel de toute primitive graphique identifiée comme appartenant à un symbole critique. 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 fournit l'image sous un format de vidéo numérique dans lequel les couleurs sont représentées par leur trois composantes RVB (Rouge, Vert et Bleu) ; • Il est possible de coder les couleurs utiles utilisées par les éléments constituant l'image sur un nombre de bits inférieur à celui disponible en sortie de la chaîne de génération graphique ; • La chaîne de génération graphique dispose d'une ressource mémoire dédiée à la gestion des masques. A titre d'illustration, dans le standard OpenGL, cette ressource s'appelle les stencils . Cette ressource mémoire est utilisée pour la gestion des marqueurs. Ces conditions sont généralement satisfaites dans tous les environnements graphiques standards, et en particulier dans l'environnement openGL. En effet, les sorties vidéo numériques des chaînes actuelles de génération graphique standard proposent huit 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écessite 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 trois bits restent disponibles sur au moins deux des composantes. D'autre part, le codage du marqueur ne nécessite qu'un nombre limité de bits, généralement un bit suffit. Ainsi, il est possible de coder sur une même composante à la fois l'information de couleur et l'information de marquage. Les différentes étapes du procédé consistent à élaborer la séquence d'opérations graphiques qui conduit à insérer pour chaque pixel le marqueur mémorisé dans la mémoire des masques à 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. 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 quatre étapes notées 1, 2, 3 et 4 qui sont détaillées ci-dessous. Ces différentes étapes sont illustrées par les figures 1 et 2. Sur la figure 1, le parcours des symboles non critiques SNC est représenté par des flèches pointillées et le parcours des symboles critiques Sc est représenté par des flèches continues : • Etape 1 : Tout symbole non critique SNC est généré classiquement dans la mémoire image 10 du GPU 1 au format RVB, chaque pixel étant codé sur cinq bits sur les LSB du Rouge, six bits sur les LSB du Vert et cinq bits sur les LSB du Bleu , • Etape 2 : Tout symbole critique Sc est généré simultanément dans la mémoire image 10 au format RVB et dans un plan mémoire 12 dédié aux masques qui a un bit de profondeur. Dans cette étape, tout pixel écrit en mémoire image, et quelle que soit sa couleur, se voit affecté d'un pixel correspondant et positionné à 1 dans le plan de masque. Lorsque l'image est entièrement générée, l'image couleur RVB est disponible dans la mémoire image et les marqueurs par pixel sont disponibles dans le plan de masque. Chaque pixel est codé sur cinq bits sur les LSB du Rouge, six bits sur les LSB du Vert et cinq bits sur les LSB du Bleu ; • Etape 3 : Cette étape consiste à insérer au moyen de l'unité de calcul 11 du GPU 1 un marqueur dans la mémoire image pour chaque pixel qui dispose d'un correspondant positionné à 1 dans le plan de masque. La technique utilisée consiste à tracer une surface ou un ensemble de surfaces : o Qui couvrent la zone de l'image dans laquelle les 20 marqueurs doivent être insérés. A titre d'exemple, selon l'importance de la symbologie générée, une seule surface peut recouvrir toute l'image ou une ou plusieurs surfaces peuvent recouvrir un sous-ensemble de l'image ; 25 o Qui sont affectées d'une couleur dont les bits actifs correspondent aux marqueurs qui sont insérés dans la mémoire image. Ces bits actifs doivent être positionnés sur les bits non utilisés de la mémoire image ; o Qui seront soumises à une loi de mélange de couleur 30 telle que, si un pixel du plan de masque est positionné à 1, alors la couleur de la (des) surface(s) tracée(s) sera additionnée à la couleur déjà présente dans la mémoire image. • Etape 4 : Cette étape correspond à la relecture de la mémoire 35 image par la chaîne de génération graphique qui fournit alors 10 15 par pixel sur la sortie vidéo numérique la combinaison de l'information de couleur RVB et de l'information de marquage des pixels. On note lm cette image comportant des marqueurs. Une portion de chaîne de génération graphique sécurisée mettant en oeuvre le procédé selon l'invention est décrite en figure 3. Elle comporte essentiellement : • Une unité de calcul graphique de type GPU 1 ; • Une unité de calcul de prédiction 2 ; • Une unité d'extraction et de comparaison 3. Le principe de fonctionnement est le suivant : l'unité de calcul de prédiction calcule la position des symboles critiques dans l'image. Ces calculs sont comparés au moyen de l'unité d'extraction et de comparaison aux positions des symboles critiques repérés par leurs marqueurs. On sait ainsi si la chaîne de génération graphique fonctionne correctement. Les avantages apportées par la mise en oeuvre d'un tel mécanisme de marquage de pixels en sortie d'une chaîne de génération graphique par rapport aux méthodes précédentes sont essentiellement : • Le procédé s'applique à tous les types de primitives graphiques qui peuvent être des vecteurs ou des surfaces ; • Le procédé prend en compte les fonctions de gestion des superposition ou de priorité des symboles, fonctions appelées en langage OpenGL fonctions clipping , stencil ou scissor . Par conséquent, une primitive non tracée ne génèrera pas de marqueurs ; De plus, le procédé est indépendant : • Du mélange des couleurs nécessaires pour les fonctions 30 dites anti aliasing , ou blending ; • Des méthodes de tracé de type vecteurs , quads texturés , ... ; • De l'ordre de tracé des symboles, • De l'utilisation du Z-Buffer qui définit les règles de 35 priorité entre symboles ; • Du type de GPU compatible OpenGL utilisé. Le procédé est également performant : • Il permet l'écriture simultanée dans la mémoire image et le plan de masque sans impact sur la performance requise ; • Il est possible d'optimiser la surface de la zone de mélange additif en la limitant aux zones contenant les symboles critiques. La solution apportée est extensible à un nombre N de plans de masque. Dans le cas de symboles critiques non superposés, il est ainsi possible de gérer 2N marqueurs ou tags. Dans le cas de symboles critiques superposés, il est alors possible de gérer N tags différents. La solution apportée est compatible d'une génération automatique de code en incluant des portions de code de la façon suivante : • Portion de code à insérer en début de tracé d'un symbole pour déclencher la mémorisation dans le plan de masque, • Portion de code à insérer en fin de tracé d'un symbole pour 20 inhiber la mémorisation dans le plan de masque, • Portion de code à insérer en fin de tracé d'image pour déclencher le mélange additif. Ce nouveau mécanisme permet de garantir l'intégrité des 25 nouvelles technologies de visualisation autant basées sur des solutions propriétaires que sur des solutions du commerce dites COTS, acronyme de Component Of The Shelf. REVENDICATIONS 1. Procédé de codage des pixels d'une image numérique couleur comportant des symboles critiques représentés par des pixels critiques, chaque pixel coloré étant codé sur trois composantes numériques comportant chacune le même nombre de bits, caractérisé en ce que les composantes des pixels critiques comporte d'une part une information de couleur et d'autre part un marqueur encore appelé tag codé sur au moins un bit, ledit marqueur étant destiné à être exploité par des fonctions de génération et de prédiction des symboles critiques. 2. Procédé de codage selon la revendication 1, caractérisé en ce que les composantes sont codées sur huit bits, deux des composantes comportant une information de couleur codée sur cinq bits et une des composantes comportant une information de couleur codée sur six bits. 3. Procédé de codage selon l'une des revendications 1 ou 2, caractérisé en ce que l'information de couleur est codée sur les bits de poids faible ou LSB (Least Signifiant Bit). 4. Procédé de codage selon l'une des revendications précédentes réalisé dans un dispositif de génération d'images numériques comportant une unité de calcul de type GPU comportant au moins une mémoire image, une mémoire dédiée aux masques encore appelés stencils comportant au moins un plan mémoire et un processeur graphique, caractérisé en ce que ledit procédé comporte au moins quatre étapes : • Une première étape de génération des symboles non critiques dans la mémoire image ; • Une seconde étape de génération des symboles critiques dans la mémoire image et de génération des marqueurs associés auxdits symboles critiques dans un plan mémoire de la 30 mémoire dédiée aux masques ; 5• Une troisième étape de création de l'image codée par le processeur graphique en incorporant lesdits marqueurs aux composantes des pixels des symboles critiques ; • Une quatrième étape de relecture de l'image codée . 5. Dispositif électronique de génération d'images numériques comportant une unité de calcul de type GPU (Graphic Processing Unit) caractérisé en ce qu'il comporte un procédé de codage selon l'une des revendications précédentes. 10