Ich beschäftige mich gerade mit der Bildverarbeitung in Python über PIL (Python Image Library). Mein Hauptziel ist es, die Anzahl der gefärbten Zellen in einem immunhistochemischen Bild zu zählen. Ich weiß, dass es relevante Programme, Bibliotheken, Funktionen und Tutorials gibt, und ich habe fast alle überprüft. Mein Hauptziel ist es, den Code so weit wie möglich manuell von Grund auf neu zu schreiben. Daher versuche ich, viele externe Bibliotheken und Funktionen zu vermeiden. Ich habe den größten Teil des Programms geschrieben. Also hier ist, was Schritt für Schritt vor sich geht:
Programm nimmt die Bilddatei auf:
Und verarbeitet es für die roten Zellen (im Grunde werden die RGB-Werte unter einem bestimmten Schwellenwert für Rot deaktiviert):
Und erstellt die boolesche Karte davon (ich werde einen Teil davon einfügen, da es groß ist), die im Grunde genommen nur 1 setzt, wo immer es auf ein rotes Pixel im verarbeiteten zweiten Bild oben stößt.
22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222
Ich habe dieses rahmenartige Element absichtlich an den Rändern mit 2 generiert, um die Anzahl der Einergruppen in dieser booleschen Karte zu ermitteln.
Meine Frage an euch ist, wie kommt es, dass ich die Anzahl der Zellen (Einergruppen) in einer solchen booleschen Karte effizient zählen kann? Ich habe http://en.wikipedia.org/wiki/Connected-component_labeling gefunden, das sehr ähnlich und ähnlich aussieht, aber soweit ich das sehe, liegt es auf Pixelebene. Meins ist auf der booleschen Ebene. Nur 1s und 0s.
Danke vielmals.