Vous êtes sur la page 1sur 10

1

Traitement dimages sous LabVIEW

Sujet

Structure dun banc de test de traitement dimages

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

INTRODUCTION
Dans le cadre du projet P11A05 Systme de comptage de poissons par vision, nous avons
ralis un banc de test, sous le logiciel LabVIEW, qui permet de tester les diffrents
algorithmes tudis. Nous allons donc tudier la structure du programme en question et plus
particulirement la dmarche suivre pour tablir une telle structure.

STRUCTURE DU BANC DE TEST


Avant de nous intresser de plus prs aux sous-blocs qui composent lintgralit du
programme, voici larchitecture gnrale :

Figure 1 : Architecture gnrale du programme

Il y a tout dabord une boucle While dont la condition de Stop est fausse ce qui fait que le
programme tourne en permanence ds lors que vous lexcutez. Ensuite, afin de ne pas
monopoliser le processeur, nous avons ajout une temporisation de 10ms.
Dans linterface client, lutilisateur peut choisir la provenance des images traiter. Ce choix
se fait partir dun menu droulant que lon retrouve dans linterface programmeur. Parmi ces
choix, il y a lUSB qui permet de faire du traitement dimages en temps rel, le traitement
partir dune banque dimages, le traitement partir dune vido AVI. Dautres possibilits
pourraient, bien videmment, tre ajoutes.
De plus, sur linterface client, il y a des onglets qui permettent de choisir le mode dans lequel
on souhaite fonctionner. Cela permet ici, par exemple, de pouvoir tester indpendamment les
diffrents algorithmes dans des onglets de debug. Cette commande donglet se retrouve
galement sur linterface programmeur.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Voici un aperu de la face avant du programme o lon retrouve la commande onglet (2) ainsi
que le choix du mode de fonctionnement partir du menu droulant (1) :

Figure 2 : Face avant du programme

Dans un premier temps, nous avons dfini une variable de type stricte qui permet de grer les
tats dans lesquels le programme est susceptible de se trouver. Parmi ces tats, nous
retrouvons Idle (Attente), Start (Initialisation), Run (Excution), Stop (Arrt). Pour dfinir
cette variable, il faut procder comme suit :
1- Insrer une commande de type enum sur la face avant.
2- Faire un clic droit sur la commande et cliquer sur diter les lments .
3- Remplir les lments et cliquer sur OK .

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

4- Slectionner la commande, cliquer sur Edition , puis cliquer sur Slectionner la


commande .
5- Une nouvelle fentre apparat, cliquer sur Commande puis cliquer sur Df. De
type stricte .

6- Il suffit maintenant denregistrer le type enum dans le rpertoire de travail pour


pouvoir lutiliser ultrieurement dans le programme

Nous initialisons cette commande la valeur Idle par dfaut. Cette valeur voluera dans le
temps laide de la FSM dans la boucle While. On prend cette volution en compte en
ajoutant un registre dcalage qui permettra de rcuprer la prcdente valeur de cette
commande.
De la mme faon, tout au long du programme, nous surveillons quaucune erreur ne
survienne. Par dfaut, cette variable derreur est initialise comme fausse. Si jamais une erreur
venait se produire dans la boucle While, peu importe la raison, nous repasserions en mode
Idle et arrterions par consquent le processus de traitement dimages.
Pour comprendre le fonctionnement du programme dans son ensemble, nous allons
approfondir les blocs FSM, commande menu droulant et commande onglet.

Bloc FSM :
Ce bloc permet de grer ltat dans lequel se trouve le programme : Idle, Start, Run, Stop. En
fonction de certains boutons ou de certaines conditions, nous allons changer dtat. Cest le
bloc principal du programme. Nous allons voir ci-dessous la dcomposition de la machine
tats que nous utilisons dans le projet :

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Nous restons dans ltat par


dfaut, Idle, tant que le bouton
Start de notre programme na
pas t press. Si le bouton est
appuy, nous passons en tat
Start.

Lorsque nous sommes dans


ltat Start, nous passons dans
ltat Run obligatoirement en
laissant le bouton Start actif si
aucune erreur nest apparue.
Mais, ds lors quune erreur
survient, nous retournons dans
ltat Idle et nous repassons le
bouton Start au repos.

Nous restons dans ltat Run


tant quaucune erreur nest
survenue et tant que le bouton
Start reste actif. Sil y a une
erreur, nous passons dans ltat
Stop et nous dsactivons le
bouton Start.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Quand nous sommes dans ltat


Stop, nous passons forcment
dans ltat dattente Idle. Et
nous repassons par prcaution
le bouton Start au repos.

Ce bloc est indispensable, car en fonction de ltat, nous allons faire des oprations diffrentes
dans les deux autres blocs. En effet, dans les deux autres blocs principaux du programme,
nous utilisons des Switch qui permettent de distinguer les manipulations effectuer en
fonction de ltat actuel du programme. Il serait bien videmment possible dajouter dautres
tats.

Bloc commande menu droulant :


Le bloc commande menu droulant permet de grer les modes de fonctionnement. Pour vous
illustrer comment fonctionne ce bloc, nous allons tudier le mode de traitement par camra
USB.
La variable menu droulant est galement une variable de type stricte. Pour ajouter un
nouveau mode, il suffit dditer un nouvel lment dans cette commande et de le dcrire dans
la partie programmeur. Cette commande menu droulant est connecte une structure
condition, ce qui permet de retrouver tous les modes de fonctionnement. Dans lexemple
choisi, le traitement dimages partir dune camra USB correspond au mode n3. Puis, au
sein de cette condition, nous allons raliser diffrentes oprations que lon soit dans ltat
Idle, Start, Run ou Stop.

Dans ltat dattente, nous ne


ralisons aucune opration.
Nous repassons simplement
lerreur 0 pour repartir sur de
bonnes bases.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Dans
ltat
Start,
nous
prparons la configuration et
dmarrons la session USB.
Ltape
de
configuration
consiste choisir la camra
USB utiliser. De plus, nous
initialisons la variable Numero
0.
Dans ltat Run, nous ralisons
lacquisition dune image dans
la session USB dmarre
auparavant et nous envoyons
cette image ltage suivant
pour la traiter. De plus, nous
incrmentons
la
variable
Numero pour pouvoir identifier
chaque image par un numro
unique. Maintenant, il est
possible de stopper lUSB en
appuyant sur le bouton Stop
camera qui nous envoie dans
ltat Stop.
Dans ltat Stop, nous coupons
la communication USB et nous
repassons le bouton Stop
camera au repos.

Ce bloc permet donc de dcrire un fonctionnement plus simplement. C'est--dire que nous
distinguons ltape dattente, dinitialisation (configuration), de fonctionnement et darrt.
Cette phase de dcomposition est primordiale. Elle doit tre cohrente. Ce bloc, dans le cadre
du projet, permet donc quelque soit le mode de fonctionnement slectionn, denvoyer une
image identifie par un numro ltage suivant. Cest cet tage qui ralisera le traitement
dimages.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Bloc commande onglet :


Le bloc commande onglet fonctionne de la mme faon, c'est--dire quen fonction de
longlet sur lequel vous vous trouvez sur la face avant, il est possible de faire des traitements
et des affichages diffrents. Voici lexemple de longlet qui permet de dbugger lalgorithme
de comptage. Sur la face avant, nous affichons tous les indicateurs, commandes ncessaires au
debug et dans la partie diagramme, nous dcrivons lalgorithme de comptage en distinguant
une fois encore les phases Idle (Attente), Start qui permet dinitialiser toutes les variables
utiles du programme, Run dans laquelle on crit lalgorithme de comptage, et Stop qui ralise
le calcul des rsultats finaux.

Dans ltat Idle, nous sommes en attente, cest pourquoi il ne se passe strictement rien.

Dans ltat Start, nous rinitialisons toutes les variables utilises dans lalgorithme.
Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Traitement dimages sous LabVIEW

Dans ltat Start, lalgorithme de comptage est cod afin de pouvoir estimer le nombre de
poissons dans le cadre de notre projet. Nous restons dans ltat Run tant quil reste des images
traiter.

Puis dans ltat Stop, nous calculons le nombre total de poissons trouvs partir des images
reues.
Il est ici aussi possible dajouter/supprimer ou modifier des onglets. Pour tester un nouvel
algorithme, il suffit de limplanter cet endroit du programme pour vrifier quil fonctionne.
Le reste du programme restant inchang.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

10

Traitement dimages sous LabVIEW

CONCLUSION
Avec la structure de ce programme, il est possible de passer dun mode de fonctionnement
un autre ou dun onglet un autre en temps rel. Les commandes ayant un impact sur les
algorithmes peuvent galement tre modifies en cours de traitement. Au lien davoir un
programme squentiel, nous avons donc un programme ractif en temps rel. De plus, cette
structure est adaptable tout autre traitement dimages car il suffit simplement dajouter,
supprimer ou modifier des modes de fonctionnement, des tats, ou des algorithmes. La
structure, elle, reste la mme. Ce banc de test est donc transportable sur un autre projet de
traitement dimages.

Polytech Clermont - Anne 2011 / 2012

Kvin BRENET

Vous aimerez peut-être aussi