Note d`application 1 : Analyse particulaire

publicité
Note d’application
Analyse particulaire
Projet GE3 P11A05
Jean-Patrick WANNER – GE3
Etude d’un des algorithmes implanté dans le VI particle analysis report de Labview.
Sommaire
Introduction............................................................................................................................................. 2
Rappel sur la connectivité ....................................................................................................................... 2
Présentation du bloc Labview particle analysis report ........................................................................... 3
Recherche des algorithmes ..................................................................................................................... 4
Fonctionnement du VI ......................................................................................................................... 4
L’algorithme Moore - Neighbor Tracing .............................................................................................. 5
L’algorithme du Square-Tracing .......................................................................................................... 7
Discussion ............................................................................................................................................ 7
Dimensionnement d’une particule...................................................................................................... 8
Conclusion ............................................................................................................................................... 9
Jean-Patrick WANNER | Analyse particulaire
1
Introduction
Les algorithmes de comptage et de mesure implantés dans notre programme Labview ont besoin de
détecter les poissons sur chaque image. Plus précisément, il faut détecter tous les poissons sur
l’image (en prenant en compte toutes les formes) et connaitre le nombre de pixels qu’occupent ces
poissons (particules) afin de calculer leur taille.
Le bloc particle analysis report de NI Vision pour Labview donne ces informations et répond à notre
demande. Ce bloc (ou Visual Instrument VI) a donc été utilisé dans nos algorithmes. Mais étant fourni
par Labview, il est impossible de connaître les algorithmes qu’il contient.
Ce rapport présente le résultat des recherches concernant les algorithmes qui semblent être utilisés
dans ce bloc pour identifier les particules sur l’image. Il n’est donc pas certain que les algorithmes
présentés soient effectivement ceux implantés dans le bloc. Un parallèle entre le résultat obtenu
avec le bloc de Labview et le résultat que peut fournir un algorithme de traitement d’images est aussi
effectué.
Rappel sur la connectivité
Sur les images binaires, les pixels sont soit noirs (valeur = 0), soit blancs (= 255). Afin d'identifier des
objets dans une image binaire, nous avons besoin de localiser des pixels blancs qui sont «connectés»
les uns aux autres. En d'autres termes, les pixels connexes, ou voisins, forment un objet sur une
image binaire qu’il faut réussir à identifier.
Quand pouvons-nous dire que deux pixels sont voisins ?
Puisque nous utilisons des pixels carrés, la réponse à la question précédente n'est pas triviale. La
raison à cela est la suivante : dans un pavage carré, les pixels partagent soit une arête, soit un
sommet, soit rien. En fait, un pixel peut être en contact avec 8 pixels, liés par une arête ou un
sommet. Ces pixels définissent le voisinage de Moore. Ce type de connectivité s’appelle la
connectivité 8. Dans le cas où les pixels ne sont liés que par les arêtes, la connectivité est de type 4.
Avec la connectivité 4, les pixels voisins du pixel P sont représentés comme ceci :
Les pixels voisins de P sont ceux ayant une arête commune avec lui.
Jean-Patrick WANNER | Analyse particulaire
2
Avec la connectivité 8 (aussi appelée le voisinage de Moore), les pixels voisins d’un pixel P sont
représentés comme ceci :
Les pixels voisins de P sont en contact avec ce dernier via leurs arêtes ou via leurs sommets.
Présentation du bloc Labview particle analysis report
Sur le diagramme de Labview, le bloc est présenté comme ceci :
Le bloc retourne le nombre de particules détectées dans une image binaire et un tableau contenant
des informations sur les particules le plus couramment utilisées. Ces informations sont par exemple
la surface qu’occupe une particule sur l’image, le nombre de trous dans cette particule ou encore la
dimension (X, Y) de la particule.
Les entrées
-Connectivity 4/8 (8) : cette entrée est par défaut à 8 (TRUE), elle spécifie le type de connectivité
utilisée par l'algorithme pour la détection des particules. Le mode de connectivité détermine
directement si un pixel adjacent appartient à la même particule ou à une particule différente.
Autrement dit, sur une même image, le nombre de particules peut être plus ou moins important en
fonction de la connectivité utilisée.
-Image : correspond à la référence de l’image source.
-erreur in : décrit l'état d'erreur avant que ce VI ou cette fonction fonctionne.
Les sorties
-Number of particules : indique le nombre de particules détectées sur une image.
-Image out : cette sortie est la référence de l’image source, elle est utilisée dans le cas où le prochain
VI a besoin de l’image.
-Particle report (Pixels) : est un tableau qui renvoie un ensemble de mesures en pixels non calibrés à
partir des particules détectées. Ce cluster contient les éléments suivants:
 Area : est la surface en pixels qu’occupe la particule,
 Number of Holes : est le nombre de trous dans la particule,
Jean-Patrick WANNER | Analyse particulaire
3




Bounding Rect : est le plus petit rectangle avec ses côtés parallèles à l'axe des x et des y, qui
encadre complètement la particule,
Center of Mass : est le point qui représente la position moyenne de la masse totale de la
particule. En supposant que chaque point de la particule a une densité constante, la masse m
de chaque pixel constituant la particule est identique. Il s’agit tout simplement du barycentre
de la particule,
L'orientation : est l'angle de la droite qui passe par le barycentre avec le moment d'inertie le
plus faible,
Dimensions : indique (en nombre de pixels) la hauteur et la largeur de la particule.
-Particule report(Real-World) : est un tableau qui renvoie un ensemble de mesures calibrées dans le
monde réel à partir des particules détectées. Le cluster est identique à celui du Particle report
(Pixels). Si l'image n'a pas d'informations de calibrage, les valeurs sont les mêmes que la sortie
Particle report (Pixels).
-Error out : contient les informations d’erreurs liées au VI.
-Calibration Valid : indique si les informations d'étalonnage pour une particule sont valides pour
chaque résultat du Particle report (Real-World).
Recherche des algorithmes
Ce VI retourne de nombreuses informations sur l’image (nombre de trous dans une particule, centre
de masse…) et utilise pour cela plus qu’un algorithme (holes searching, contour tracing…). Les
informations que nous utilisons pour nos algorithmes de mesure et de comptage sont le nombre de
particules trouvées sur une image ainsi que les dimensions (largeur et hauteur) de la particule. Ma
recherche se concentre donc sur les algorithmes qui permettent de détecter les particules sur une
image et de connaitre leur dimension.
Fonctionnement du VI
La première particule détectée par le VI est toujours celle située la plus à gauche en bas de l’image.
La dernière est la particule la plus à droite en haut de l’image. Sur une image binaire, l’ordre est donc
le suivant :
Jean-Patrick WANNER | Analyse particulaire
4
Le VI effectue un balayage de l’image de la gauche vers la droite. Vu l’ordre dans lequel est attribué
le numéro de chacune des particules, le balayage se fait par colonne de bas en haut.
Lorsque le pixel est blanc on parle de pixel utile, et lorsque le pixel est noir on parle de pixel de fond.
L’algorithme balaie les colonnes de pixels de bas en haut et de la gauche vers la droite. Il effectue ce
balayage jusqu’à détecter un pixel autre qu’un pixel de fond (valeur≠0). Ce qui donne l’aperçu
suivant :
Lorsque le premier pixel blanc est détecté, il faut vérifier son voisinage. Si ce pixel est isolé, il
constitue une particule à lui tout seul. S’il a des pixels utiles voisins, la particule sera plus grosse. Dans
tous les cas, le bloc va scruter le voisinage de ce pixel par le biais de la méthode suivante : le bloc va
mémoriser les coordonnées du premier pixel détecté (pixel de départ) et va scruter les pixels voisins.
Cet algorithme est un contour tracing, plus précisément le Moore - Neighbor Tracing. Cet algorithme
est utilisé pour tracer les contours d’une particule. Une fois la particule trouvée, le bloc continue à
balayer les colonnes jusqu’à la détection d’une nouvelle particule et ainsi de suite. Le VI ne considère
pas un pixel utile sur lequel il est déjà passé comme étant une nouvelle particule.
L’algorithme Moore - Neighbor Tracing
On considère sur une image qu’une particule correspond à un ensemble de pixels blanc sur un fond
de pixels noir. Autrement dit, les pixels qui nous intéressent sont blancs (pixels utiles) et les pixels
noirs représentent l’arrière-plan (le fond). On commence en bas à gauche de l’image et on effectue
un balayage des colonnes du bas vers le haut, jusqu’à rencontrer un pixel blanc (pixel qui nous
intéresse). Ce pixel est mémorisé comme étant le pixel de départ. A partir de ce moment, à chaque
fois qu’on détecte un pixel blanc (nommé P), on retourne sur le dernier pixel noir qui a été scruté, et
on se déplace autour du pixel P dans le sens horaire, visitant chaque pixel voisin. Lorsqu’on détecte
un pixel blanc, on effectue à nouveau les mêmes opérations. L'algorithme se termine quand le pixel
de départ est détecté pour la deuxième fois.
Remarque : le sens de déplacement n’a pas d’importance. Cependant, il faut conserver le même tout
au long de l’algorithme. A chaque détection d’un pixel blanc, les coordonnées de ce dernier sont
mémorisées afin de connaitre le contour de la particule. Visuellement, le comportement de cet
algorithme est le suivant :
Jean-Patrick WANNER | Analyse particulaire
5
Balayage des colonnes de bas en haut jusqu’à la détection d’un
pixel utile.
On se place sur le dernier pixel de fond scanné ( ). On balaie
ensuite les voisins de Pd dans le sens horaire, jusqu’à détecter
un nouveau pixel utile.
On se place sur le dernier pixel de fond scanné après la
détection de P.
On recommence ensuite les différentes étapes à partir de .
Dernier pixel de fond scanné après la détection d’un
pixel utile P.
Balayage des pixels voisins (dans le sens horaire).
Pixel de départ détecté deux fois : fin de l’algorithme.
Cet algorithme peut être défini de la manière suivante :
Entrée :
 Pavage carré,
 T, tableau contenant des pixels utiles.
Sortie :
 B, matrice contenant les pixels définissant le contour de la particule,
 M(P), matrice définissant le voisinage de Moore d’un pixel P,
 c, prochain pixel à tester (après b, le pixel courant).
Jean-Patrick WANNER | Analyse particulaire
6
Début
Vider la matrice B
Faire
Du bas vers le haut et de la gauche vers la droite le balayage des
pixels de T
Jusqu’à la détection d’un pixel utile Pd
Insérer Pd dans B
Mettre Pd dans P
/*Initialisation de b à P*/
b = P
Mettre c (pixel après b dans le sens horaire) dans M(P)
Faire
/*Retour en arrière sur le dernier pixel de fond si c est un pixel utile*/
Si c est blanc
Insérer c dans B
b = P
P = c
c = pixel après b dans le sens horaire dans M(P)
/*Pixel de fond donc recherche du pixel suivant dans le sens horaire*/
Sinon
b = c
c = pixel après b dans le sens horaire dans M(P)
Fin si
Tant que c n’est pas égal à Pd
Fin
L’algorithme du Square-Tracing
Cet algorithme permet lui aussi de déterminer le contour d’une particule. Cependant il n’est valable
que pour des connectivités 4. Or, le bloc de Labview utilise les connectivités 4/8. Il se peut
néanmoins que cet algorithme soit utilisé par le VI dans le cas où l’utilisateur sélectionne une
connectivité 4 en entrée. Le fonctionnement de l’algorithme du Square-Tracing est assez simple. Une
fois le pixel de départ détecté, si on se trouve sur un pixel utile (nommé P), alors on tourne à gauche
et si on se trouve sur un pixel de fond, alors on tourne à droite. L’algorithme s’arrête une fois que
l’on retombe à nouveau sur le pixel de départ. Le résultat pour une image de connectivité 4 est le
suivant:
Discussion
Dans les images que nous traitons, on remarque que certaines particules ont une connectivité de 8.
C’est par exemple le cas pour cette image :
Jean-Patrick WANNER | Analyse particulaire
7
Les pixels voisins sont liés par leur sommet, une connectivité de 8 est donc indispensable si l’on
souhaite que la particule soit correctement détectée. Cependant, sur l’échantillon de 750 images
utilisé dans notre projet, seulement deux images présentaient cette particularité. En effet, les
particules ont très souvent cette forme (connectivité de 4) :
Lorsque l’entrée du bloc est en connectivité 4 puis 8, l’erreur sur le nombre de particules est
inférieure à 1%. Néanmoins une connectivité 8 permet d’obtenir des résultats plus fiables car le VI
prend en compte plus de formes différentes pour une particule. Sur un échantillon donné, la
précision sera donc meilleure mais le temps de traitement sera plus long. Lorsque des travaux sont
réalisés sur des échantillons composés majoritairement d’images de connectivité 4, il pourra être
plus judicieux de paramétrer l’entrée connectivity du bloc à 4.
Dimensionnement d’une particule
Connaitre la hauteur maximale (Y) et la largeur maximale (X) en pixels de la particule est trivial une
fois que les coordonnées de chaque pixel définissant la particule sont mémorisées dans un tableau. Il
suffit pour cela de balayer ce tableau en cherchant les extrêmes. C’est un algorithme classique de
balayage de tableau qui compare chaque coordonnée. La hauteur (Y) correspond à la soustraction
entre le pixel le plus haut Ph(x,yh) et le pixel le plus bas de la particule Pb(x,yb). La largeur X quant à
Jean-Patrick WANNER | Analyse particulaire
8
elle est définie par le pixel le plus à droite soustrait par le pixel le plus à gauche. La distance obtenue
correspond directement au nombre de pixels, puisque l’on se déplace dans le tableau de pixel en
pixel.
Exemple :
Y = (5 - 1) + 1 = 5 pixels de haut.
X = (5 - 1) + 1 = 5pixels de large.
Conclusion
Le bloc particle analysis report de Labview est un VI auquel nous n’avons pas accès. Il nous est donc
impossible de connaitre quels algorithmes sont exactement utilisés. Cependant, au vu des résultats
obtenus en utilisant ce bloc et en effectuant des recherches sur les algorithmes connus, nous
pouvons par analogie penser que l’algorithme utilisé pour détecter le contour des particules est
l’algorithme de Moore - Neighbor Tracing.
Jean-Patrick WANNER | Analyse particulaire
9
Téléchargement