La CMUcam est montée sur un bras à l’avant du robot.

Le robot se sert de la caméra pour contrôler son déplacement, il faut donc pouvoir traiter rapidement chaque image.
Reconnaissance des couleurs
L’image est récupérée ligne par ligne. Pour chaque pixel, les trois composantes (rouge, vert et bleu) sont reçues. Les valeurs reçues sont comprises entre 0 et 255. Un pixel est considéré comme rouge si :
– Sa composante de rouge est supérieur à 100
– Sa composante de rouge est supérieure à 3 fois la somme de sa composante bleue et de sa composante verte.
if( (Rouge > 100) && (Rouge > 3*(Vert+Bleu) ) )
Si le pixel est rouge, ceci est noté dans un tableau qui reproduit l’image. A la fin du traitement, ce tableau contient 1 dans toutes les cases correspondant à des pixels rouges et 0 dans les autres cases.
Reconnaissance des zones
Ensuite le tableau est parcouru de gauche à droite puis de haut en bas. A chaque pixel rouge rencontré qui ne fait pas partie d’une forme précédemment identifiée, le traitement suivant est appliqué :

- Horizontalement vers la droite, comptage du nombre de pixels jusqu’au premier pixel d’une couleur différente.
- Retour au milieu de la ligne de pixels, comptage du nombre de pixels verticalement vers le bas jusqu’au premier pixel d’une couleur différente.
- Retour au milieu de la ligne verticale de pixels, comptage horizontalement vers la droite jusqu’au premier pixel d’une couleur différente.
- Retour au milieu de la ligne verticale de pixels, comptage horizontalement vers la gauche jusqu’au premier pixel d’une couleur différente.
- Déduction de la zone cible.
Enfin, les différentes zones trouvées sont comparées. Si certaines se chevauchent, celles-ci sont fusionnées. Dans notre cas, deux zones étaient fusionnées si le centre de l’une était dans la zone de l’autre. Les zones les plus petites sont éliminées. Soit la balle est trop loin, soit il s’agit d’autre chose.
Il est possible de ne traiter qu’un pixel sur 4 ou qu’un pixel sur 9 (en prenant qu’un pixel sur deux par ligne et qu’une ligne sur deux). Ceci permet de raccourcir la durée du traitement, mais l’image perd en résolution. Ceci raccourcit un peu le champ de vision du robot.