Délimitation des bornes pour les couleurs  méthode manuel

Dans un premier temps nous avons prédéfini nous même les bornes de reconnaissance des couleurs. Pour cela nous avons observé à la main les différentes valeurs que peuvent prendre les couleurs de chaque bonbon dans une grille. Afin de gérer indirectement l'impact de la dégradation obtenu lors de la photographie d'un écran, ces valeurs ont été calculé depuis une photo prise par un smartphone et non d'une capture d'écran de l'ordinateur.

Les bornes sont composées de deux couleurs, elles-mêmes composées de trois composantes RGB. Le principe est de trouver pour une couleur les valeurs les plus basses et les plus hautes possible pour chaque composante. On obtient ainsi 16 couleurs correspondant aux bornes inférieures et supérieures des 8 couleurs que l'on doit reconnaître. Une couleur intermédiaire correspondant à la couleur moyenne a été introduite au centre de chaque borne. Voici la plage de couleur que l'on obtient :


Figure n°14 : Plage de couleurs manuelle

Une première modification a été réalisé afin de sécuriser le choix des couleurs. C'est à dire que l'on s'assure qu'il existe toujours au moins une composante capable de différencier deux couleurs. Ainsi différencier la couleur orange du jaune revient à comparer la valeur de la composante verte. Les composantes rouge et bleu n'ayant pas d'impact sur le choix entre ces deux couleurs. On laisse également une zone creuse entre ces deux bornes afin de ne pas compter les pixels dont la couleur est douteuse.

Un lissage des valeurs a également été réalisé afin d’optimiser les chances de reconnaissance des couleurs. Nous avons, pour cela, augmenté les bornes pour les composantes à faible impact (composantes qui ne permettent pas directement de différencier deux couleurs) puis nous avons égalisé les bornes. C'est à dire que nous avons étalé les bornes pour englober un maximum de valeurs sans pour autant réduire la précision de la reconnaissance des couleurs. Voici au final les bornes que nous utilisons :


Figure n°15 : Bornes final utilisé pour la méthode manuelle

Ces bornes sont stockées en dur, directement dans le code, et se retrouvent sous différentes méthodes correspondant à une couleur. On assigne ainsi dans un tableau de taille 6, les différentes bornes pour chaque composante. Puis on appelle une méthode « validation » en lui passant le tableau de bornes. Cette méthode regarde si la couleur du pixel observé est comprise dans ces bornes et renvoi true si c'est le cas. La couleur est alors reconnue pour ce pixel et est comptabilisé dans l'histogramme :


Figure n°16 : méthode validant la couleur d'un pixel

Cependant cette méthode possède un problème majeur. Les bornes étant fixes, elles sont très sensible au changement d'environnement. Ainsi les bornes peuvent se décaler par rapport aux valeurs que peuvent prendre les bonbons sur une photo. Sur une photo sombre par exemple, un bonbon jaune peut donner une majorité de pixel orange puisque la composante verte diminuerait. On se retrouve alors avec une reconnaissance erronée. Cette erreur entraîne un problème très important puisque cela donnerait une surabondance de bonbon orange, augmentant ainsi les chances que l'IA trouve un coup non existant. Pour pallier ce problème nous avons tenté de mettre en place une deuxième méthode pour former les bornes de manière dynamique.

plagedecouleurs.jpg (14 KB) Nicolas Raymond, 03/22/2015 06:49 PM

bornesfinal.jpg (17 KB) Nicolas Raymond, 03/22/2015 06:49 PM

méthodevalidant.png (9.85 KB) Nicolas Raymond, 03/22/2015 06:49 PM