Recherche d'objets

Recherche des objets

La recherche des objets est le point critique pour certains de nos critères d'inhomogénéité. En effet, bien souvent une sur-estimation (ou sous-estimation) du nombre de particules dans une zone ou dans toute l'image compromet la validité du critère. Il est donc essentiel de capter le plus justement les particules présentes. Lorsque l'image provient de simulation numérique les particules sont parfaitement rondes donc la détection d'objet rond est facilité. Mais même dans le cas de particules rondes, lorsque celles-ci forment les zones de concentration préférentielle, on se retrouve avec des particules les unes sur les autres. Le travail de reconnaissance devient alors plus délicat comme le montre la capture suivante :

Image de spray binarisée puis passée à la recherche de cercles

 

Pour essayer d'être le plus précis possible lors de la détection des objets, nous avons procédé à des tests de sensibilité de nos fonctions. En premier lieu, il faut savoir qu'on a utilisé trois méthodes pour détecter les objets. La première, bwlabel, recherche dans une matrice binaire des objets connectés (soit plus de 4 cellules de 1 par exemple). L'avantage de cette fonction c'est que toutes les surfaces de particules sont présents dans la liste d'objet. L'inconvénient est qu'un filament de particules se transformera en une seule particule. Ce est contraire à l'approche des indicateurs qu'on utilise. La seconde fonction, imfindcircles, recherche uniquement des cercles, de rayons que l'on peut fixer, par la présence de rayon de courbure. Et la troisième approche que l'on a utilisé est l'approche par pixel.

On a très vite abandonné la première fonction qui ne répond pas à nos exigences. Ensuite on s'est intéressé à l'effet produit par le traitement d'image sur la recherche des objets avec la deuxième méthode. On commentera aussi la troisième approche qui nécessite de jouer sur les seuils de gris.

 

La fonction imfindcircles

Dans un premier temps, on a joué sur le seuil de passage au noir et blanc de la fonction im2bw, sur la sensibilité de la fonction imfindcircles et sur l'intervalle de rayon que recherche la fonction. Nos résultats sont présents sur les graphes suivantes:

Ce qu'on constate dans ces graphes c'est que la gestion du seuil de passage noir/blanc à une importance non négligeable lors de la détection. On a de plus utilisé une fonction imfill('hole') de sorte que les particules ne soient pas trouées. On a pu constaté un nombre de particules plus grand. Un autre constat est que la sensibilité de la fonction imfindcircles augmente vraiment le nombre de particules détectés.

 

Ensuite, on s'est intéressé à l'effet de l'intervalle de rayon qu'on fixe à la fonction. On obtient des résultats assez variable dans l'ensemble.  Mais il semble que nous devions faire une étude préalable pour déterminer le rayon que l'on demande.

 

 

 

Dans la suite, on a constaté que la fonction imfindcircles est bien plus efficace lorsque les objets recherchés sont d'un rayon de l'ordre de 10 pixels. C'est pourquoi on s'arrange avec imresize pour agrandir l'image. Une chose qu'il faut garder en tête est le fait que la fonction recherche des rayons de courbure. Il faudra toujours faire attention aux objets que l'on détecte. Le fait d'avoir un grand nombre de particules ne nous garantit absolument pas que la détection est correcte.Par exemple, lorsque la sensibilité tend vers 1, la fonction a tendance à trouver des objets superposés.

Utilisation de la recherche de cercle à une sensibilité proche de 1

 

NB : Les cercles perdent en pertinence si l'image présente des gros clusters. En effet MATLAB recherche des rayons de courbure et de ce fait ne trouve des cercles que sur les contours de l'objet et ignore complètement l'intérieur oubliant ainsi un nombre non négligeable de particules (cf. image_c).

 

L'approche pixel

Dans cette démarche, on considère que la taille d'une particule est identique à la taille d'un pixel. C'est une hypothèse très réaliste d'après les expériences en laboratoire. Pour se placer dans ce cas avec nos images, il faut parfois dégrader la qualité de l'image par un imresize qui compresse. On se retrouve alors avec nos cercles qui se transforment en un carré de pixel. Le processus de traitement d'image est expliqué par les trois images ci-dessous. En première place on peut voir l'image telle qu'on l'importe sous Matlab. En deux, on constate l'effet de la compression, à savoir de la diffusion numérique. On obtient une image en niveau de gris. Il n'est alors pas évident de détecter une particule parmi les différentes échelles de gris présents dans l'image. Pour revenir à l'image 1 en terme de particules, il faut paramétrer un seuil de gris qui convient.  Le résultat se trouve dans la troisième image.  On réalise donc des scripts qui prennent en compte comme variable le seuil de niveau de gris utilisé pour la recherche des objets.

Les trois étapes du traitement d'image en approche pixel : image originale, même image comprimée et même image après compression et choix d'un seuil de gris

 

Cette méthode nous permet de traiter des images d'une complexité supérieur à celle disponible pour la méthode des cercles. Elle n'est en effet pas limité à des sprays dilués contrairement à la méthode utilisant la fonction imfindcircles.

image complexe