Я сейчас занимаюсь обработкой изображений в Python через PIL (Python Image Library). Моя главная цель - подсчитать количество цветных клеток на изображении иммуногистохимии. Я знаю, что есть соответствующие программы, библиотеки, функции и учебники об этом, и я проверил почти все из них. Моя главная цель - как можно больше писать код с нуля вручную. Поэтому я стараюсь избегать использования множества внешних библиотек и функций. Я написал большую часть программы. Итак, вот что происходит шаг за шагом:
Программа берет в файл изображения:
И обрабатывает его для красных клеток (в основном, это отключает значения RGB ниже определенного порога для красных):
И создает его булеву карту (вставит ее часть, поскольку она большая), которая в основном просто помещает 1, где бы он ни встречался, с красным пикселем на обработанном втором изображении выше.
22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222
Я намеренно сгенерировал эту похожую на кадр вещь на границах с двумя единицами, чтобы помочь мне подсчитать количество групп единиц на этой булевой карте.
У меня вопрос к вам, ребята, почему я могу эффективно подсчитать количество ячеек (групп 1) в такой логической карте? Я нашел http://en.wikipedia.org/wiki/Connected-component_labeling, которые выглядят очень похожими и похожими, но, насколько я вижу, это на уровне пикселей. Мой на логическом уровне. Просто 1 и 0.
Большое спасибо.