Zajmuję się teraz przetwarzaniem obrazów w Pythonie za pośrednictwem PIL (Python Image Library). Moim głównym celem jest zliczenie liczby kolorowych komórek na obrazie immunohistochemicznym. Wiem, że istnieją odpowiednie programy, biblioteki, funkcje i samouczki na ten temat, i sprawdziłem prawie wszystkie z nich. Moim głównym celem jest pisanie kodu ręcznie od zera, w miarę możliwości. Dlatego staram się unikać używania wielu zewnętrznych bibliotek i funkcji. Napisałem większość programu. Oto, co dzieje się krok po kroku:
Program pobiera plik obrazu:
I przetwarza to dla czerwonych krwinek (w zasadzie wyłącza wartości RGB poniżej pewnego progu dla czerwonych):
I tworzy mapę boolowską (wkleisz jej część, ponieważ jest duża), która po prostu umieszcza 1 tam, gdzie napotka czerwony piksel na przetworzonym drugim zdjęciu powyżej.
22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222
Celowo wygenerowałem tę ramkę na granicy z 2s, aby pomóc mi w liczeniu grup 1s na tej mapie boolowskiej.
Moje pytanie do was, dlaczego mogę skutecznie policzyć liczbę komórek (grup 1) na tego rodzaju mapie boolowskiej? Znalazłem http://en.wikipedia.org/wiki/Connected-component_labeling, które wyglądają na bardzo powiązane i podobne, ale o ile widzę, są na poziomie pikseli. Mój jest na poziomie boolowskim. Tylko 1 i 0.
Wielkie dzięki.