Département de Production Automatisée École de technologie supérieure Montréal Détection des contours de la pupille à l’aide des transformées de Hough Jérôme Schmaltz Rapport de projet de session Projet de session – SYS844 Vision par ordinateur à l’École de Technologie Supérieure (ETS). 2006 Professeur M. Richard Lepage SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Table des matières Table des matières ............................................................................................................................................ 2 Liste des figures ................................................................................................................................................ 3 Liste des tableaux.............................................................................................................................................. 4 1. Introduction................................................................................................................................................... 5 1.1 Travail proposé ....................................................................................................................................... 6 2. Caractéristiques biologiques de l’œil............................................................................................................ 7 3. Caractéristiques d’une image de l’œil acquise avec une caméra traditionnelle............................................ 9 3.1 Ombres.................................................................................................................................................. 10 3.2 Reflets ................................................................................................................................................... 10 3.3 Pupilles.................................................................................................................................................. 11 3.4 Luminosité ............................................................................................................................................ 11 3.5 Contrainte additionnelle : lunettes et lentilles....................................................................................... 12 4. Traitement de l’image pour la détection de la pupille ................................................................................ 13 4.1 Image source ..................................................................................................................................... 13 4.2 Suppression du surplus de contours.................................................................................................. 14 4.3 Conversion en niveaux de gris.......................................................................................................... 15 4.4 Détection des contours...................................................................................................................... 16 4.5 Directions des contours..................................................................................................................... 18 4.6 Détection des centres ........................................................................................................................ 19 4.7 Seuillage............................................................................................................................................ 20 4.8 Isoler les centres potentiels ............................................................................................................... 21 4.9 Recherche des cercles ....................................................................................................................... 22 5. Présentation du projet ................................................................................................................................. 24 5.1 Architecture du programme .................................................................................................................. 24 5.2 Présentation des l’interfaces usager ...................................................................................................... 27 6. Résultats obtenus ........................................................................................................................................ 29 6.1 Vitesse de l’algorithme ......................................................................................................................... 33 7. Conclusion et améliorations possibles ........................................................................................................ 35 Références....................................................................................................................................................... 36 ETS SYS-844 Jérôme Schmaltz Page 2 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Liste des figures Figure 2.1 Les différentes parties externes de l’œil humain............................................................................. 7 Figure 2.2 Les différentes parties internes de l’œil humain.............................................................................. 8 Figure 2.3 Représentation des cônes et des bâtonnets. ..................................................................................... 8 Figure 3.1 Contenu spectral de la lumière. ....................................................................................................... 9 Figure 3.2 Image capturée avec une caméra traditionnelle............................................................................... 9 Figure 3.3 Formation d’ombre dans une image de l’œil................................................................................. 10 Figure 3.4 Types de reflets dans un œil. (a) Reflet de fenêtre dans l’œil. (b) Reflet d’une lampe dans l’œil. (c) Reflet d’un néon dans l’œil. ............... 11 Figure 4.1 Différentes étapes de traitement de l’image afin de localiser la pupille dans une image.............. 13 Figure 4.2 Spécification d’une région d’intérêt pour traitements ultérieurs................................................... 13 Figure 4.3 Application du filtre moyenneur sur la région d’intérêt................................................................ 14 Figure 4.4 Exemple d’un filtre moyenneur de dimension 3x3. ...................................................................... 14 Figure 4.5 Conversion de la région d’intérêt en niveaux de gris. ................................................................... 15 Figure 4.6 Détection des contours de la région d’intérêt. ............................................................................... 17 Figure 4.7 Noyaux de convolution de Sobel................................................................................................... 18 Figure 4.8 Déterminer les directions des gradients à partir de l’application des filtres de Sobel................... 18 Figure 4.9 Traçage d’une droite en fonction d’un contour. ............................................................................ 19 Figure 4.10 Traçage d’une droite dans l’accumulateur. ................................................................................. 19 Figure 4.11 Centre d’un cercle dans un accumulateur.................................................................................... 20 Figure 4.12 Traçage de lignes dans l’accumulateur en fonction de l’image de Canny et de la matrice de directions. 20 Figure 4.13 Application d’un seuil dans l’accumulateur. ............................................................................... 21 Figure 4.14 Représentation graphique d’un Laplacien de Gaussien. ............................................................. 21 Figure 4.15 Application d’un chapeau mexicain dans l’accumulateur........................................................... 21 Figure 4.16 Accumulateur de Hough en trois dimensions.............................................................................. 22 Figure 4.17 Traçage des cercles avec l’image de contours............................................................................. 22 Figure 4.18 Flux d’opérations pour localiser les pupilles............................................................................... 23 Figure 5.1 Architecture de haut niveau........................................................................................................... 24 Figure 5.2 Diagramme de classes. .................................................................................................................. 26 Figure 5.3 Écran principal de l’application .................................................................................................... 27 Figure 5.4 Établissement de la région d’intérêt. ............................................................................................. 27 Figure 5.5 Écran de configuration des paramètres.......................................................................................... 28 Figure 6.1 Éclairage de forte intensité dans l’axe de la caméra. Scène arrière éclairée. ................................ 29 Figure 6.2 Sous exposition de la lumière. Scène arrière éclairée. .................................................................. 29 Figure 6.3 Éclairage normal, scène arrière sous éclairée................................................................................ 30 Figure 6.4 Sur éclairage sur la gauche, scène arrière sous éclairée. ............................................................... 30 Figure 6.5 Sur éclairage sur la droite, scène arrière sous éclairée. ................................................................. 30 Figure 6.6 Éclairage normal, plan de loin....................................................................................................... 31 Figure 6.7 Plan de proche, éclairage normal, ajustement de paramètres. ....................................................... 31 Figure 6.8 Temps de calculs en fonction des dimensions de la région d’intérêt. ........................................... 33 Figure 6.9 Temps de calculs en fonction des coefficients de Gaussien.......................................................... 34 ETS SYS-844 Jérôme Schmaltz Page 3 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Liste des tableaux Tableau 5.1 Spécifications techniques............................................................................................................ 24 Tableau 5.2 Description des classes. .............................................................................................................. 27 Tableau 6.1 Liste des valeurs pour les différents paramètres. ........................................................................ 29 Tableau 6.2 Valeurs des paramètres utilisés pour la figure 6.7 ...................................................................... 31 Liste des formules Formule 4.1 Exprimant la moyenne d’un pixel d’intérêt................................................................................ 14 Formule 4.2 Conversion en niveau de gris d’un pixel RGB........................................................................... 15 Formule 4.3 Conversion en niveau de gris d’un pixel RGB en prenant en compte la perception de l’œil humain. ... 15 Formule 4.3 Représentation du filtre gaussien. .............................................................................................. 16 Formule 4.4 Convolution d’un filtre gaussien sur une image......................................................................... 16 Formule 4.5 Amplitude d’un gradient et obtention de sa direction. ............................................................... 16 Formule 4.6 Arc tangente des filtres de Sobel................................................................................................ 18 Formule 4.7 Équation de la droite................................................................................................................... 19 Formule 4.8 Représentation d’un Laplacien de Gaussien. ............................................................................. 21 ETS SYS-844 Jérôme Schmaltz Page 4 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 1. Introduction Le traitement d’images digitales n’est pas nouveau en soi. Depuis les trente dernières années, des applications concrètes naissant du traitement d’images, ont trouvé une place importante dans plusieurs domaines scientifiques et mêmes domestiques. Ainsi, la domotique, la robotique et la biométrie sont des exemples de champs d’applications reposant toutes sur le traitement d’images [EFF00]. Quelques applications de la robotique arborent un système de vision exploitant le traitement d’images digitales afin d’analyser un stimulus et d’en extraire une représentation symbolique [LEP05]. C’est souvent le cas de robots autonomes dotés d’une intelligence artificielle. D’autres cas concrets d’applications directes du traitement d’images se retrouvent aussi en biométrie, afin de produire un modèle mathématique de l’identité d’un sujet en fonction des caractéristiques physionomiques d’une partie quelconque de son corps (emprunte, iris, main, etc.). Puisque ces milieux sont en constantes évolutions du fait qu’ils sont directement influencés par une croissance technologique continue, la recherche en traitement d’images et en vision par ordinateur demeure un point chaud en ingénierie. Depuis quelques années déjà, on assiste à une panoplie de recherches concernant des algorithmes et protocoles visant la caractérisation, la quantification, la qualification et la discrétisation des attributs l’œil humain [ZHU02, DAU04]. On peut maintenant voir une correspondance directe de ces recherches dans le milieu de la biométrie, dans celui de la commande et même dans les domaines médicaux. Plusieurs de ces applications nécessitent une interaction entre l’œil et la machine, où l’œil sert de dispositif de pointage afin que la machine puisse capturer les mouvements et repérer le point de la scène vers lequel l’œil de l’utilisateur pointe. De tels dispositifs sont appelés Eye Trackers. On en distingue deux catégories. Ceux qui requièrent un contact direct avec l’utilisateur, par le port de lunettes ou de lentilles spéciales, et ceux qui n’en n’imposent pas. Ces derniers sont généralement statiques et moins adaptés à la mobilité du sujet [KRO01]. Parmi les travaux consultés [KRO01, BRO00] et les ressources d’Internet abondantes sur le sujet, bon nombre d’entre eux reposent sur une détection soit de l’iris ou de la pupille par les transformées de Hough (voir section correspondante). Le travail présenté dans ce rapport se penchera sur la détection de la position des pupilles à partir d’images diffusées en continu (vidéo) arborant la figure d’un utilisateur à partir d’une zone d’intérêt pré déterminé, et ce, avec l’aide des transformées de Hough. ETS SYS-844 Jérôme Schmaltz Page 5 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 1.1 Travail proposé Le travail proposé consiste en l’implémentation de divers algorithmes de traitement d’images dans le but d’identifier avec le plus d’acuité possible, la position des deux iris dans un visage humain. Ce traitement devra se faire dans un temps respectable puisque les images à traiter seront en flot continu (vidéo). Une région d’intérêt pré établie servira de base au traitement. Cette région pourra être définie dynamiquement par l’utilisateur lorsque le programme sera en exécution à même l’interface graphique. Plusieurs considérations architecturales seront prises en compte afin d’optimiser le temps de traitement de chacune des images. Ces considérations et choix architecturaux seront décrits dans la section 5 du rapport. La détection des contours des iris proposé dans ce travail, est composée de plusieurs filtres et algorithmes vus en classe. Une description sommaire du protocole de détection sera proposée à la section 4. La réalisation d’un tel projet se fera en langage Java™, qui comprend de nombreuses bibliothèques pour faciliter la capture et le traitement d’images. Le projet ne se veut pas d’être en temps réel puisque la limitation matérielle empêche d’acquérir une performance suffisante. Le travail se divisera de manière à présenter en premier lieu quelques notions fondamentales de biologie afin d’identifier les caractéristiques de l’œil humain. Par la suite, une brève discussion sera faite sur les principaux attributs que l’on peut observer dans une image d’œil. Nous discuterons ensuite de l’algorithme utilisé pour détecter les iris sur une image puis enfin, nous ferons part des résultats obtenus par le biais de l’implémentation de notre algorithme. ETS SYS-844 Jérôme Schmaltz Page 6 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 2. Caractéristiques biologiques de l’œil Il est important de familiariser préalablement le lecteur à acquérir certaines notions de base concernant l’œil humain afin de le confronter aux diverses problématiques engendrées par les caractéristiques biologiques présentées dans cette section. Distinguons en premier lieu, trois parties externes de l’œil : la partie centrale appelée la pupille. La pupille est un orifice laissant passer la passer la lumière afin de faire réagir des photorécepteurs. La bande colorée entourant la pupille, appelée iris est protégée par une structure transparente appelée cornée. L’iris agit comme un muscle sur la pupille la contractant ou la dilatant, réglant ainsi le niveau de lumière entrant dans l’œil. Enfin la zone blanche s’étalant sur le reste de l’aire non comblée de l’oeil est nommée sclérotique. La figure 2.1 peut servir de référence. Sclérotique Pupille Iris Figure 2.1 Les différentes parties externes de l’œil humain1. L’orbite de l’œil, formant une sphère quasi parfaite, contient des cellules photosensibles permettant de capter la lumière ainsi que toutes les cellules nerveuses permettant la transmission de ces informations au cerveau. Les rayons lumineux émanant d’une source quelconque traversent la pupille afin d’exciter les photorécepteurs de la rétine. La rétine couvre une zone interne de l’œil faisant face à la pupille. Les photorécepteurs qui composent la rétine sont appelés cônes et bâtonnets, chacun possédant ses propres propriétés. Les cônes se diversifient en trois catégories, chacune permettant d’absorber une longueur d’onde particulière. Contrairement aux cônes, les bâtonnets ne comptent qu’une seule. La disposition des photorécepteurs sur la rétine n’est pas uniforme et est fonction de l’angle formé entre le centre de l’œil (fovéa) et le rayon lumineux entrant. Dans la zone fovéale, illustrée dans la figure 2.2, les cônes y sont en plus grande concentration que les bâtonnets, en périphérie c’est carrément l’inverse. 1 Source : http://www.pole-diderot.com/~diderot/images/Oeil%202G.jpg ETS SYS-844 Jérôme Schmaltz Page 7 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Figure 2.2 Les différentes parties internes de l’œil humain2. Considérant ces faits, notons que les cônes servent à la vision diurne en couleur (capacité trichromatique) dans la zone fovéale (un objet situé dans l’axe de la pupille) et que les bâtonnets voient leur utilité uniquement lors de la vision nocturne en noir et blanc (du fait que l’on retrouve un seul type de bâtonnets traitant une seule sorte de longueur d’onde) en zone périphérique. La figure 2.3 illustre le trichromatisme des cônes et le monochromatisme des bâtonnets. Figure 2.3 Représentation des cônes et des bâtonnets. Connaissant un peu mieux les caractéristiques biologiques de l’œil humain, il est maintenant temps de s’attarder aux attributs d’une photographie le représentant afin d’identifier les possibles contraintes à considérer lors de la capture et du traitement d’images. 2 Source : http://fr.wikipedia.org/wiki/Image:Coupe_oeil.jpg ETS SYS-844 Jérôme Schmaltz Page 8 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 3. Caractéristiques d’une image de l’œil acquise avec une caméra traditionnelle Les images peuvent être recueillies à partir de deux types de caméras : la caméra traditionnelle et la caméra infrarouge. La caméra traditionnelle capte les longueurs d’onde du spectre visible que l’œil humain sait reconnaître. La caméra infra rouge de son côté, saisit les ondes infrarouges dans la lumière naturelle. (Voir figure 3.1). La lumière naturelle comprenant très peu de composantes infrarouges, la luminosité des images produites avec ce type de caméra en est atteinte de telle sorte que l’on doit les soumettre à une source infrarouge supplémentaire afin d’en améliorer la qualité. Figure 3.1 Contenu spectral de la lumière. La majorité des reflets sont occasionnés par la lumière naturelle et ainsi, la caméra infrarouge permet de former des images moins sujettes aux réflexions de la lumière et de la scène ambiante. Même en considérant les aspects positifs de l’utilisation de la caméra infrarouge, le choix de ce projet s’est arrêté sur la caméra traditionnelle, puisque plus accessible. Les prochaines sections traiteront des caractéristiques des images obtenues par le biais de caméras traditionnelles. À ce fait, on notera les quatre caractéristiques suivantes qui seront exposées plus en détail [KRO01]. 1. 2. 3. 4. Ombrages Reflets Pupille Luminosité Voici un exemple d’image capturée avec une caméra traditionnelle. Elle servira de point de comparaison et d’exemple à travers les commentaires et explications émis lors de la présentation des caractéristiques. Figure 3.2 Image capturée avec une caméra traditionnelle. ETS SYS-844 Jérôme Schmaltz Page 9 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 3.1 Ombres Les ombres se forment lorsque qu’il y a présence d’un corps entre une source lumineuse et l’œil. Ainsi, les cils de la paupière peuvent former une zone d’ombrage sur l’œil à la suite d’un angle trop grand entre la source lumineuse et la caméra. La figure 3.3 illustre ce fait. Figure 3.3 Formation d’ombre dans une image de l’œil. La figure précédente met en évidence l’ombrage sur l’œil lorsque la source lumineuse forme un angle trop grand considérant le fait que la lentille de la caméra se confond avec l’axe de la pupille. Afin de réduire les zones d’ombrages, une attention particulière sera apportée au positionnement de la source lumineuse. 3.2 Reflets Puisque la surface d’un œil s’apparente grandement à un type spéculaire, les reflets émanant de l’œil sont considérables. Ces reflets sont en fait produits par la cornée, cette structure transparente recouvrant et protégeant l’iris. Étant complètement lisse elle a tendance à refléter la scène tel un miroir convexe. Dans l’optique du traitement d’image, on peut considérer la réflexion de la scène sur l’œil en fonction de la distance qui sépare l’œil et la scène ainsi que l’intensité lumineuse dégagée par la scène. L’intensité lumineuse dégagée par la scène cumule toutes les sources lumineuses. Par exemple, les lampes ou la lumière traversant une fenêtre. Plus la scène sera lumineuse, plus elle sera reflétée dans l’œil. En ce qui concerne la distance œil scène, notons que plus un objet est proche de l’œil, plus le reflet correspondant sera grand et davantage visible que s’il était éloigné. Reprenons maintenant la figure 3.2 proposée au début de cette section. Tel que l’on peut observer, divers types de reflets s’y joignent et masquent des parties importantes de l’œil. Parmi les types de réflexions lumineuses ambiantes, on retrouve principalement celles causées par les fenêtres, lampes et néons. Les figures 3.4a, 3.4b et 3.4c [KRO01] présentent ces différents types de réflexions. ETS SYS-844 Jérôme Schmaltz Page 10 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS (a) (b) Rapport (c) Figure 3.4 Types de reflets dans un œil. (a) Reflet de fenêtre dans l’œil. (b) Reflet d’une lampe dans l’œil. (c) Reflet d’un néon dans l’œil. Il sera dès lors, très important, de contrôler la scène environnante afin de réduire le plus possible ces types de réflexion afin d’obtenir des résultats précis. Réduire l’intensité des sources lumineuses n’est en fait pas la solution exacte au problème proposé. En effet, assombrir l’environnement diminuerait le nombre de caractéristiques observables. Il s’agirait donc d’uniformiser l’éclairage afin de ne pas créer de zones de réflexions à la surface de l’œil, proportionnelles à la taille de sources lumineuses. Afin de pallier à ce problème, plusieurs approches sont possibles. Soit par l’application d’opérateurs morphologiques en dilatant puis en érodant la zone atteinte par une réflexion d’une source lumineuse, soit en considérant que la source lumineuse possède des caractéristiques contraires à la pupille. Considérant le fait qu’une source lumineuse est très claire, on peut déterminer des bornes de niveaux de gris à partir l’histogramme de l’image et effectuer par la suite une segmentation. Le seuillage de l’image originale représentant la pupille ainsi que l’image arborant les zones de réflexions seront par la suite combinés afin de former une image où les trous provoqués par les sources lumineuses seront remplis3. Le projet ne tiendra pas compte des algorithmes proposés et se risquera de contrôler uniquement l’environnement afin de diminuer les réflexions. 3.3 Pupilles Le fait que la pupille soit translucide empêche la réflexion de la lumière. Elle apparaît par conséquent d’une couleur sombre ou noire sur les images captées. Cet état, jumelé à une source lumineuse se trouvant dans l’axe de la pupille, occasionnera un effet d’yeux rouges. Cette caractéristique circonstancielle doit être prise en compte pour d’éventuelles approches. Il est à noter qu’elle est utilisée par quelques dispositifs de détection de mouvement d’œil présentement. Sachant que la taille de la pupille varie avec l’intensité lumineuse4 (par rétroaction de l’iris : réflexe pupillaire), il sera crucial d’ajuster la luminosité de l’environnement afin de s’assurer que nous traiterons des tailles de pupilles respectables, donc pas trop petites. 3.4 Luminosité La luminosité de l’image devra être ajustée afin de s’assurer que le contraste est correct afin de détacher la pupille du reste de l’image. 3 4 L’algorithme est proposé par [KRO01] Source : http://fr.wikipedia.org/wiki/Pupille ETS SYS-844 Jérôme Schmaltz Page 11 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 3.5 Contrainte additionnelle : lunettes et lentilles Les lentilles modifient virtuellement la courbure de la cornée, ce qui permet la correction visuelle. La modification de cette courbure ainsi que le port de lunettes occasionnent une majoration de la réflexion de la scène ambiante. Le projet s’assurera que les utilisateurs ne porteront pas de lentilles ni de lunettes lors de la détection de la pupille. ETS SYS-844 Jérôme Schmaltz Page 12 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 4. Traitement de l’image pour la détection de la pupille La figure 4.1 met en lumière l’approche empruntée afin de localiser les pupilles d’un sujet sur une image digitale. La présente section tentera de décrire de façon détaillée chacune des étapes présentées en y exposant les différents algorithmes rattachés. Figure 4.1 Différentes étapes de traitement de l’image afin de localiser la pupille dans une image. 4.1 Image source L’image source provient d’une caméra traditionnelle. Cette caméra est simplement connectée au port USB de l’ordinateur. Elle fournit des images en format RGB de dimension 640x480 pixels. Chaque pixel est donc représenté en 24bits. Il est important de noter que les futures opérations seront appliquées sur une région d’intérêt déterminée dynamiquement par l’utilisateur. Figure 4.2 Spécification d’une région d’intérêt pour traitements ultérieurs. ETS SYS-844 Jérôme Schmaltz Page 13 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 4.2 Suppression du surplus de contours La première étape de pré traitement consiste à réduire le bruit occasionné par le capteur et à toute l’électronique de transfert. Pour ce faire, on appliquera un filtre moyenneur sur l’image. L’application d’un tel filtre entraînera malheureusement l’altération des contours de l’image. Figure 4.3 Application du filtre moyenneur sur la région d’intérêt. Le filtre moyenneur est un filtre passe-bas. Un filtre passe bas à la propriété de laisser passer les fréquences spatiales faibles, mais supprime les fréquences hautes. L’analogie la plus simple à faire pour ce type de filtre est la diminution du niveau des hautes fréquences (treble) sur une chaîne stéréo. On peut aussi constater que les filtres passe-bas possèdent des noyaux de convolution dont tous les coefficients sont positifs. Son application réside à l’attribution, au pixel d’intérêt, d’une valeur moyenne en considérant le voisinage du pixel. La valeur de gris d’un pixel est modifiée en tenant compte des valeurs de gris des pixels voisins. Cela est obtenu en appliquant une matrice de calcul appelée noyau de convolution qui définit le nombre de voisins concernés et la pondération à appliquer sur leur valeur de gris. La figure 4.4 illustre un filtre moyenneur simple de noyau de convolution 3x3 qui implique les 8 voisins immédiats d’un pixel d’intérêt et permet d’affecter au pixel concerné le neuvième de la somme des valeurs de gris de lui-même ainsi que de ses voisins. Figure 4.4 Exemple d’un filtre moyenneur de dimension 3x3. Donc, pour un noyau de convolution de grandeur nxn, le pixel concerné prendra la valeur de n ∑x i i=1 n Formule 4.1 Exprimant la moyenne d’un pixel d’intérêt. ETS SYS-844 Jérôme Schmaltz Page 14 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Où xi représente le ième voisin du pixel. Il est à noter que plus la dimension du noyau de convolution est élevée, plus l’adoucissement engendré par le traitement sera prononcé. Dans notre implémentation, le choix de dimension du noyau de convolution du filtre moyenneur a été fixé à 3x3 dans la plupart des cas. 4.3 Conversion en niveaux de gris La seconde étape de pré traitement est nécessaire afin de convertir l’image adoucit RGB en image en niveaux de gris. Cette conversion permet de tirer profit de la rapidité des différents algorithmes subséquents, car ils ne sont pas basés sur la couleur, mais bien sur les niveaux de gris. Puisque qu’un pixel de teinte grise quelconque possède ses trois composantes RGB de même valeur, une manière simple de convertir chaque pixel couleur en niveaux de gris serait simplement d’appliquer une moyenne sur la somme des composantes RGB du pixel, comme ceci : Gris = R+G+ B 3 Formule 4.2 Conversion en niveau de gris d’un pixel RGB. Or, d’après les recommandations de la commission internationale de l’éclairage, la conversion devrait plutôt se faire en utilisant la formule suivante. Gris = 0.299R + 0.587G + 0.114B Formule 4.3 Conversion en niveau de gris d’un pixel RGB en prenant en compte la perception de l’œil humain. Cette formule tient compte de la correction du gamma ainsi que la manière dont l’œil humain perçoit les trois composantes. Figure 4.5 Conversion de la région d’intérêt en niveaux de gris. ETS SYS-844 Jérôme Schmaltz Page 15 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 4.4 Détection des contours L’étape de détection des contours est une étape cruciale lors de la détection de la pupille. À cet effet, un des meilleurs détecteurs de contours sera utilisé, le filtre de Canny. Ce filtre est complexe puisqu’il offre le meilleur compromis possible entre la réduction de bruit et la localisation de contours. À titre indicatif, notons qu’une réduction de bruit abusive masque certains contours intéressants, mais qu’une sous-utilisation en résulterait par la localisation de contours qui ne sont pas significatifs. Théoriquement, le détecteur de contours de Canny est optimal lorsque les contours sont sous la forme de marches (step) et que l’image est soumise à du bruit gaussien, ce qui n’est évidemment pas toujours le cas. L’algorithme de Canny se sectionne en plusieurs phases. Premièrement, la phase de réduction de bruits s’effectue par la convolution d’un filtre passe-bas Gaussien, qui permet ainsi de tamiser les contours. Le filtre gaussien est de la forme suivante. Formule 4.3 Représentation du filtre gaussien. L’échelle spatiale, ou la résolution à laquelle une image peut être observée, dépend du paramètre σ. La convolution du noyau gaussien de résolution σ sur une image I peut être obtenue de la façon suivante. Formule 4.4 Convolution d’un filtre gaussien sur une image. Par la suite, la deuxième étape consiste à éclaircir les contours. Pour ce faire, on utilise les valeurs des amplitudes des gradients ainsi que leurs directions, en utilisant les formules suivantes : g = g x2 + g y2 θ = arctan( gy gx ) Formule 4.5 Amplitude d’un gradient et obtention de sa direction. L’amplitude est directement proportionnelle aux composantes gx et gy. Ainsi, si gx ou gy possèdent de grandes valeurs, cela est témoin d’un changement considérable du niveau de gris dans un voisinage de 3x3 pixels. Donc, l’amplitude du gradient mesure en fait la force d’un contour indépendamment de sa direction. ETS SYS-844 Jérôme Schmaltz Page 16 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Une fois les amplitudes des gradients calculés, on procède à l’avant-dernière étape : la suppression des non maximaux. Cette étape réduit la largeur des arêtes détectées à un pixel. L’algorithme suivant décrit la façon d’y arriver. Soit gs une image de mêmes dimensions que l’image source g. Pour toutes les coordonnées des pixels x et y, Approximer ? (x, y) par 0, 45, 90 ou 135 degrés. Si g (x, y) < g dans un voisinage de direction approximée ou que g (x, y) < g dans un voisinage de directionθ + 180 alors gs(x, y) = 0 Sinon gs(x, y) = g (x, y) Fin si Fin pour Finalement, l’étape de localisation repose sur l’identification des contours significatifs à partir des amplitudes des gradients précédemment calculés. Une approche typique, qui n’est pas nécessairement correcte, stipule que les contours significatifs donnent lieu à des gradients encore plus prononcés. L’approche triviale consiste à appliquer un seuillage auprès des gradients calculés. Malheureusement, cette démarche occasionne son lot de problèmes. D’une part, l’application d’un seuil faible nous assure de considérer tous les contours, incluant ceux qui sont non significatifs, c’est-à-dire de considérer les gradients maximaux engendrés par le bruit et non les contours décrivant des objets de la scène. D’autre part, un seuillage trop haut engendre automatiquement une fragmentation des chaînes de pixels qui forment des contours significatifs de notre image. Le seuillage par hystérésis offre une solution à ce problème en utilisant deux valeurs de seuils. Le seuil le plus élevé a comme fonction d’identifier les pixels des meilleurs candidats de contours. On essaie par la suite, de prolonger les contours en cherchant des voisins avec une amplitude de gradient supérieure à la valeur du seuil le plus faible. La recherche de ces voisins est effectuée dans huit directions possibles. Cette technique permet donc de réduire le nombre de localisation de faux contours significatif par le fait que les contours sont identifiés et qu’au moins un pixel les composants offre une amplitude de gradient supérieure à la valeur de seuil maximale. La figure 4.6 illustre l’idée en arrière de la détection de contours par le filtre de Canny dans le projet présenté. Figure 4.6 Détection des contours de la région d’intérêt. ETS SYS-844 Jérôme Schmaltz Page 17 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 4.5 Directions des contours La direction des contours est tout à fait analogue à ce que l’on ait pu voir dans une des sous étapes de détection des contours par l’algorithme de Canny. Nous pourrions reprendre directement les résultats obtenus ou pourrions simplement utiliser les filtres de Sobel pour en arriver au même point. La direction des gradients est obtenue en calculant l’arc tangente entre la matrice des points atteints par la convolution du filtre de Sobel en Y ainsi que la matrice des points touchés par le filtre de Sobel en X. Il est important de garder le résultat des convolutions dans une matrice afin de s’assurer de conserver la possible négativité des opérations. À l’instar de la matrice, conserver les résultats dans une structure de type image5, ramènerait les valeurs des opérations entre 0 et 255 ce qui ne décrit pas la réalité de ce filtre. θ = arctan( Sobel y Sobel x ) Formule 4.6 Arc tangente des filtres de Sobel. L’opérateur de Sobel produit la magnitude du gradient. Comme tous les opérateurs de gradients, le calcul de la magnitude des gradients peut être calculé à partir de masques de convolutions. Figure 4.7 Noyaux de convolution de Sobel. La figure 4.8 illustre les propos précédemment exposés. Figure 4.8 Déterminer les directions des gradients à partir de l’application des filtres de Sobel. 5 Le type image est un type de donnée en Java™ qui permet de conserver l’information d’une image digitale. ETS SYS-844 Jérôme Schmaltz Page 18 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 4.6 Détection des centres La détection des centres repose sur les résultats des deux dernières étapes. Pour chaque point de contours de l’image de Canny, on trace une droite en fonction de la direction calculée par le biais de l’application des filtres de Sobel à l’étape précédente. Ainsi par la simple application de la formule de la droite y = mx + b Formule 4.7 Équation de la droite. On trace une droite dans l’accumulateur en fonction des points de contours de l’image de Canny tel qu’exposé dans la figure 4.9. Figure 4.9 Traçage d’une droite en fonction d’un contour. Tracer une droite dans un accumulateur revient à incrémenter chaque cellule d’une matrice de un aux endroits (discrétisés par rapport à la formule 3.7) où elle passe. Figure 4.10 Traçage d’une droite dans l’accumulateur. Le fait de tracer deux droites en fonction des directions des gradients dans l’accumulateur incrémente de un chacune des cellules touchées. Ainsi, comme on peut le voir dans la figure 4.10, la rencontre de deux droites produit un résultat supérieur à un (1 +1). ETS SYS-844 Jérôme Schmaltz Page 19 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport L’utilisation de cette méthode est très utile dans notre cas puisque les valeurs maximales dans l’accumulateur identifieront les centres des cercles potentiels. Ainsi, si on trace des droites perpendiculaires au contour d’un cercle, le point de rencontre de ces droites identifiera nécessairement le centre de celui-ci. La figure6 4.11 illustre ce propos. Figure 4.11 Centre d’un cercle dans un accumulateur. La figure 4.12 synthétise la théorie énoncée. Figure 4.12 Traçage de lignes dans l’accumulateur en fonction de l’image de Canny et de la matrice de directions. 4.7 Seuillage L’application d’un seuil permet de se désencombrer de toutes les informations superflues qui engorgent notre accumulateur. Ainsi, pour une valeur de seuil donnée, tous les pixels ayant une valeur inférieure seront mis à zéro pour préserver uniquement l’information d’intérêt, soit les centres potentiels. L’application d’un tel seuil a été automatisée de façon à la fixer à la moitié de la valeur maximale d’une cellule dans l’accumulateur. (valeur (pixel actuel) > 0.5 * max(valeur (pixels de l'image))) 6 Source : http://www.vieartificielle.com/article/index.php?action=article&id=188 ETS SYS-844 Jérôme Schmaltz Page 20 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Donc, à partir de l’accumulateur, l’application d’un seuil aura pour effet de conserver uniquement les cellules comportant des valeurs maximales, tel qu’indiqué par la figure 4.13. Figure 4.13 Application d’un seuil dans l’accumulateur. 4.8 Isoler les centres potentiels Afin d’isoler les points correspondants le plus au centre des cercles, une convolution d’un chapeau mexicain est effectuée sur l’accumulateur. Il est le résultat de la combinaison d’un filtre Gaussien (formule 4.3) avec un filtre Laplacien. C’est grâce à la linéarité ainsi que l’invariabilité de ces filtres qu’une combinaison est possible. Formule 4.8 Représentation d’un Laplacien de Gaussien. Sa représentation symbolise une sorte de chapeau d’où l’appellation, « chapeau mexicain ». Figure 4.14 Représentation graphique d’un Laplacien de Gaussien. L’application d’un chapeau mexicain sur l’accumulateur conservera uniquement les points les plus propices d’être des centres de cercles potentiels en décrémentant les valeurs des cellules entourant les centres. La figure 4.15 trace le portrait de ces propos. Figure 4.15 Application d’un chapeau mexicain dans l’accumulateur. ETS SYS-844 Jérôme Schmaltz Page 21 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 4.9 Recherche des cercles La dernière étape repose sur les coordonnées des cercles potentiels identifiés dans l’accumulateur ainsi que les contours localisés par l’application du filtre de Canny. Pour ce faire, l’utilisation des transformées de Hough a été jumelée avec les informations dont nous disposions sur les coordonnées des centres potentiels. La transformée de Hough s’appuie sur un principe d’accumulateurs, analogue à l’étape de détection des centres potentiels des cercles. Pour un cercle de rayon inconnu, l’utilisation d’accumulateurs en trois dimensions sera de mise. Les deux premières dimensions expriment les coordonnées du cercle tandis que la troisième lie ces coordonnées à un rayon r. La figure 4.16 nous donne un exemple. Figure 4.16 Accumulateur de Hough en trois dimensions. Si nous voulons trouver des cercles de rayons de 8, 9 et 10 unités, nous aurons à construire un accumulateur comprenant trois niveaux, chacun en deux dimensions. Une fois nos accumulateurs de Hough initialisés, à partir de l’image de contours de Canny, on trace littéralement des cercles dans un des accumulateurs en faisant coïncider le centre du cercle avec les coordonnées du pixel de contour pour un rayon donné. Afin de tracer les cercles le plus efficacement possible dans l’accumulateur de Hough, l’utilisation de la méthode de Bresenham a été employée. Comme on peut le voir dans l’image 4.17, plusieurs cercles sont tracés (dans un accumulateur de rayon r) en suivant les contours (cercle gris foncé) de l’image de Canny. Une fois tous les cercles tracés dans les accumulateurs, on réalise que les cellules qui contiennent des valeurs maximales, sont des centres potentiels. Figure 4.17 Traçage des cercles avec l’image de contours. ETS SYS-844 Jérôme Schmaltz Page 22 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Enfin, on divise la tâche finale en deux parties. Cette fission est établie en fonction des dimensions de la région d’intérêt à analyser. Cette région d’intérêt représente une partie du visage qui arbore les yeux du sujet. Afin de localiser le mieux possible les iris et pupilles du sujet, on divise cette région en deux parties égales dans le but de trouver les cercles les plus potentiels de représenter l’iris et la pupille gauche et ceux de la partie droite du visage de l’individu. Pour chacune de ces parties, on applique un seuil permettant de conserver uniquement les coordonnées et rayons de centres potentiels de cercle et on s’assure en même temps qu’ils font parti de l’accumulateur de cercles potentiels identifiés à une étape antérieure. En terminant, on fait la moyenne des positions et des rayons des cercles restants et on identifie, à gauche et à droite, les cercles entourant les iris et pupilles. On isole les cercles les plus petits qui s’avèrent être les pupilles. Figure 4.18 Flux d’opérations pour localiser les pupilles. ETS SYS-844 Jérôme Schmaltz Page 23 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 5. Présentation du projet Le projet repose sur les algorithmes précédemment exposés. Ils ont été implémentés dans le langage Java™, permettant ainsi d’utiliser bon nombre de bibliothèques facilitant la manipulation et le traitement d’images. Les images ont été capturées à l’aide d’une caméra web traditionnelle de modèle Intel USB Camera III. Les résultats ont été obtenus sur un ordinateur PC de type AMD Athlon™ 1.4Ghz avec 448 Mo RAM. Le tableau 5.1 présente le détail des spécifications techniques. Propriété Processeur Mémoire Système d’exploitation Environnement Java™ Caméra Description AMD Athlon™ 1.4 Ghz 448 Mo RAM DIMM Windows XP PRO SP2 JRE 1.5.2 Intel USB Camera III Tableau 5.1 Spécifications techniques 5.1 Architecture du programme Cette section expose la conception du projet en prenant le soin de présenter les différentes composantes qui forment le programme. Commençons par un diagramme de type Components & Connectors qui nous permet d’exposer l’architecture de haut niveau du projet. Figure 5.1 Architecture de haut niveau. ETS SYS-844 Jérôme Schmaltz Page 24 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport La figure 5.1 nous permet de voir l’interaction existante entre l’utilisateur et le système. L’utilisateur peut gérer dynamiquement la région d’intérêt qu’il veut traiter ainsi que les paramètres de certains filtres. Le programme prendra en compte les changements effectués par l’utilisateur lors de la prochaine capture d’image. Cette vue architecturale permet de constater que l’implémentation du projet est divisée en deux composantes majeures : la Camera Image Grabber ainsi que la Image Effect Processor. La CIG (Camera Image Grabber) repose sur les bibliothèques de Java™ Media Framework qui permettent de communiquer avec des périphériques multimédias tels que les cartes de son ou les caméras par exemple. La IEP quant à elle utilise des fonctionnalités plus générales de traitement d’images englobée dans Java AWT. La CIG à comme principale responsabilité de capturer les images provenant de la caméra web en format YUV de dimensions 640x480 pixels en RGB. Chaque image capturée est envoyée à la composante IEP (Image Effect Processor) qui se charge de les traiter en considérant dynamiquement la région d’intérêt définit par l’utilisateur ainsi que les paramètres des différents filtres préalablement configurés. Les flèches grises connectant les composantes IEP et CIG à elles-mêmes témoignent du fait qu’elles sont identifiées comme étant des singletons (une seule composante de chaque type par application) et qu’elles sont toutes les deux des fils d’exécution (thread). De cette manière, les opérations ne sont pas séquentielles, mais parallèles augmentant ainsi la vitesse d’exécution. La communication entre ces deux composantes s’effectue par invocation implicite reproduisant ainsi une sorte de système de messagerie par programmation événementielle. Ainsi, chaque fois que CIG capture une nouvelle image, il avertit (ou envoie un message) IEP qu’il possède une image pour lui et continue en même temps de capturer d’autres images sans avoir à attendre qu’IEP termine son travail. Lorsqu’IEP reçoit une image de CIG, il considère la région d’intérêt défini par l’utilisateur et applique les filtres séquentiellement sur la région d’intérêt uniquement et non sur l’image complète, accélérant ainsi l’acuité et la rapidité du processus. Une fois le dernier filtre appliqué, les cercles déterminés sont dessinés à même l’image d’entrée et envoyée à l’écran à titre de résultat. ETS SYS-844 Jérôme Schmaltz Page 25 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Rentrons maintenant dans les détails techniques de l’implémentation de l’architecture présentée en langage Java™. Pour ce faire, consultons la figure 5.2 qui illustre le diagramme de classes du programme. Figure 5.2 Diagramme de classes. Comme nous pouvons le voir, huit classes ont été créées pour localiser les pupilles dans une image. À ce fait, une brève description suivra pour chacune d’elles dans le tableau suivant. Nom de la classe AppParameterDialog ApplicationParameter JDPInterface CameraImageGrabber ImageEffectProcessor ETS SYS-844 Description/Responsabilités Interface graphique permettant de contrôler les différents paramètres de l’application. Classe qui contient tous les paramètres de l’application, c’est-à-dire les paramètres des filtres, les coordonnées de la région d’intérêt ainsi que l’identificateur de la caméra à utiliser. Interface graphique principale permettant d’afficher les images capturées par la classe CameraImageGrabber ainsi que la région d’intérêt traité par la classe ImageEffectProcessor. Permet de récupérer les images provenant d’une caméra web. Contient tous les filtres permettant de traiter la région d’intérêt sélectionné par l’utilisateur. Jérôme Schmaltz Page 26 sur 36 SYS844-RPS Nom de la classe HoughTransform ImageUtils ArrayUtils Détection de la pupille à l’aide des transformées de Hough Rapport Description/Responsabilités Contient l’algorithme de traitement de la région d’intérêt afin de détecter les cercles potentiels dans l’image en prenant en compte les accumulateurs de cercles potentiels. Classe qui contient de multiples fonctionnalités de base pour le traitement d’images. Classe qui contient plusieurs méthodes différentes pour transformer des tableaux. Tableau 5.2 Description des classes. 5.2 Présentation des interfaces usagées Cette section présente les diverses interfaces qui font partie de l’application issue du projet. Pour chacune d’elle, une description sommaire y sera jointe. La première interface présentée est l’écran principal de l’application. Elle permet à l’utilisateur de voir le résultat du traitement de l’algorithme sur la région d’intérêt. De plus, c’est par le biais de cette interface que l’utilisateur peut définir dynamiquement une région d’intérêt à traiter. La figure 5.3 illustre l’écran principal. La figure 5.4 représente l’interaction entre l’utilisateur et le programme lors de l’établissement de la région d’intérêt. Figure 5.3 Écran principal de l’application Figure 5.4 Établissement de la région d’intérêt. Tel qu’on peut le voir, une région d’intérêt caractérisée par une bordure rouge indique que le programme est présentement en train d’interpréter cette aire comme région d’intérêt. Une bordure verte indique que l’utilisateur est présentement en train de réallouer une nouvelle région d’intérêt. Cette réassignation est possible en appliquant un drag & drop sur l’interface graphique avec l’aide du curseur de la souris. Voyons maintenant le deuxième écran, celui qui permet de contrôler les paramètres des effets en temps réel. L’affichage de cet écran est simplement possible en appuyant la touche «c» pour « configure». L’utilisateur peut ainsi y avoir accès et paramétrer tous les filtres par simple sélection de boîtes à cocher ou de barres de défilements à fixer. ETS SYS-844 Jérôme Schmaltz Page 27 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport La figure 5.5 présente l’écran de configuration du programme. Figure 5.5 Écran de configuration des paramètres. Comme on peut le voir, les différents paramètres configurables (car ils ne le sont pas tous) peuvent être en fonction ou suspendu temporairement en cochant les boîtes appropriées. ETS SYS-844 Jérôme Schmaltz Page 28 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 6. Résultats obtenus Force est de constater que durant la phase de tests, la précision de nos instruments et les conditions très délicates d’éclairage ne permettaient pas de localiser avec précision les contours de la pupille. Par contre, les divers tests présentaient avec succès la localisation du contour de l’iris. Cette section présente donc les différents résultats obtenus lors de la localisation de l’iris pour des éclairages et paramètres différents de filtres. Voici les paramètres par défaut qui ont été utilisés pour tous les résultats présentés. Les résultats qui prennent en compte des valeurs différentes que celles par défaut seront identifiés. Paramètre Filtre Moyenneur Canny (Filtre Gaussien) Canny (Seuil minimal) Canny (Seuil maximal) Gaussien de Laplacien Valeur 3x3 Sigma : 1.2 18 41 En fonction Tableau 6.1 Liste des valeurs pour les différents paramètres. Les figures 6.1 et 6.2 illustrent les résultats recueillis pour des cas où le plan arrière présentait une fenêtre laissant entrer la lumière du jour. La figure 6.1 met en évidence un sur éclairage tandis que la figure 6.2 un sous éclairage. Figure 6.1 Éclairage de forte intensité dans l’axe de la caméra. Scène arrière éclairée. Figure 6.2 Sous exposition de la lumière. Scène arrière éclairée. Comme on peut le voir, la figure 6.1 présentant un éclairage de forte intensité à tendance à produire un meilleur résultat que dans le cas d’un éclairage de faible intensité. Cela est dû au fait que le détecteur de contours de Canny doit moins bien identifier les contours de l’image. Si moins de contours sont détectés alors les probabilités seront plus faibles de trouver avec précision le pourtour de la pupille ou de l’iris. Nous allons voir dans les figures subséquentes que le fait d’avoir une source lumineuse (fenêtre) en arrière-plan à une influence directe sur l’acuité des résultats. La figure 6.3 illustre justement ces propos en présentant un ETS SYS-844 Jérôme Schmaltz Page 29 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport éclairage normal, mais avec une arrière-scène moins éclairée. L’arrière-scène étant moins éclairée, moins de reflets sont donc produits et les résultats s’y trouvent légèrement améliorés. Figure 6.3 Éclairage normal, scène arrière sous éclairée. Les figures 6.4 et 6.5 montrent l’effet d’un sur éclairage sur la gauche et la droite. Les éclairages intensifs d’un côté particulier produisent un effet d’ombrage sur l’autre face. Notons la précision encore ici des côtés sur exposés versus les côtés sous exposés par la lumière. À ce fait, la figure 6.4 témoigne de la précision du résultat sur le côté gauche du sujet (sur exposition à gauche) tandis que la figure 6.5 démontre l’acuité des résultats sur le côté droit. Figure 6.4 Sur éclairage sur la gauche, scène arrière sous éclairée. Figure 6.5 Sur éclairage sur la droite, scène arrière sous éclairée. Malgré un éclairage contrôlé et une scène arrière ne produisant pas trop de luminosité, on constate que l’algorithme implémenté ne produit pas les résultats escomptés pour des images présentant des sujets qui sont éloignés de l’objectif de la caméra. L’image 6.6 en témoigne. ETS SYS-844 Jérôme Schmaltz Page 30 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport Figure 6.6 Éclairage normal, plan de loin. Après l’ajustement de certains paramètres et un réglage de la luminosité de la scène, nous avons pu accroître la précision du programme. La figure 6.7 présente le résultat obtenu. On y voit la précision avec laquelle le programme est capable de localiser les iris. Le tableau 6.2 présente les valeurs de paramètres utilisés pour ce résultat. Paramètre Filtre Moyenneur Canny (Filtre Gaussien) Canny (Seuil minimal) Canny (Seuil maximal) Valeur 3x3 Sigma : 0.2 15 50 Tableau 6.2 Valeurs des paramètres utilisés pour la figure 6.7 Figure 6.7 Plan de proche, éclairage normal, ajustement de paramètres. ETS SYS-844 Jérôme Schmaltz Page 31 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport On se rend compte rapidement qu’avec les différents résultats récoltés, ce problème de vision est complexe. Sa complexité provient en majeure partie de l’environnement dans lequel nous opérons les tests. Ainsi, pour des cas présentant des luminosités différentes, on a pu voir que l’acuité des résultats en était directement reliée. Pour essayer de contrôler les effets négatifs tels que les ombrages, reflets ou luminosité (présentés à la section 2), il faut s’assurer d’éclairer la scène le mieux possible tout en s’assurant de ne pas occasionner de reflets. Le problème est complexe. Afin de garder une constance dans les résultats, il vaudrait mieux exécuter les tests dans une pièce fermée sans fenêtre où l’éclairage serait intensif, mais dont les sources ne seraient pas rapprochées du sujet. La deuxième difficulté rencontrée est sans contredit le paramétrage des filtres. Comme on a pu le voir lors de la présentation des différents résultats, les valeurs que prennent certains filtres ont une incidence directe sur la précision des résultats. Il ne faut surtout pas oublier, qu’il existe en plus un compromis à faire entre la rapidité du traitement ainsi que l’acuité des résultats. La section suivante nous présente la vitesse d’exécution de l’algorithme en fonction des tailles de régions d’intérêts ainsi qu’en fonction de certaines valeurs de filtres. ETS SYS-844 Jérôme Schmaltz Page 32 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport 6.1 Vitesse de l’algorithme Tel que signalé précédemment, il existe un compromis à faire entre la précision et l’acuité des résultats. Si notre application se veut en temps réel, il sera préférable de choisir des algorithmes moins précis ou de se limiter dans nos recherches de solutions. Par exemple, le fait de choisir un algorithme de type Monte-Carlo à 1000 itérations serait avantageux que de calculer avec précision une solution optimale pour des programmes opérant à temps réel. L’acuité des résultats peut aussi être contrôlée en limitant la précision de données numériques. Ainsi, pour tout ce qui concerne les intégrateurs numériques par exemple, un pas de temps constant fera l’affaire dans la plupart des cas. Cette section nous présente les différents temps de calcul obtenus pour le traitement de la région d’intérêt de dimension variantes et de valeurs de paramètres de filtres différents. La première figure illustre ici les temps de calcul moyens obtenus pour des tailles de régions d’intérêts variant de 80x60 à 640x480. Temps de calculs en fonction des dimensions de ROI Temps de calculs en millisecondes 10000 8000 Temps de calculs 6000 Expon. (Temps de calculs) 4000 2000 y = 32986e 0 -1,3401x 2 640x480 320x240 160x120 80x60 R = 0,9934 Dimensions Figure 6.8 Temps de calcul en fonction des dimensions de la région d’intérêt. Comme on peut le voir, le traitement d’une région dont l’aire est quatre fois moins grande, donc lorsque les dimensions sont deux fois plus petites, entraîne un décroissement exponentiel. Le graphique de la figure 6.8 montre le comportement du temps de calcul en millisecondes en fonction des dimensions de la région d’intérêt. De plus, une régression exponentielle a été ajoutée au graphique afin de comparer le comportement des résultats. On voit par ce graphique, l’incidence de la taille de la région d’intérêt sur les performances du programme. Ainsi, pour opérer le programme en un temps acceptable, une région d’intérêt de petite taille (entre 160x120 et 80x60) est de mise. Comparons maintenant les différents temps de calcul obtenus pour une dimension fixe de la région d’intérêt, mais en augmentant le nombre de contours détectés par Canny. Pour ce faire, une diminution progressive du coefficient de Gaussien (lié au filtre de Canny) a été effectuée. La diminution de ce coefficient a comme ETS SYS-844 Jérôme Schmaltz Page 33 sur 36 Détection de la pupille à l’aide des transformées de Hough SYS844-RPS Rapport impact direct la non-suppression de certains contours superflus et donc un traitement plus lourd des filtres subséquents. La figure 6.9 illustre les temps de calculs obtenus pour différents coefficients de Gaussien. Temps de calculs en millisecondes Temps de calculs en fonction du coefficient de Gaussien 4000 3500 3000 2500 2000 1500 1000 500 0 Temps de calculs 0,1 0,3 0,5 1 1,5 2 2,5 Coefficients de Gaussien Figure 6.9 Temps de calcul en fonction des coefficients de Gaussien. Le graphique ci haut nous indique que plus le coefficient gaussien augmente, moins de détails sont présents dans l’image et par conséquent moins d’opérations sont engendrées. Le paramétrage des filtres influence aussi la performance du programme. Il faut donc s’assurer encore une fois, de trouver un compromis entre vitesse et fiabilité. Cela ne veut pas dire nécessairement que les résultats obtenus avec des temps de calcul élevés ont été les meilleurs. Rappelons que le fait de trouver des contours superflus par le manque d’adoucissement de l’image entraîne son lot d’erreurs. Il faut donc expérimentalement déterminer les valeurs des différents paramètres dans le but d’obtenir les meilleurs résultats possibles dans un temps acceptable. ETS SYS-844 Jérôme Schmaltz Page 34 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport 7. Conclusion et améliorations possibles La détection de la pupille s’est avérée un projet non trivial. Les conditions environnantes et le paramétrage des filtres n’avaient pas été considérés lors de l’analyse sommaire du projet, elles ont pourtant joué un rôle déterminant en constatant les résultats. Le fait d’utiliser Java™ comme outil principal de développement a affecté directement les performances globales du système. Il est impensable de considérer une implémentation en temps réel sur cette plateforme. Il aurait été particulièrement agréable de voir la différence avec une implémentation en C++. Les résultats obtenus ont témoigné aussi du manque de précision du capteur (caméra web) utilisé. Le manque de définition et le bruit produit par l’électronique de transfert ont certainement été des facteurs ayant des impacts sur l’algorithme employé. À ce fait, il aurait été intéressant d’employer une caméra infrarouge de bonne qualité afin de réduire le nombre de reflets et augmenter la résolution des images captées. Les conditions d’éclairage précédemment mentionnées ont été déterminantes pour les résultats que nous avons obtenus. Ainsi par manque d’éclairage, il était impossible pour le détecteur d’arêtes (Canny) de correctement identifier les contours de l’image. Une solution plausible aux problèmes environnementaux aurait été d’exécuter les tests dans un milieu stable. Par stable, on considère la position de l’utilisateur (hauteur et distance œil caméra) constante ainsi que l’éclairage non variant (pas de sources d’éclairage près de la cornée). De simples recherches sur Internet ont permis de trouver l’implémentation de tous les algorithmes employés en C++. Ce regroupement d’algorithmes a le nom d’OpenCV et réside maintenant sous le titre de projet ouvert. L’implémentation du projet avec cette librairie aurait certainement permis d’obtenir des performances proches du temps réel. Beaucoup de recherches sont encore effectuées aujourd’hui dans ce domaine. Plusieurs d’entre elles utilisent moins d’étapes (donc moins de temps de calcul) que l’algorithme présenté. L’intégration de cellesci au projet présenté permettrait sûrement une nette amélioration de la précision et performance. ETS SYS-844 Jérôme Schmaltz Page 35 sur 36 SYS844-RPS Détection de la pupille à l’aide des transformées de Hough Rapport Références Nick Efford, Digital Image Processing: a practical introduction using Java, Addison-Wesly, 2000. Richard Lepage, La vision par ordinateur, Presses de l’École de Technologie Supérieure, 2005. Zhiwei Zhu, Kikuo Fujimura, Qiang Ji , Proceedings of the symposium on Eye tracking research & applications, ACM Press, March 2002. Gintautas Daunys, Nerijus Ramanauskas , Proceedings of the third Nordic conference on Human-computer interaction NordiCHI '04, ACM Press, October 2004. Julien Kronegg, Dispositif de capture des mouvements oculaires pour un simulateur de vision, Université de Gèneve, Juin 2001. Claude-Alain Brohy, Détection des yeux, École polytechnique fédérale de Lausanne, Juin 2000. Radio Canada, L’après 11 septembre, Radio Canada, http://archives.radio-canada.ca/IDC-0-16-13378010/sciences_technologies/videosurveillance/clip8, Septembre 2003. Alexandre Bargeton, Détection des cercles dans une image, http://www.vieartificielle.com/article/index.php?action=article&id=188, Janvier 2006. ETS SYS-844 Jérôme Schmaltz Page 36 sur 36