Je m'occupe actuellement d'un traitement d'image en Python via PIL (Python Image Library). Mon objectif principal est de compter le nombre de cellules colorées dans une image d'immunohistochimie. Je sais qu'il existe des programmes, des bibliothèques, des fonctions et des didacticiels pertinents à ce sujet, et j'ai vérifié presque tous. Mon objectif principal est d'écrire le code manuellement à partir de zéro, autant que possible. Par conséquent, j'essaie d'éviter d'utiliser de nombreuses bibliothèques et fonctions extérieures. J'ai écrit la plupart du programme. Voici donc ce qui se passe pas à pas:
Le programme prend le fichier image:
Et le traite pour les globules rouges (en gros, il désactive les valeurs RVB en dessous d'un certain seuil pour le rouge):
Et crée la carte booléenne de celui-ci (je vais en coller une partie car il est grand) qui met simplement 1 à chaque fois qu'il rencontre un pixel rouge dans la deuxième image traitée ci-dessus.
22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222
J'ai intentionnellement généré ce trame comme une chose sur les bordures avec 2 pour m'aider à compter le nombre de groupes de 1 dans cette carte booléenne.
Ma question est la suivante: comment se fait-il que je puisse compter efficacement le nombre de cellules (groupes de 1) dans ce type de carte booléenne? J'ai trouvé http://en.wikipedia.org/wiki/Connected-component_labeling qui semble extrêmement apparenté et similaire, mais pour autant que je vois, c'est au niveau des pixels. Le mien est au niveau booléen. Juste 1 et 0.
Merci beaucoup.