Идеи для сегментации клеток - OpenCV
Я пытаюсь отделить некоторые клетки от микроскопического изображения. Похоже, это так (извините, пока не могу опубликовать фотографии).
Я попробовал пороговое значение Otsu для красного канала (потому что ячейки красные), и он уменьшил большую часть синего фона, но некоторые ячейки объединены в один объект. Результат можно найти здесь в этом альбоме (третье изображение).
Поэтому я попробовал MSER, но результаты были не очень хорошими, он обнаружил маленькие жировые капли, но не целые клетки. Если я использую морфологические операции для соединения этих белых сегментов, он также объединяет некоторые ячейки. Результат можно найти в том же альбоме, на втором изображении.
Из-за разных цветов, как следующий, я попробовал порог HSV вместо MSER. Я применил его на изображении Оцу. Я нашел значения ВПГ окружающего "синего" и сегментировал его. Это уменьшило большинство синих областей вокруг клеток. Для обмолота изображения я использовал findContours, где я использовал только области размером более 300 пикселей. Результат выглядит как последнее изображение в альбоме выше.
У кого-нибудь есть идеи о более "надежном" и полезном методе для такой сегментации клеток? Проблема в различных условиях освещения, где значения HSV различны. Большое спасибо за помощь!
1 ответ
Обычно вы не можете ожидать надежных и точных результатов от простых подходов порогового значения. Возможно, вы захотите попробовать сегментацию водораздела или сегментацию растущего региона в OpenCV.
Вы, вероятно, получите некоторое улучшение, но все же не стоит ожидать невероятных результатов. Надежные подходы, как правило, машинного обучения.
Вам нужно вручную сегментировать некоторые из ваших изображений, а затем обучить классификатор (SVM или случайный лес или нейронную сеть или...), чтобы классифицировать каждый пиксель (или патч) как часть ячейки или нет. Каскадный классификатор может быть хорошим началом, поскольку он реализован в OpenCV.