Structure Banc Test Traitement Images

10
Polytech’ Clermont - Année 2011 / 2012 Kévin BRENET 1 Traitement d’images sous LabVIEW Sujet « Structure d’un banc de test de traitement d’images »

description

traitement d'image

Transcript of Structure Banc Test Traitement Images

  • Polytech Clermont - Anne 2011 / 2012 Kvin BRENET

    1 Traitement dimages sous LabVIEW

    Sujet

    Structure dun banc de test de traitement dimages

  • Polytech Clermont - Anne 2011 / 2012 Kvin BRENET

    2 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

    3 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

    4 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

    5 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

    6 Traitement dimages sous LabVIEW

    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.

    Quand nous sommes dans ltat

    Stop, nous passons forcment

    dans ltat dattente Idle. Et

    nous repassons par prcaution

    le bouton Start au repos.

    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

    7 Traitement dimages sous LabVIEW

    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.

    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.

  • Polytech Clermont - Anne 2011 / 2012 Kvin BRENET

    8 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

    9 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.