J'essaie de créer un programme qui peut compter le nombre de noyaux dans une telle image:
Ce que j'ai déjà fait est le suivant, étape par étape:
- Appliquer un filtre séquentiel alterné (fermeture et ouverture de l'image avec des éléments structurants progressivement plus gros)
- Appliquer une transformation de distance
- Appliquer la segmentation du bassin versant à l'aide de l'image transformée en distance pour détecter les minima
Ce qui donne le résultat suivant (où chaque couleur représente un nouveau noyau compté):
Comme nous pouvons le voir, il existe de nombreuses imperfections, en particulier des noyaux sur-comptés. Je dirais que la raison de ce problème est la façon dont j'ai imposé des minima pour la transformation du bassin versant (en utilisant la transformation de distance), mais je n'ai vraiment aucune autre idée d'imposer des minima dans ce cas.
Comme la transformation de distance génère des minima basés sur la rondeur des objets, j'aimerais connaître une meilleure alternative pour arrondir les noyaux que le filtre séquentiel alterné (en regardant l'image ci-dessus, nous pouvons en déduire que la plupart des "overcounts" provenaient de les noyaux moins arrondis). J'aimerais également savoir de meilleures façons d'imposer des minima pour la transformation du bassin versant.
la source
Réponses:
Il existe de nombreux articles sur la façon de gérer le problème de sursegmentation des bassins versants, mais je pense que vous devriez lire Robust Cell Image Segmentation Methods (article scientifique de 2004 par Bengtsson et al).
Il couvre diverses méthodes de segmentation des images cellulaires et comprend des exemples du monde réel qui montrent comment gérer la sursegmentation du bassin versant sur des images de microscopie à fluorescence similaires aux vôtres (il contient également des exemples d'images en fond clair et d'images de microscopie confocale). Il utilise des graines de la transformation de distance, similaire à votre approche, et fusionne les régions avec des frontières faibles. L'article se lit bien et les concepts sont assez simples à implémenter dans Matlab.
Pour une approche encore plus actuelle, vous pouvez lire Un schéma de décomposition pour les objets flous 3D basés sur les informations de distance floue par Svensson. Il utilise une méthode similaire à celle de Bengtsson et al, mais travaille sur la transformée de distance floue qui donne une meilleure représentation de densité pour les objets utilisés dans l'article.
la source
Vous pouvez essayer la "transformation des maxima étendus" qui est une méthode de reconstruction morphologique. Il détecte les points maxima en fonction d'un critère de contraste que vous pouvez inverser et imposer. Il est implémenté dans Matlab.
la source