Brevet FR2844898A1 — publié le 20040326

I La présente invention concerne un procédé de traitement d'image couleur pour supprimer les ombres. Elle s'applique notamment à l'augmentation de contraste en télésurveillance, et au traitement d'images avant segmentation en robotique mobile. Dans les applications de robotique mobile, on réalise des segmentations d'images. La segmentation permet de détecter et localiser les bords des routes par exemple. Les ombres des arbres sur ces routes ou les reflets sur les flaques d'eau génèrent des segments parasites. Ces ombres et reflets constituent des informations parasites. L'invention permet de 10 supprimer ces informations parasites en réalisant un traitement d'images couleur que l'on souhaite segmenter. L'invention a pour objet un procédé de traitement d'image couleur caractérisé en ce qu'il comprend au moins les étapes suivantes: - on transforme l'image couleur en une image intermédiaire comprenant des 15 composantes fonctions uniquement des composantes H et S de l'image d'origine dans une représentation HSV ou HLS; - on génère une nouvelle image comprenant une seule composante à partir de l'image intermédiaire, la composante de cette nouvelle image étant un fonction des composantes de l'image intermédiaire. Le procédé selon l'invention présente de nombreux avantages: - il permet d'extraire l'information utile d'une image couleur avec un minimum de perte d'information; - il permet de comprimer les informations dans une image monochrome; - il est totalement non-paramétrique et s'applique donc à toutes les images 25 avec la même efficacité, sans aucun réglage particulier, quelle que soit la scène. Après un tel traitement, il est alors possible d'utiliser des algorithmes de segmentation d'images monochrome tout en exploitant la richesse d'information d'une image couleur et en s'affranchissant des erreurs 30 dues aux ombres ou aux reflets de films d'eau. L'invention sera maintenant décrite de manière plus détaillée dans le cadre d'un exemple particulier de mise en oeuvre pratique. Dans le cours de cette description, on fera référence aux figures des dessins annexés, parmi lesquelles: - la figure 1 représente l'espace de couleurs RGB; -la figure 2 représente l'espace de couleurs HSV; - la figure 3, un diagramme, représente des étapes de mise en oeuvre de l'invention selon un mode avantageux utilisant des attributs de texture; - la figure 4 représente un exemple de résultat d'une transformation de Karhunen-Loève; - la figure 5 représente une alternative de mise en oeuvre de l'exemple représenté figure 3; - la figure 6 représente un exemple d'histogramme d'une nouvelle image 10 obtenue par la mise en oeuvre de l'invention, à laquelle un filtrage de pixels et un ajustement de dynamique est appliqué; - la figure 7 représente un autre exemple d'ajustement de la dynamique. On se réfère à la figure 1. Une image couleur est généralement 15 décrite dans l'espace RGB (initiales de l'expression anglo-saxonne " red green blue "). La couleur de chaque pixel y est représentée par trois composantes R (rouge), G (vert), B (bleu). Ces composantes peuvent être représentées sur trois axes 11, 12, 13 en coordonnées cartésiennes. Les couleurs primaires cyan, bleu, magenta, rouge, jaune, et vert forment les 20 coins d'un cube 10 dans cet espace. Le noir et le blanc sont des coins opposés de ce cube. Le segment reliant ces points constitue une diagonale principale de ce cube sur laquelle varie seulement la luminance L. On se réfère maintenant à la figure 2. D'autres espaces de couleur 25 existent. Dans l'espace HSV (initiales de l'expression anglo-saxon " hue saturation value ") la couleur est représentée par trois composante H, S, et V. Ces composantes peuvent être représentées dans un repère de coordonnées cylindriques. La composante H est représentée par un angle 21. Les composantes S et V sont représentées sur deux axes 22 et 23. La 30 composante H est la teinte. Cette composante permet par exemple de distinguer le rouge et le jaune. La composante S est saturation, c'est à dire la pureté de la couleur. Cette composante permet par exemple de distinguer le rouge et le rose. La composante V est l'intensité, c'est à dire la quantité de lumière. Cette composante permet par exemple de distinguer le gris foncé et 35 le gris clair, ou encore le rouge profond et le rouge léger. On suppose dans la suite de la description que les composantes H, S, V sont normalisées entre 0 et 1. Les explications qui suivent peuvent être transposées de manière évidente si ces composantes ne sont pas normalisées entre 0 et 1. Le passage de la représentation RGB à celle HSV se fait selon 5 des formules analytiques connues. Les couleurs primaires et le noir forment un pseudo cône 20 à six faces (hexcone). Le plan à valeur de V constante correspond à la projection du cube RGB parallèlement à sa diagonale principale. La Demanderesse a remarqué que l'intensité V n'est pas porteuse d'une grande information utile car les éléments de l'image à segmenter se distinguent bien plus par leurs propriétés spectrales que par leur réflexion ou leur absorption globale. De plus, l'intensité V est porteuse d'information induisant en erreur les algorithmes de segmentation, puisque des zones 15 ombrées et non ombrées d'un même objet (une route par exemple) ont des intensités très différentes (variation d'intensité à la source). De même un film d'eau sur la route induit une réflexion importante, et par conséquent une intensité très différente de celle d'un morceau sec ou simplement humide de la même route (variation d'intensité par modification des propriétés de 20 réflexion). Afin de supprimer l'information d'intensité, on transforme l'image couleur en une image intermédiaire dans laquelle la composante V est absente. Cette image intermédiaire comprend des composantes fonctions uniquement des composantes H et S de l'image d'origine dans une 25 représentation HSV. Ceci permet de supprimer les ombres portées et les réflexions dues aux films d'eau. Ceci présente en outre l'avantage de réduire la quantité d'information présente dans l'image (suppression d'une composante). La transformation de l'espace RGB à l'espace HSV présente des singularités de la teinte pour certains points. Ainsi, pour les points achromatiques (R=G=B), une faible variation dans l'espace RGB peut conduire à une forte variation de H. En outre, pour les points au voisinage de 35 l'axe d'origine de H (G=1, R>(G+B)/2), une petite perturbation des composantes R, G, B peut conduire à des variations importantes de H (changement de signe de H). En outre, la distribution des valeurs transformées n'est pas uniforme. La numérisation peut conduire à des pics et des trous dans la 5 répartition des valeurs. En d'autres termes, ['information est bruitée autour de V=O. Avantageusement, on utilise dans l'image intermédiaire des composantes X et Y déterminées par des fonctions notamment de la composante H, ces fonctions prenant la même valeur lorsque la composante 10 H est nulle ou égale à un. On supprime ainsi les singularités induites par la composante H, propre au système de coordonnées cylindriques. On note ces fonctions G. (H) et G. (H). Elles vérifient donc les relations suivantes G, (0) = Gv (1) et Gy (0) = G> (1). Les composantes X et Y étant déterminées alors par: X= G\ (H) Y = G (H) A titre d'exemple, on peut utiliser les fonctions suivantes GQ (H) = cos(2zH - à) Gy (H) = sin(2zH - (p) O C est une constante. On peut ajouter à cette image intermédiaire une troisième composante: la saturation S. On dispose ainsi dans l'image intermédiaire des informations de teinte H et de saturation S, tout en ayant supprimé les singularités. Avantageusement, on peut combiner les informations de teinte H et de saturation S dans deux composantes seulement de l'image intermédiaire. A cet effet, les composantes X et Y sont déterminées par des fonctions non seulement de la composante H, mais aussi de la composante S. De la même façon que précédemment, ces fonctions prennent la même 30 valeur lorsque la composante H est nulle ou égale à un. Par ailleurs ces fonctions tendent vers zéro lorsque la composante S tend vers zéro. On note ces fonctions G,, (H, S) et G;. (H. S). Elles vérifient donc les relations suivantes Go (0, S)= Gk. (i. s) G;. (0, S)= G; (i S) G' (H,S) o S -0 Gy(H,S) - o I S 0 A titre d'exemple, on peut utiliser un produit de deux fonctions indépendantes respectivement de la composante S et de la composante H: G'v (H, S)= FA (S)x G (H) Gy (H, S) = Fy (S) x Gy (H) Les fonctions F.' (S), F>, (S) de la composante S sont des fonctions tendant vers zéro lorsque la composante S tend vers zéro. Ces fonctions peuvent être par exemple la fonction identité (par exemple 10 F. ((S)=S) ou la fonction carré (par exemple FX(S)=S2). On utilisera préférentiellement des fonctions monotones et continues. On se réfère maintenant à la figure 3. Selon une variante avantageuse, on génère une image intermédiaire 34 comprenant en outre is des attributs de texture. Les attributs de texture sont déterminés à partir d'une image 32 comprenant les composantes X et Y par exemple, et non de l'image couleur de départ 30 codée dans l'espace RGB. En effet, on cherche en premier lieu à supprimer les ombres et les reflets. Par exemple, on réalise une transformation de l'image couleur de 20 départ 30 en une image 31 à deux composantes H et S. Puis on réalise une transformation de l'image 31 en une image 32 qui comprend les deux composantes X et Y définies ci-dessus. Pour chaque pixel de l'image 32, on détermine des attributs de texture. Ces attributs peuvent être les attributs d'Haralick par exemple. Bien entendu, il est possible d'utiliser d'autres 25 attributs, par approche fractale par exemple. On obtient une image 33 comprenant des attributs de texture. On combine les composantes X, Y et les attributs de texture pour former l'image intermédiaire 34, à laquelle est appliquée la suite des traitements. Il est ainsi possible appliquer une multitude de transformations à l'image intermédiaire sans se soucier des 30 ombres et des reflets. Afin d'obtenir une image monochrome, on génère une nouvelle image à partir de l'image intermédiaire obtenue. En d'autres termes, on applique à l'image intermédiaire une transformation pour ne conserver qu'une composante. L'unique composante de la nouvelle image est une fonction des composantes de l'image intermédiaire. On se réfère maintenant à la figure 4. Selon un mode de réalisation avantageux, la nouvelle image est générée en ne conservant que la première composante de la transformation de Karhunen-Loève. Cette transformation consiste à se placer dans le repère Di, D2 des vecteurs propres associés à la matrice de covariance des pixels de 10 l'image intermédiaire. On passe ainsi du repère X, Y au repère Dl, D2. Comme le montre l'exemple de répartition des pixels 40 de l'image dans ces repères, cette transformation permet de décorréler l'information présente dans l'image. La première composante DI est la plus discriminante, c'est à dire c'est celle qui maximise l'information. Ceci permet de faciliter la 15 discrimination dans les traitements de segmentation appliqués à la nouvelle image. Selon une variante de mise en oeuvre, on applique une approximation linéaire de la transformation de Karhunen-Loève et non la transformation de Karhunen-Loève elle-même. A cet effet, on applique la 20 transformation de Karhunen-Loève à un ensemble représentatif d'images (par exemple huit images). Les images de cet ensemble présentent des caractéristiques semblables aux images auxquelles on souhaite appliquer l'approximation linéaire. On fait alors une moyenne des changements de repère obtenus par la transformation de Karhunen-Loève exacte. On obtient 25 un changement de repère moyen, qui sera utilisé comme approximation de la transformation de Karhunen-Loève. Selon un autre mode de mise en oeuvre, la nouvelle image est générée en projetant les composantes de l'image intermédiaire dans le plan dans lequel la dynamique ou l'écart type est le plus important. On se réfère maintenant à la figure 5 qui représente une alternative de mise en oeuvre à l'exemple représenté figure 3. De la même façon, on génère, à partir de l'image couleur de départ 50, une image à deux composantes H et S. Puis on génère une image 52 qui comprend les deux 35 composantes X et Y. On applique ensuite la transformation de Karhunen- Loève (ou une approximation linéaire de celle-ci) sur les composantes X et Y. On conserve la première composante du résultat de cette transformation pour former une image 53 comprenant une composante unique. On détermine des attributs de texture de cette image 53. Ces attributs de 5 textures forment une image 54. On combine l'unique composante de l'image 53 et les attributs de texture (image 54) pour former l'image intermédiaire 55 comprenant des informations de couleur et des informations de texture. La suite des traitements est appliquée à cette image intermédiaire 55. On peut ainsi appliquer une seconde fois la transformation de 10 KarhunenLoève par exemple pour obtenir une image monochrome. On se réfère maintenant à la figure 6 sur laquelle est représenté un exemple d'histogramme 60 de la composante de l'image monochrome. L'axe des abscisses 61 représente les valeurs prises par les pixels. L'axe 15 des ordonnées 62 représente le nombre de pixels dans l'image ayant une valeur déterminée. Une plage non négligeable des valeurs est occupée par des pixels très peu nombreux aux deux extrêmes 63a, 63b de l'histogramme. Avantageusement, les pixels les plus clairs et les plus sombres présents en très petit nombre sont filtrés. Ceci permet de ne pas perdre en 20 dynamique en occupant une part importante de la plage de valeurs par des pixels non porteurs d'information supplémentaire. En d'autres termes, on réalise un filtrage des pixels les plus sombres et les plus clairs qui représentent une fraction déterminée du nombre total de pixels de l'image. A cet effet, on détermine un nombre de pixels que l'on souhaite éliminer de 25 l'image. Ce nombre de pixels peut être exprimé comme pourcentage du nombre total de pixels de l'image. On détermine une valeur minimale VMIN et une valeur maximale VMAX des pixels, de sorte que le nombre de pixels de l'image dont la valeur est inférieure à VMIN ou supérieure à VMAX soit la plus proche possible du nombre de pixels que l'on souhaite éliminer. Pour 30 tous les pixels dont la valeur est en dehors des valeurs VMIN et VMAX, on affecte la valeur de la borne correspondante. Les valeurs VMIN et VMAX peuvent être déterminées itérativement. Lors d'une itération, on sélectionne une valeur 64 de l'axe des ordonnées 62, en parcourant l'axe du bas vers le haut. On détermine la plus 35 petite valeur VMIN et la plus grande valeur VMAX de l'axe des abscisses 61 correspondant aux intersections 64a, 64b de l'histogramme 60 avec la valeur 64 sélectionnée. On s'arrête lorsque le nombre de pixels à éliminer pour la valeur sélectionnée est supérieur à la fraction déterminée du nombre total de pixels de l'image. Les valeurs prises par la composante de l'image monochrome (composante la plus discriminante) sont réparties dans une plage non normalisée. En préparation des traitements ultérieurs (segmentation, visualisation, etc.) , ces valeurs peuvent être ramenées par transformation 10 linéaire dans un intervalle normalisé, par exemple [0,1], ou [0, 255]. Cette transformation linéaire 65 peut être appliquée, comme illustré sur la figure 6, après avoir filtré les pixels en petit nombre aux deux bornes de l'histogramme. Ainsi, pour une image codée sur 8 bits, la valeur VMIN est ramenée à un niveau zéro, et la valeur VMAX à un niveau 255. 15 On se réfère maintenant à la figure 7. On décrit une variante avantageuse de l'ajustement des valeurs qui permet de traiter l'image en accordant plus ou moins d'importance au contraste dans une zone sélectionnée. Selon cette variante avantageuse, on réalise le début du traitement de manière analogue. On détermine les paramètres de la transformation de Karhunen-Loève (ou une approximation linéaire de celleci) d'après la zone sélectionnée de l'image seulement. On applique ensuite cette transformation à toute l'image. Les pixels de la zone sélectionnée 25 n'occupent qu'une partie 70 de l'histogramme 60. De manière analogue, on peut appliquer une transformation linéaire pour ramener les valeurs des pixels dans un intervalle normalisé. Avantageusement, on détermine les paramètres de la transformation linéaire de manière à ramener la valeur minimale VMIN et la valeur maximale VMAX 30 de la zone sélectionnée entre des niveaux prédéterminés NMIN et NMAX. Ces niveaux NMIN et NMAX sont comprises strictement dans l'intervalle normalisé. Par exemple pour une image codée sur 8 bits, l'intervalle normalisé étant [0, 255], on peut prendre une valeur de 32 pour NMIN et 224 pour NMAX. On utilise ces paramètres pour appliquer une transformation linéaire à toute l'image, les niveaux des pixels étant bornés (pour les pixels en dehors de la zone sélectionnée) afin d'être compris dans l'intervalle normalisé. Cette variante avantageuse permet d'obtenir une bonne discrimination dans les régions semblables à la zone sélectionnée, tout en conservant d'autres informations en dehors. REVENDICATIONS 1. Procédé de traitement d'image couleur caractérisé en ce qu'il comprend au moins les étapes suivantes: - on transforme l'image couleur (30) en une image intermédiaire (34) comprenant des composantes fonctions uniquement des composantes H et S de l'image d'origine dans une représentation HSV; on génère une nouvelle image comprenant une seule composante à partir de l'image intermédiaire (34), la composante de cette nouvelle image étant une fonction des composantes de l'image intermédiaire. 2. Procédé de traitement d'image couleur selon la revendication 1, caractérisé en ce que l'image intermédiaire comprend au moins deux composantes X et Y, déterminées par des fonctions notamment de la composante H, ces fonctions prenant la même valeur lorsque la composante H est nulle ou égale à un. 3. Procédé de traitement d'image couleur selon la revendication précédente, caractérisé en ce que les composantes X et Y sont déterminées par des fonctions non seulement de la composante H, mais aussi de la composante S, ces fonctions tendant vers zéro lorsque la composante S tend vers zéro. 20 4. Procédé de traitement d'image couleur selon la revendication précédente, caractérisé en ce que la fonction F est une fonction monotone et continue. 5. Procédé de traitement d'image couleur selon l'une quelconque des 25 revendications précédentes, caractérisé en ce que la nouvelle image est générée en ne conservant que la première composante de la transformation de Karhunen-Loève ou d'une approximation linéaire de cette transformation. 6. Procédé de traitement d'image couleur selon l'une quelconque des 30 revendications 1 à 4, caractérisé en ce que la nouvelle image est générée en projetant les composantes de l'image intermédiaire dans le plan dans lequel la dynamique ou l'écart type est le plus important. 7. Procédé de traitement d'image couleur selon l'une quelconque des revendications précédentes, caractérisé en ce qu'on réalise un filtrage des pixels les plus sombres et les plus clairs qui représentent d'une fraction déterminée du nombre total de pixels de l'image. 8. Procédé de traitement d'image couleur selon l'une des revendications précédentes, caractérisé en ce qu'on ajuste la dynamique de la nouvelle image à la dynamique totale disponible.