Traitement d'images - Comptage des noyaux

10

J'essaie de créer un programme qui peut compter le nombre de noyaux dans une telle image:

entrez la description de l'image ici

Ce que j'ai déjà fait est le suivant, étape par étape:

  1. Appliquer un filtre séquentiel alterné (fermeture et ouverture de l'image avec des éléments structurants progressivement plus gros)
  2. Appliquer une transformation de distance
  3. 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é):

entrez la description de l'image ici

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.

Thiago
la source
3
J'ai parfois ce genre de questions au travail et ... n'y allez pas. Je demande généralement à l'utilisateur de retourner au microscope et d'acquérir des images décentes. Je ne suis pas sûr de pouvoir les compter avec précision à la main. Est-ce une option dans votre cas (refaire la partie imagerie je veux dire)?
Jean-Yves
Idée folle, qui pourrait fonctionner selon le nombre d'images que vous devez analyser et à quelle fréquence, mais sachant que les humains sont meilleurs dans ce genre de chose: essayez d'utiliser Mechanical Turk d'Amazon.
DarenW
Pouvez-vous fournir une vérité fondamentale à votre image? (délimité manuellement par vous) J'ai regardé l'image et franchement je ne peux pas vous dire quels sont les noyaux ou quels sont les artefacts. Y a-t-il des noyaux qui ne sont composés que de plusieurs pixels? Les noyaux supposent être ronds / ellipse? Et finalement, comme l'a souligné @ Jean-Yves, pouvez-vous obtenir une meilleure image? Nous pouvons tous ajuster le contraste et la luminosité, mais nous ne pouvons pas reteindre l'échantillon.
visoft

Réponses:

1

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.

mags
la source
0

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.

Zoran
la source