Emmanuel Caruyer
2023-2024, L3 SIF (ENS Rennes, Université de Rennes)
La segmentation d’une image \(f[x, y]\) correspond au découpage de l’image en un ensemble (fini) de \(k\) zones connexes, qui correspondent aux constituants ou objets présents dans l’image.
On associe généralement une étiquette (ou label en anglais) à chaque zone. La tâche qui consiste à ajouter une sémantique à ce découpage, c’est-à-dire à nommer les objets, s’appelle la reconnaissance ; le cours d’aujourd’hui ne se consacre qu’à la segmentation, c’est-à-dire au découpage.
Le découpage de l’arrière-plan d’une image peut être utile pour :
Le découpage sémantique, ici appliqué à la reconnaissance d’objets sur une route. NB : ici les objets d’une même classe ont été regroupés ; les zones ne sont donc plus forcément connexes.
Les applications sont nombreuses :
En imagerie médicale, la segmentation d’une image peut avoir plusieurs applications :
En microscopie, la segmentation peut permettre de
Le principe d’un algorithme de segmentation se base sur deux propriétés naturelles des images et des objets qu’elle contient :
On va aborder deux techniques qui exploitent respectivement ces deux propriétés pour segmenter un objet dans une image.
La méthode des \(k\)-moyennes est une méthode « globale », qui cherche à partitionner les pixels de l’image en \(k\) sous-ensembles uniquement en fonction des valeurs prise par l’image sur ces pixels. La partition essaie de minimiser la somme des variances à l’intérieur de chacune des \(k\) classes. Si on note \(\mathcal{S} = \{\mathcal{S}_i, i = 1\ldots k\}\) une partition de l’image, on cherche à minimiser
\[ \sum_i \sum_{(x,y)\in \mathcal{S}_i} ||f[x, y] - \mathbf{\mu}_i ||^2, \qquad\text{où les centroïdes sont définis par } \mathbf{\mu}_i = \frac{1}{|\mathcal{S}_i|} \sum_{(x,y)\in \mathcal{S}_i} f[x, y]. \]
L’image peut être à valeurs vectorielles, par exemple pour une image couleur ; c’est pour cette raison qu’on utilise une norme \(||\cdot||\). On remarque que dans le critère qu’on cherche à optimiser, il n’y a aucune référence à la position des pixels dans l’image.
L’algorithme classique des \(k\)-moyennes, aussi algorithme de Lloyd, est un algorithme itératif. Il démarre par une étape d’initialisation, où un centroïde pour chaque classe \(i \in \{1, \ldots, k\}\) est choisi aléatoirement ; puis l’algorithme alterne entre les deux étapes suivantes jusqu’à convergence :
Pour plus de détails sur cette méthode, on pourra se reporter à la description de l’algorithme sur Wikipédia.
Cette méthode est simple, mais comporte un certain nombre de limites pour la segmentation d’images.
Intuitivement, le contour d’un objet dans une image correspond à une zone de discontinuité de la fonction \(f\). On présente dans la suite une méthode qui permet de détecter les contours dans une image de manière
Pour localiser les discontinuités de la fonction \(f\), on va s’intéresser aux variations de \(f\), en particulier au gradient \(\nabla f\) dont on rappelle la définition \[ \nabla f(x, y) = \left[ \begin{array}{c} \partial f/\partial x\\ \partial f/\partial y \end{array} \right]. \]
L’objectif du TP5 est d’implémenter le Détecteur de contour de Canny [2], qui se base sur un calcul du gradient et une méthode de seuillage intelligente.
Zaimi, A., Wabartha, M., Herman, V., Antonsanti, P. L., Perone, C. S., & Cohen-Adad, J. (2018). AxonDeepSeg: automatic axon and myelin segmentation from microscopy data using convolutional neural networks. Scientific reports, 8(1), 1-11.
Canny, J. (1986). A computational approach to edge detection. IEEE Transactions on pattern analysis and machine intelligence, (6), 679-698.