L'approche image

L'exploitation numérique a été réalisé avec le logiciel Matlab. C'est un outil que nous maîtrisons bien de part les différents projets réalisés avec tout au long de notre scolarité.

Les images que nous récupérons pour ce projet sont de diverses origines. Nous avons par exemple pris des images dans des articles publiés sur le sujet mais aussi des images transmises par Jérôme Hélie (Continental) qui proviennent d'expériences en laboratoire. De ce fait nous devons mettre en place un traitement qui uniformise nos sujets d'étude.

Dans cette partie, nous évoquerons les moyens mis en place pour le traitement numérique de l'image puis la recherche des objets présents dans l'image.

Image de spray réel fournie par J. Hélie, ContinentalImage_b, St = 0.2, Pozorski & al. [8]

Traitement de l'image

Comme il a été dit précédemment, les images à traiter sont de diverses provenances. Cela nous contraint à faire un traitement d'image pour uniformiser le problème. Les images que l'on a rencontré proviennent soit d'expériences soit de simulations numériques soit sont récupérées sur des articles qui traitent du même problème. Les différences sont flagrantes entre toutes. On peut avoir dans le cas de simulations numériques ou d'articles des particules parfaitement isolées et bien rondes mais dans le cas de photos expérimentales on voit plutôt des zones de différentes densités sans reconnaître la forme d'une particule. La qualité des images que l'on a récupéré est aussi très variable. Or pour faciliter la recherche d'objet, il est nécessaire que l'image soit d'une définition assez fine. 

Tout ceci nous amène à parler des différentes fonctions sous Matlab qui permettent de traiter l'image aussi bien pour la conversion de l'image que pour la gestion du contraste.

 

Traitement de l'image

  • Conversion de l'image

Les images récupérées de l'expérience sont au format PNG mais on a aussi des images au format JPG ou TIFF. Les différences du côté de l'analyse d'objets obligeraient à avoir un script pour chaque format d'image ce qui n'est pas envisagé. On cherchera donc à exploiter l'image sous forme d'une matrice de format N*M où N et M seront assez élevées pour une bonne définition de l'image et où les scalaires dans la matrice seront compris entre 0 et 1.

Pour les formats PNG et TIFF on peut utiliser la fonction im2single qui redistribue les valeurs de la matrice, déjà au format N*M, entre 0 et 1 sans perte de qualité.

Pour le format JPG qui est codé en RGB - soit en 3 matrices N*M - on utilise la fonction rgb2gray qui crée la matrice N*M.

On utilisera aussi la fonction imresize qui permettra de rechercher des objets de plus grandes tailles en agrandissant simplement l'image pour la recherche de cercle ou de diminuer l'image pour l'approche pixel.

 

  • Gestion du contraste

Pour la suite, les opérations n'ont pour objectif que d'adapter l'image aux fonctions de recherche d'objet que l'on utilise. Notamment l'usage de la fonction im2bw qui permet de passer en image binaire noir ou blanc, inévitable pour la recherche d'objet. Cette fonction sera délicate à mettre en pratique par la présence d'un seuil à fixer par l'utilisateur. Cette problématique fait l'objet d'une étude de sensibilité plus bas dans la page. La fonction incomplement qui inverse le noir en blanc et vis versa. Les fonctions de recherche d'objet trouvent en général les objets blancs.

Une fonction qui sera particulièrement utile pour la gestion du contraste lors du traitement d'image provenant d'expériences est imadjust. Elle permet de sélectionner sur l'image initiale la bande de gris qui nous intéresse en éliminant le reste puis de la restituer sous forme dilatée. Le rendu est par exemple celui-ci :

Image de spray réel fournie par J. Hélie, ContinentalMême image, après utilisation de imadjust

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