Module Imagerie
Picsou Robotix inc.




Éric Sévigny
Thear Ly
    sevign00@gel.ulaval.ca
ly00@gel.ulaval.ca

14 décembre 1999


1.0 Objectifs

Dans cette partie de projet, le travail consiste à traiter les images en provenance de la caméra aux fins d'analyse. L'image du plan de travail du robot est prise par la camera et est envoyée à notre application. On procède alors au traitement de l'image par l'analyse des formes (blobs analysis).

2.0 Responsabilités


L'équipe de l'imagerie a comme responsabilités:


 

 Figure 1 - L'espace de travail pour le projet
(cliquer pour obtenir une plus grande image)


3.0 Aspects techniques


3.1 Analyse préliminaire

Notre première approche aura été de se bâtir un outil afin de pouvoir aisément manipuler les images en provenance de la caméra et de se familiariser avec les différentes possibilités de la librairie MIL mises à notre disposition. Par la suite, nous avons construis les procédures et algorithmes nécessaires à la détection des objets.

3.2 Conception du programme

Afin de réaliser tous les objectifs mentionnés en 2.0, nous avons décidé d'écrire un programme en utilisant Microsoft Visual C++ et d'utiliser la librairie de traitement d'image MIL 6.0. Nous détaillerons quelques points ayant références au programme principal (PIIP) ici-bas. Pour plus d'information sur PIIP, veuillez consulter la section 4.0.

3.2.1 Interface usager de traitement manuel des images

La première partie développée fut l'interface visuelle qui permet à un utilisateur de traiter manuellement les images, c'est-à-dire procéder étape par étape, une opération à la fois. Quant à nous, elle nous aura permis de raffiner notre procédure de détection, que nous décrirons dans une prochaine section.

3.2.2 Algorithme de traitement autonome

Le but de cette section ? Par automatisation, nous voulions que, via une simple commande, le programme soit capable de nous fournir les informations nécessaires sur l'emplacement des objets.

Nous avons alors bâti une fonction de traitement qui, lorsqu'appelé, lance la procédure de traitement d'image et envoie les données dans le fichier que l'utilisateur spécifie en paramètre.

Notre première tentative consistait à utiliser une image statique initiale (en supposant les objets immobiles). Cependant, pour une question de précision lors des déplacements du robot, nous avons dû changer cette option pour en prendre une plus dynamique. C'est-à-dire que la capture de l'image se ferait en continu (les images seront prises à des intervalles de temps déterminés) afin de voir les déplacements du robot à l'écran.

Le traitement autonome se compose de plusieurs fonctions de la librairie MIL. Entre autres, des fonctions de base telles que MimBinarize (permet de rendre les pixels noir ou blanc),ou MimOpen et MimClose (permettent de réduire le bruit dans l'image à traiter). Nous avons aussi eu recours à toute la section traitant de la détection de forme.

Le traitement s'effectue en trois phases. La première cherche à détecter les obstacles, la seconde les cibles et la dernière le robot lui-même. En imposant quelques contraintes (aire, rayon, etc.), il était relativement facile de séparer ces objets. Par la suite, les coordonnées pixels des centres de gravité des objets du terrain serons converties en coordonnées réelles, en tenant compte de la perspective. Pour ce faire, MIL nous permet l'utilisation d'une fonction qui fait l'interpolation des coordonnées réelles en utilisant un vecteur reliant des points pixels connus à des points de la zone de travail (en coordonnées réelles - i.e. en mètres).

Les résultats (coordonnées des objets) de l'analyse de formes sont envoyés dans un fichier qui sera lu et analysé par l'application Java (voir la section traitant de l'application).

3.2.2 Procédure pour la détection des objets

Voici une description sommaire de la procédure de traitement autonome du terrain capté par la caméra numérique. Veuillez noter que nous ne considérons pas ici les diverses étapes de filtrage dont font l'objet chacune des détections suivantes :

3.2.3 Le filtrage

Il est à noter que les formes détectées passent par un filtrage rigoureux qui détermine finalement si ce sont des formes viables ou non. Par exemple, les formes se trouvant hors champ de travail ne seront jamais considérées (i.e. hors des démarcations blanches sur le planché).

3.2.4 Problèmes rencontrés

Nous avons rencontré plusieurs problèmes durant la conception du logiciel et de la procédure de traitement, nous en énumérerons quelques-uns ci-bas :


3.3 Une oeuvre inachevée...


Il y a certainement quelques points que nous aurions aimé peauffiner... en voici la liste:

4.0 Le logiciel : PIIP
[Programme d'Inspection d'Image de Pique-Sous]

PIIP est un programme d'inspection d'images développé par l'équipe du traitement d'image et qui utilise la librairie MIL (Matrox Imaging Library) à plusieur sauces.

Il permet, par le biais d'un simple interface usager, de traiter une image (érosion, dilatation, détection de contours) et de
faire une analyse de forme (blob). Cette dernière nous est des plus utile compte tenu de la nature du projet Cyclope.

Le logiciel est divisé en 4 sections, et deux catégories d'utilisation. Soit, le mode manuel et le mode automatique. Le mode manuel permet de faire du traitement d'image en utilisant les fonction prédéfinis de la librairie MIL. Le mode automatique, quand à lui, analysera de lui-même l'image en provenance d'une caméra numérique branché à l'ordinateur.

Les 4 sections du logiciel, que nous allons parcourir et expliquer, sont:

- La fenêtre principale
- La barre d'outil et le menu principal
- La boîte de dialogue d'analyse et traitement
- La ligne de commande

4.1 La fenêtre principale


 

 Figure 1 - Fenêtre principale
(cliquer pour obtenir une plus grande image)

L'application est construite selon le mode standard documents-vues multiples. C'est à dire que l'on peux ouvrir plusieurs documents, et chacuns de ceux-ci aura sa propre vue et sera totalement indépendant des autres. Il est donc possible de travailler sur plusieurs images en même temps. La fenêtre principale de l'application comporte une barre d'outil qui permet quelques unes des fonctions usuelles mais aussi quelques fonctions de traitement image.

4.2 La barre d'outils et le menu principal


 Nous décrirons ici brièvement les diverses fonctions à partir de la barre d'outil, qui sont répétés dans les diverses sections du menu principal:


Nouveau document
Un document blanc sera créé - cette fonction n'est actuellement pas implanter, elle ne fait que créé une image noir
Ouverture d'un fichier
Ouverture d'un fichier (*.mim, *.tif) situé sur le disque dur. Attention - seul l'ouverture de fichier MIM et TIFF est implanté, vous obtiendrez une erreur en tentant d'ouvrir tout autre type de fichier.
Sauvegarde
Sauvegarde du document ouvert et actif
Début de capture
Début de la capture d'écran via la caméra (capture continue). Pendant la capture continue, aucun traitement image n'est possible.
Fin de capture (pause)
Fin de la capture continue. La capture est arrêtée et l'image est figée. Le traitement d'image est alors possible.
Traitement image
Affiche la boîte de traitement image.
Couche de support graphique
Affiche ou rend invisible la couche de support graphique. Cette couche affiche des données concernant l'image (taille, grandeur, hauteur, traitement effectué, localisation des formes détectées, etc.)
À propos de ...
Affiche la boîte de présentation de la compagnie.

Noter que les icônes sont temporaires et ne seront améliorés que si et seulement si le temps le permet.

4.3 La boîte de dialogue d'analyse et traitement


L'onglet de traitement image: Cet onglet permet le traitement d'image de base. De la détection des contours, à l'érosion de l'image, tout y est. Chacune des fonctions possibles possèdent une série de paramètre (par exemple, pour le cas de l'érosion - Open - nous devons spécifier le nombre d'itérations et choisir la méthode d'érosion) que l'on doit remplir. Le programme ne traite cependant pas les données passés, d'où il est à ce moment important de faire attention à ce que l'on pose comme paramètres. L'image qui sera traité est, bien sur, l'image de la fenêtre active en ce moment.

 Figure 2 - Onglet de traitement image
(cliquer pour obtenir une plus grande image)
 


Les fonctions disponibles pour l'instant:
- Open
- Close
- EdgeDetect
- Binarize
- Convert

L'onglet d'analyse: Cet onglet permet de faire l'analyse des "blobs" de l'image courante. Selon les spécifications de détections, le logiciel inscrira sur l'image des croix au centre de gravité des cibles trouvées et des croix d'une autre couleur sur les obstacles. Ces inscriptions sont temporaires et seront remplacés, si le temps le permet, par un affichage plus diversifié et informatif (qui fonctionnera en conjonction avec le bouton de couche de support graphique de la barre d'outil).

Figure 3 - Onlglet d'analyse
(cliquer pour obtenir une plus grande image)
 

Les options possibles :

- Définition des la valeur de binarisation (0-255 - i.e. une valeur de gris)
- Définition de l'aire maximale et minale pour les blob à détectés
- Définition du périmètre minimale
- Définition de l'aire maximale et minimale pour une cible
- Option de sauvegarde des résultats dans un fichier

4.4 La ligne de commande

Il est possible de lancer l'application avec une ligne de commande. Une seule de ces options est actuellement implantées :

PIIP.exe -a NomDuFichierDeSortie.log

Permet l'analyses de l'image en provenance de la caméra et de la sauvegarde des résultats dans NomDuFichier.log


[ Application ]   [ Communication ]   [ Imagerie ]   [ Robot ]
    Retour en arrière