FR 2895823 A1 20070706 FR 0650035 A 20060105 Correction d'image couleur et obtention d'au moins un invariant couleur La présente invention se situe dans le domaine du traitement d'image. Plus précisément l'invention concerne un procédé de correction d'images couleur pour compenser les changements d'illumination, utilisant un réseau de neurones. L'utilisation de caméras et de systèmes de vision artificielle, dans le domaine du traitement d'image, contraint à travailler sur des images de pixels dont les couleurs ne correspondent pas à celles qu'un être humain percevrait sur les scènes qui correspondent à ces images. En effet, l'apparence des couleurs très diverses présentes dans la nature changent en fonction de l'éclairage. Afin de déterminer de manière plus fiable les couleurs sur la surface des objets, les êtres humains et certains animaux ont développé la faculté de ne pas tenir compte d'une partie de l'illumination des couleurs, ce qui se traduit par une certaine constance des couleurs dans la perception humaine. Les images de pixels obtenues par les systèmes d'acquisition d'images ne rendent pas cette faculté, et ne permettent donc pas de rendre la couleur de la surface d'un objet de manière réaliste et constante. Cet inconvénient est particulièrement gênant pour certaines applications, par exemple pour le contrôle de la qualité de produits à distance. Plusieurs procédés de correction d'images couleur existent afin de tenter de reproduire cette constance des couleurs sur des images obtenues par un système d'acquisition comme par exemple une caméra. Néanmoins ces méthodes sont souvent complexes et ne permettent de coder la chromaticité des couleurs qu'au moyen d'un seul invariant couleur. En effet, il est possible de définir une couleur suivant sa chromaticité, codée généralement par un ou deux invariants couleur, ne dépendant pas de son illumination, et par sa luminance, qui elle, en dépend. L'utilisation de deux invariants couleur au lieu d'un seul invariant couleur pour définir la chromaticité d'une couleur permet une indexation plus précise des couleurs, et donc de mieux les représenter. L'utilisation de plus de deux invariants couleur pour coder cette chromaticité est aussi envisageable, mais ajouterait un bruit potentiellement gênant sur les images corrigées par les procédés de correction d'images qui utiliseraient cette option. Il est à noter que les systèmes classiques de codage de couleur, tels que le codage RougeNert/Bleu RGB d'après l'anglais "Red Green Blue" ou le codage Teinte/SaturationNaleur HSV d'après l'anglais "Hue Saturation Value" par exemple, ne permettent pas de séparer efficacement la chromaticité d'une couleur de sa luminance. Par exemple la teinte, appelée "hue" en anglais, présente une certaine sensibilité aux changements d'illumination. Parmi les procédés de correction d'images actuels, permettant de corriger les images afin de compenser les changements d'illumination, on peut citer le procédé décrit dans l'article IEEE, d'après l'anglais " Institute of Electrical and Electronic Engineer ", de S.M. Courtney, L.H. Finkel et G. Buchsbaum, publié en juillet 1995 et intitulé "A multistage neural network for color constancy and color induction". Ce procédé utilise un réseau de neurones inspiré de la biologie, c'est-à-dire du comportement des neurones du cerveau humain, afin d'obtenir à partir d'une couleur une couleur corrigée invariante à l'illumination. Le réseau de neurones utilisé est donc complexe. De plus il ne permet d'obtenir qu'un seul invariant couleur par couleur. La présente invention a pour but de résoudre les inconvénients de la technique antérieure en fournissant un procédé et un dispositif de correction d'images couleur pour compenser les changements d'illumination et utilisant un réseau de neurones. Ce procédé permet notamment d'obtenir, à partir d'une couleur de l'image à corriger, un ou plusieurs invariants couleur correspondant à cette couleur. De plus ce procédé est rapide, car il permet de corriger chaque pixel indépendamment, alors que d'autres procédés de correction d'images couleur requièrent l'utilisation d'un voisinage plus ou moins grand de chaque pixel ou même l'utilisation de l'image entière à corriger. A cette fin, l'invention propose un procédé de correction d'une image couleur de pixels pour compenser sa sensibilité aux changements d'illuminations, utilisant un réseau de neurones multicouche ayant une entrée et une sortie, soumis préalablement à une phase d'apprentissage comportant des cycles d'étapes de propagation et de rétro-propagation, ledit procédé étant caractérisé en ce que: - ledit réseau de neurones utilisé comporte une couche médiane, - pendant ladite phase d'apprentissage, utilisant des paires de pixels d'apprentissage ayant subi entre eux des changements d'illumination, lorsqu'un pixel d'apprentissage d'une desdites paires est appliqué à ladite entrée du réseau de neurones, le pixel d'apprentissage associé est appliqué à ladite sortie du réseau de neurones, pendant lesdites étapes de propagation de ladite phase d'apprentissage, un neurone de ladite couche médiane a sa sortie forcée à la valeur de la luminance dudit pixel d'apprentissage appliqué à la sortie du réseau de neurones, - et après la phase d'apprentissage, ledit neurone a sa sortie forcée à une valeur de luminance prédéterminée, tandis que les pixels de l'image couleur à corriger sont appliqués successivement à ladite entrée du réseau de neurones afin d'obtenir en sortie les pixels d'une image couleur corrigée. Grâce à l'invention, on obtient des images pour lesquelles les changements d'éclairage sont compensés de manière à rendre ces images plus proches de notre perception visuelle, par une mise en oeuvre simple, efficace et rapide. L'invention concerne également un procédé d'obtention, pour une couleur donnée, d'au moins un invariant couleur, utilisant un réseau de neurones multicouche ayant une entrée et une sortie, ledit réseau de neurones étant soumis préalablement à une phase d'apprentissage comportant des cycles d'étapes de propagation et de rétro-propagation, ledit procédé étant caractérisé en ce que: - ledit réseau de neurones utilisé comporte une couche médiane, - pendant ladite phase d'apprentissage, utilisant des paires de couleurs d'apprentissage ayant subi entre elles des changements d'illumination, lorsqu'une couleur d'apprentissage d'une desdites paires est appliquée à ladite entrée du réseau de neurones, la couleur d'apprentissage associée est appliquée à ladite sortie du réseau de neurones, - pendant lesdites étapes de propagation de ladite phase d'apprentissage, un neurone de ladite couche médiane a sa sortie forcée à la valeur de la luminance de ladite couleur d'apprentissage appliquée à la sortie du réseau de neurones, - et après la phase d'apprentissage, ladite couleur donnée est appliquée à ladite entrée du réseau de neurones et ledit au moins un invariant couleur est obtenu par au moins une valeur de sortie parmi les autres neurones de ladite couche médiane. Ce procédé d'obtention d'invariants couleur a l'avantage d'une mise en oeuvre simple, rapide, et de permettre d'obtenir plus d'un invariant couleur par couleur. Selon une caractéristique préférée du procédé d'obtention d'au moins un invariant couleur selon l'invention, pour une couleur donnée appliquée en entrée du réseau de neurones, deux invariants couleur sont obtenus, la couche médiane du réseau de neurones comportant trois neurones. Comme indiqué précédemment, l'obtention de deux invariants couleur pour caractériser la chromaticité d'une couleur est intéressante pour obtenir ensuite une bonne représentation des couleurs. Selon une caractéristique préférée de ces procédés selon l'invention, le réseau de neurones utilisé comporte cinq couches de neurones. La limitation du nombre de couches du réseau de neurones à cinq, qui est un nombre minimal étant donnée la structure particulière du réseau de neurones selon l'invention, permet de diminuer les risques de "surapprentissage", ou "apprentissage par coeur", du réseau de neurones. Selon une autre caractéristique préférée de ces procédés selon l'invention, les deuxième et quatrième couches du réseau de neurones utilisé comportent chacune huit neurones. La valeur huit pour le choix du nombre de neurones des couches intermédiaires du réseau de neurones semble être une valeur optimale qui permet une faible sensibilité au bruit, c'est-à-dire limite encore les risques de "surapprentissage", et donne de bonnes performances du réseau dans la mise en oeuvre des procédés selon l'invention. L'invention concerne de plus un dispositif de correction d'une image couleur mettant en oeuvre le procédé de correction d'une image couleur selon 15 l'invention. L'invention concerne aussi un dispositif d'obtention d'au moins un invariant couleur mettant en oeuvre le procédé d'obtention d'au moins un invariant couleur selon l'invention. L'invention concerne encore un programme d'ordinateur comportant 20 des instructions pour mettre en oeuvre les procédés selon l'invention précédemment présentés. Les dispositifs de correction d'une image couleur et d'obtention d'au moins un invariant couleur, ainsi que le programme d'ordinateur, présentent des avantages analogues à ceux des procédés selon l'invention. 25 D'autres caractéristiques et avantages apparaîtront à la lecture d'un mode de réalisation préféré décrit en référence aux figures dans lesquelles : - la figure 1 représente un réseau de neurones utilisé par les procédés selon l'invention, 30 - la figure 2 représente différentes phases aux- r s est soumis ce réseau de neurones, - la figure 3 représente des équipements permettant de mettre en oeuvre les procédés selon l'invention, - la figure 4 représente les différentes étapes d'une phase d'apprentissage à laquelle on soumet le réseau de neurones utilisé par les procédés selon l'invention. Selon un mode de réalisation préféré de l'invention, les procédés de correction d'images couleur et d'obtention d'invariants couleur utilisent un réseau de neurones RES représenté à la figure 1. Ce réseau neuronal est par exemple un perceptron multicouche aussi appelé MLP, d'après l'anglais "Multi Layer Perceptron", comportant dans ce mode de réalisation cinq couches de neurones, dont une première couche d'entrée, une dernière couche de sortie, et trois couches cachées. Il est possible d'utiliser plus de couches cachées, si leur nombre reste impair, mais un nombre important de couches cachées rend le modèle de correction de couleur implémenté par le réseau de neurones trop complexe: le réseau de neurones risque dans ce cas d'apprendre du bruit, problème qualifié de "surapprentissage". Les deuxième et quatrième couches de neurones comportent un nombre de neurones arbitraires, typiquement entre trois et dix neurones, huit neurones, biais exclus, semblant être un nombre optimal pour la mise en oeuvre des procédés selon l'invention. La couche médiane du réseau de neurones comporte, biais exclus, autant de neurones que d'invariants couleur que l'on souhaite obtenir à partir d'une couleur donnée, plus un neurone. Dans ce mode de réalisation, on obtient deux invariants couleur pour une couleur donnée, et la couche médiane est la troisième couche. Celle-ci comporte donc trois neurones. De plus, dans ce mode de réalisation, on travaille sur des images de pixels. Les couleurs sont donc codées suivant le système de codage couleur RGB. C'est pourquoi la première couche comporte trois neurones, biais exclus, dont les valeurs d'entrée Rx, Gx et Bx permettent de recevoir le codage d'un pixel selon le système de codage couleur RGB. La dernière couche comporte également trois neurones, biais exclus, dont les valeurs de sortie Ry, Gy et By permettent de recevoir le codage d'un pixel selon le système RGB. En variante, on travaille sur des images dont les couleurs sont codées suivant d'autres systèmes de codage couleur, par exemple HSV, ou les systèmes de chrominance de la Commission Internationale de l'Eclairage (CIE) La*b* et Lu*v*, ou encore les systèmes utilisés dans les standards télévision tels que YUV, YIQ, et YCbCr. Le nombre de neurones dans les couches d'entrée et de sortie est alors égal au nombre de dimensions utilisées par le système de codage couleur choisi. En variante, il est également possible de travailler sur des images dont les couleurs sont codées suivant une combinaison de différents systèmes de codage couleur. Par exemple on peut combiner les systèmes HSV et RGB pour obtenir une représentation de couleur hybride "HSVRGB". Il est à noter qu'une telle représentation de la couleur présente des redondances. Le nombre de neurones dans les couches d'entrée et de sortie est alors égal au nombre de dimensions utilisées par le système de codage couleur choisi. Dans ce perceptron multicouche, les neurones ont une fonction d'activation sigmoïde, les liens entre les neurones sont associés à des poids et le réseau comporte également des termes de biais et de moments, un taux d'apprentissage, et un gain associé à la fonction sigmoïde. Les notions de biais, moment, taux d'apprentissage et gain sont connues de l'homme du métier, qui travaille sur les réseaux de neurones. Les valeurs des biais des neurones du MLP sont fixées à la valeur 1, valeur généralement utilisée par l'homme de métier. Le gain a aussi la valeur 1. Les valeurs des moments sont par exemple fixées à une constante 0.01 choisie expérimentalement. Cette constante a une valeur faible pour obtenir un apprentissage progressif. Le taux d'apprentissage est également fixé expérimentalement à la valeur 0.001. Les valeurs initiales des poids sont choisies aléatoirement entre zéro et un, mais différentes de zéro.30 Le réseau de neurones RES est soumis, préalablement à son utilisation par les procédés selon l'invention pendant la phase d'utilisation p2 représentée à la figure 2, à une phase d'apprentissage 01. Le réseau de neurones RES est typiquement implémenté de manière logicielle dans un ordinateur ORD, représenté à la figure 3. L'ordinateur ORD implémente la phase d'apprentissage 01 dans un module d'apprentissage MAP, et la phase d'utilisation 02 dans un module de correction MCO. Chacun de ces modules MAP et MCO implémente le réseau de neurones RES. La phase d'apprentissage 01 nécessite préalablement la constitution d'une base de paires d'images BDD, prises avec différentes caméras CAM, reliées par exemple tour à tour à l'ordinateur ORD. Un module d'acquisition MAC dans l'ordinateur permet d'acquérir ces images et de les enregistrer dans la base d'images BDD. Chaque paire d'images correspond à des images de scènes identiques prises avant et après un changement d'éclairage. Différents éclairages sont utilisés pour constituer cette base d'images BDD, par exemple des éclairages fluorescents, des éclairages intérieurs variés et l'illumination extérieure naturelle. Cette base d'images sert, pendant la phase d'apprentissage 01 du réseau de neurones RES, à entraîner celui-ci à obtenir les invariants couleur de couleurs soumises à des changements d'éclairage. Les poids P; du réseau de neurones, après cette phase d'apprentissage, ont convergé vers des minima locaux. Le réseau de neurones RES est alors prêt à être utilisé pendant la phase d'utilisation 02 pour corriger rapidement une image de manière à rendre ses couleurs moins sensibles à l'illumination. La phase d'apprentissage p1 du réseau de neurones RES est détaillée à la figure 4. Dans une première étape el, on sélectionne un sous-ensemble de pixels d'apprentissage dans la base d'images BDD afin de servir à la phase d'apprentissage. Pour cela on choisit aléatoirement par paire d'images de la base d'images BDD par exemple un nombre constant de pixels dans une des images de cette paire d'images. A chaque pixel tiré ainsi aléatoirement correspond, aux mêmes coordonnées que ce pixel, un pixel de l'autre image dans la paire d'image, on obtient donc une sélection de couples de pixels d'apprentissage. Chaque couple de pixels correspond à une même couleur avant et après changement d'illumination. Dans une seconde étape e2, on sélectionne aléatoirement parmi le sous-ensemble sélectionné à l'étape el, un couple de pixels d'une paire d'images C; représentée à la figure 3. La couleur du premier pixel est alors appliquée à l'entrée du réseau de neurones RES. Dans ce mode de réalisation du procédé selon l'invention, sa couleur est codée par les valeurs RX, GX et BX, représentées à la figure 1. La couleur du second pixel est appliquée à la sortie du réseau de neurones RES. Sa couleur est donc codée par les valeurs Ry, Gy et By. Dans une troisième étape e3, on effectue une propagation du réseau de neurones RES, mettant à jour les poids P; par descente de gradient. Cette étape de propagation diffère néanmoins par rapport à une étape de propagation classique par le fait que l'un des neurones de la couche médiane a une sortie forcée à une valeur donnée. En effet pendant cette étape e3, la valeur de sortie du neurone N1 de la couche médiane du réseau de neurones RES, est forcée à une valeur de luminance L égale à la luminance du deuxième pixel, selon l'équation: R +G. +B, L= 3 Dans une quatrième étape e4, on effectue une rétro-propagation du réseau de neurones RES, la seule différence par rapport à une rétro-propagation classique de perceptron multicouche étant que l'on ne rétro- propage pas l'erreur sur la sortie du neurone N1 Les étapes e2 à e4 sont ensuite répétées cycliquement jusqu'à ce que les poids P; du réseau de neurones RES aient convergé vers des minima locaux. A la fin de chaque cycle ou époque d'apprentissage, les nouveaux poids sont validés sur un ensemble de paires de pixels de test. Ces paires de pixels de test sont choisis aléatoirement dans la base de données BDD de la même manière que les paires de pixels d'apprentissage, mais de manière à ce que le sous-ensemble de pixels de test soit distinct du sous-ensemble de pixels d'apprentissage. Par exemple les pixels de test et les pixels d'apprentissage sont tirés aléatoirement sur des paires d'images différentes. Ce mécanisme d'utilisation combinée durant un apprentissage de données d'apprentissage et de données de test, les données étant ici des pixels, est connu de l'homme de métier. Cette validation des poids P; par des pixels de test permet de vérifier que le réseau de neurones n'a pas effectué de "surapprentissage". A la fin de cette phase d'apprentissage 01, les valeurs de sortie À et p des deux autres neurones de la couche médiane, représentées à la figure 1, définissent la chromaticité de la couleur d'un premier pixel appliqué à l'entrée du réseau RES, et d'un second pixel appliqué à la sortie du réseau RES. En effet, le réseau a été entraîné pendant cette phase d'apprentissage, à reconstruire au mieux la couleur Ry Gy By du pixel de sortie à partir de sa luminance L et de valeurs de sortie intermédiaires a et p. La luminance L étant directement fonction de l'illumination, les valeurs de sortie À et p sont donc liées à la partie invariante à l'illumination de la couleur du pixel de sortie. Pendant la phase d'utilisation 02, le réseau de neurones RES avec les poids P; appris est utilisé sur une image IM, représentée à la figure 3, pixel par pixel. Pour cela, chaque pixel de l'image IM est appliqué à l'entrée du réseau de neurones RES et propagé pour obtenir les invariants couleur de ce pixel, donnés par les valeurs de sortie À et p des deux neurones autres que Ni de la couche médiane du réseau RES. On obtient ainsi une image d'invariants couleur correspondant à l'image 1M. Si au lieu d'obtenir une image d'invariants couleur, on veut corriger l'image IM pour obtenir une image couleur corrigée IMc, on applique également successivement chaque pixel de l'image 1M à l'entrée du réseau de neurones RES, et on propage chaque pixel dans le réseau, tandis que l'on force la sortie du neurone N1 à une valeur de luminance L prédéterminée. Cette luminance L est arbitraire, elle est par exemple choisie de telle manière que l'image corrigée soit illuminée par une lumière uniforme et blanche. Dans ce cas la valeur de la luminance L est la même pour tous les pixels de l'image IM. Les pixels obtenus successivement en sortie permettent de reconstituer, pixel par pixel, l'image corrigée IMc, correspondant à l'image IM dans laquelle les couleurs ont été rendues plus proches de notre perception visuelle. En variante, la valeur de la luminance L appliquée en sortie du neurone NI pour chaque pixel de l'image IM est choisie proportionnelle à la valeur de luminance de ce pixel. Dans ce cas la valeur de la luminance L est différente suivant les pixels de l'image IM. Les pixels obtenus successivement en sortie permettent de reconstituer, pixel par pixel, une image corrigée IMc ayant un éclairage par exemple moins important par rapport à l'image d'origine IM.20 REVENDICATIONS 1. Procédé de correction d'une image (IM) couleur de pixels pour compenser sa sensibilité aux changements d'illuminations, utilisant un réseau de neurones multicouche (RES) ayant une entrée et une sortie, soumis préalablement à une phase d'apprentissage (p1) comportant des cycles d'étapes de propagation (e3) et de rétro-propagation (e4), ledit procédé étant caractérisé en ce que: - ledit réseau de neurones utilisé (RES) comporte une couche médiane, pendant ladite phase d'apprentissage (01), utilisant des paires de pixels d'apprentissage ayant subi entre eux des changements d'illumination, lorsqu'un pixel d'apprentissage d'une desdites paires est appliqué à ladite entrée du réseau de neurones (RES), le pixel d'apprentissage associé est appliqué à ladite sortie du réseau de neurones (RES), pendant lesdites étapes de propagation (e3) de ladite phase d'apprentissage (01), un neurone (Ni) de ladite couche médiane a sa sortie forcée à la valeur de la luminance (L) dudit pixel d'apprentissage appliqué à la sortie du réseau de neurones (RES), - et après la phase d'apprentissage (O1), ledit neurone (NI) a sa sortie forcée à une valeur de luminance (L) prédéterminée, tandis que les pixels de l'image couleur à corriger (IM) sont appliqués successivement à ladite entrée du réseau de neurones afin d'obtenir en sortie les pixels d'une image couleur corrigée (IM,). 2. Procédé d'obtention, pour une couleur donnée, d'au moins un invariant couleur, utilisant un réseau de neurones multicouche (RES) ayant une entrée et une sortie, ledit réseau de neurones (RES) étant soumis préalablement à une phase d'apprentissage (01) comportant des cycles d'étapes de propagation (e3) et de rétro-propagation (e4), ledit procédé étant caractérisé en ce que:- ledit réseau de neurones utilisé (RES) comporte une couche médiane, - pendant ladite phase d'apprentissage (01), utilisant des paires de couleurs d'apprentissage ayant subi entre elles des changements d'illumination, lorsqu'une couleur d'apprentissage d'une desdites paires est appliquée à ladite entrée du réseau de neurones (RES), la couleur d'apprentissage associée est appliquée à ladite sortie du réseau de neurones (RES), - pendant lesdites étapes de propagation (e3) de ladite phase d'apprentissage (01), un neurone (Ni) de ladite couche médiane a sa sortie forcée à la valeur de la luminance (L) de ladite couleur d'apprentissage appliquée à la sortie du réseau de neurones (RES), - et après la phase d'apprentissage (01), ladite couleur donnée est appliquée à ladite entrée du réseau de neurones (RES) et ledit au moins un invariant couleur est obtenu par au moins une valeur de sortie (À, p) parmi les autres neurones de ladite couche médiane. 3. Procédé d'obtention d'invariants couleur selon la revendication 2, caractérisé en ce que pour une couleur donnée appliquée en entrée du réseau de neurones (RES), deux invariants couleur sont obtenus, la couche médiane du réseau de neurones (RES) comportant trois neurones. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le réseau de neurones (RES) comporte cinq couches de neurones. 5. Procédé selon la revendication 4, caractérisé en ce que les deuxième et quatrième couches du réseau de neurones (RES) comportent chacune huit neurones. 6. Dispositif de correction d'une image couleur mettant en oeuvre le procédé selon la revendication 1. 7. Dispositif d'obtention d'au moins un invariant couleur mettant en oeuvre le procédé selon la revendication 2 ou 3. 8. Programme d'ordinateur comportant des instructions pour mettre en oeuvre 5 le procédé selon l'une quelconque des revendications 1 à 5, lorsqu'il est exécuté sur un ordinateur. 10 15