Зараз я маю справу з деякою обробкою зображень на Python через PIL (Python Image Library). Моя основна мета - підрахунок кількості кольорових клітин на зображенні на імуногістохімії. Я знаю, що про це є відповідні програми, бібліотеки, функції та навчальні посібники, і я перевірив майже всі їх. Моя головна мета - написати код вручну з нуля, наскільки це можливо. Тому я намагаюся уникати використання безлічі зовнішніх бібліотек та функцій. Я написав більшу частину програми. Отже ось що відбувається покроково:
Програма приймає у файл зображення:
І обробляє його для червоних комірок (в основному він вимикає значення RGB нижче певного порогу для червоних):
І створює булеву карту його (збираю частину її, оскільки вона велика), яка в основному просто ставить 1, де б не стикався з червоним пікселем на обробленому другому зображенні вище.
22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222
Я навмисно генерував цей кадр, як річ на кордонах з 2-х, щоб допомогти мені підрахувати кількість груп 1 в цій булевій карті.
Моє запитання до вас, хлопці, як я можу ефективно підрахувати кількість комірок (груп по 1s) у такій булевій карті? Я знайшов http://en.wikipedia.org/wiki/Connected-component_labeling, які виглядають надзвичайно пов'язаними та подібними, але, наскільки я бачу, це на рівні пікселів. Шахта знаходиться на булевому рівні. Всього 1 і 0.
Дуже дякую.