IN103 - Projet Véhicules Intelligents: Détection des feux de circulation par vision

Dimension: px
Commencer à balayer dès la page:

Download "IN103 - Projet Véhicules Intelligents: Détection des feux de circulation par vision"

Transcription

1 IN103 - Projet Véhicules Intelligents: Détection des feux de circulation par vision Alexander Gepperth alexander.gepperth@ensta.fr 30 août 2012 Dans le cadre de ce projet, nous allons mettre en ouvre une fonction qui est, en apparence, très simple. C'est-a-dire, nous imaginons que notre voiture intelligente, que l'on suppose equipèe avec une caméra de couleur, voudrait détecter l'apparition des feux de circulation rouges/jaunes pour avertir le conducteur au cas où il ne les percoit pas. Pour réaliser une telle fonction, nous allons utiliser les techniques de base du traitement d'image. Au contraire de ce que l'on pense intuitivement, nous allons découvrir que cette tâche n'est pas du tout facile. 1 Déscription du problème Pour une image en couleur, en utilisant l' éspace de couleur RVB, chaque pixel I RVB (x, y) est normalement décrit par trois valeurs qui correspondent aux contributions des couleurs primaires rouge, vert et bleu : I RVB (x, y) = (r, v, b) T, r, v, b [0, 255]. (1) Pendant ce cours, on va travailler exclusivement avec des vidéos pris depuis une voiture. Comme un vidéo n'est qu'une séquence d'images, un peut traiter les images un par un. Figure 1 Examples des scènes qui contiennent des feux de circulation. 1

2 Figure 2 L'éspace de couleur La*b* pour deux valeurs de la clarté L : 0.25 (gauche) et 0.75 (droite). Pour localiser des feux de circulation, il est donc necessaire de trouver, dans l'image I, de petites régions de couleur verte/rouge/jaune. Du à la résolution restreinte de l'image, ces régions ne comprendront que quelques pixels, ce qui rend leur détection dicile. D'un autre coté, il y a beaucoup de régions dans la plupart des images qui ressemblent aux feux de circulation mais qui ne le sont pas, par éxemple les feux arrières des voitures. On peut voir ces deux eets dans la Figure 1. 2 Approche 2.1 Espaces de couleur Pour détecter les feux de circulation qui sont normalement rouges ou vertes, l'éspace RVB n'est pas très approprié. A part l'éspace RVB, il y a plusieurs systémes colorimetriques qui peuvent être utilisés, comme notamment l'éspace CIE L*a*b*. Dans cet éspace, une couleur est représentée par la clarté L, l'axe rouge-vert(a ) et l'axe jaune-bleu (b ), voir Figure 5. La transformation entre les 'espaces RVB et CIE L*a*b* est compliquée (voir aussi [1]) : X Y Z = L = 116(Y/Y n ) 16 a = 500 [f(x/x n ) f(y/y n )] b = 200 [f(y/y n ) f(z/z n )] { t f(t) = 1/3 si t > ( 6 29 )3 1 3 ( 6 29 )2 t + 4/29 sinon r v b (2) 2

3 Figure 3 Exemple d'un ltre du type "Mexican hat". On percoit que ce ltre prefère les valeurs élevées qui sont entourés par des valeurs inf`érieures. où X n, Y n, Z n correspondent aux valeurs XYZ pour la couleur blanche. Puisqu'on va travailler avec L*a*b*, il est heureux que MATLAB ore une fonction pour faire cette transformation! Une fois l'image I L*a*b* (x, y) = (L, a, b ) T est obtenue à partir de l'image RVB, I RVB, une transformation additionnelle doit être eectuée selon [2], pour élargir la distance entre les pixels rouges et verts : F = L (a + b ), (3) ce qui nous donne une chaine de transformations I RVB I L*a*b* I F. 2.2 Filtrage An de localiser des position potentielles des feux de circulation, il faut trouver les maxima locaux dans l'image I F pour les feux rouges et dans l'image I F pour les feux verts. Pour y arriver, on va utiliser une approche de ltrage linéaire 2D, en appliquant un ltre que l'on appelle "Mexican hat", et qui est déni par l'équation F (x, y) = G σ1 (x, y) G σ2 (x, y) G σ (x, y) = 1 x2 exp( 2πσ 2σ 2 ) avec σ 1 < σ 2 (4) En appliquant ce ltre (voir aussi Figure 3) àux images ±I F par moyen d'une convolution, on obtient une image ltrée : I detection rouge = F I F I detection vert = F I F (5) Pour trouver les feux de circulation, il reste a trouver les positions qui correspondent aux N valeurs maximales de I detection. La valeur de N doit être rouge/vert adaptée "à la main". 3

4 Figure 4 Projection d'un point (plûtot : un object) en 3D sur le plan d'image pris par une caméra. Pour faciliter la comprehension, seulement deux dimensions (x et z) sont montrées. Ax, Az : distance de l'objet de la caméra, mésurée dans la direction paralelle/perpendiculaire au plan d'image. Bz : distances de la caméra du plan d'image. Bx : projection de l'object sur le plan d'image. 2.3 Considérations géometriques Normalement, la position des feux de circulation n'est pas aléatoire. Au contraire, on les trouve habituellement à hauteurs supérieures à 3m. Vu qu'il y existe une transformation simple entre les points 3D et les points dans l'image pris par une camera, il est donc possible d'exclure certaines régions de l'image de la recherche de feux. Les transformations sont données et expliquées, par éxemple, en [3]. Si on adopte les conventions de Figure 4, les équations sont : B x = A x B z A z B y = A y B z A z (6) Si l'on suppose, pour les feux de circulation, une hauteur de au moins 3m, et une distance entre 5m et 100m, on peut calculer quelles régions de l'image peuvent être exclues de la recherche des feux (Figure 4). 4

5 Figure 5 Restriction sur la recherche dex feux : la région en-dessous de la ligne peut etre exclue sans danger de perdre des détections potentielles. Une telle restriction aussi reduit le danger des fausses détections : comme on peut le constater, les feux arrières de la voiture blanche sont exclus, faute de quoi ils sûrement auraient etés considerés comme feux de circulation. 2.4 Vérication des résultats Enn, pour mésurer la qualité des détections, il faut que l'on connaisse les véritables positions des feux. Normalement, ce serait un travail trés dur de marquer les position des feux á la main, mais heureusement ce travail a déja été fait par une équipe de recherche de l'école des Mines à Paris[4]. Tout ce qui reste a faire est de comparer les positions des feux detectés et les véritables positions. 3 Programme de travail 3.1 Première séance : Achage des données Les vidéos et les données de vérication seront téléchargés, puis les positions des feux seront achées dans chaque image. Pour y arriver, on va faire connaissance des fonctions qui peuvent charger et acher des images, ainsi que des fonctions pour extraire des informations à partir des chiers de texte. 3.2 Deuxième séance : Conversion entre les éspaces de couleur Les méthodes de la section 2.1 seront appliquées aux images téléchargés, et les resultats seront achés. D'autres méthodes de traiter les espaces de couleurs seront discutées. 5

6 3.3 Troisième séance : Filtrage numerique Basé sur les images I D, on va appliquer la ltrage numérique comme discuté en Section 2.2. Par la suite, on va trouver les positions des valeurs maximales, et ainsi détecter les feux rouges et vertes. La détection des feux jaunes sera discutée. 3.4 Quatrième séance : Achage des resultats préliminaires Pour la premiére fois, les détections seront achées et comparées aux données de vérication. On va discuter plusieurs possibilités de mésurer la perfomance d'un détecteur des objets. 3.5 Cinquième séance : Considerations géometriques On essayera d'améliorer les résultats de la dernière session en appliquant des considération géometriques. La réduction des fausses détections sera mésurée et discutée. 3.6 Dernière séance : Évaluation On va essayer de tester le systéme de détection sur d'autres vidéos. plusieures possibilités d'amelioration seront discutées. Références [1] [2] Evangelos Skodras George Siogkas and Evangelos Dermatas. Trac lights detection in adverse conditions using color,symmetry and spatiotemporal information. In VISAPP 2012, [3] [4] 6