Компьютерное зрение: как убрать мусор при подсчете клеток?
Я пытаюсь использовать python для подсчета некоторых клеток в изображении. Я более или менее следую этому уроку. После шага по порогу я нахожу региональные максимумы и считаю их. Это очень хорошо работает для подсчета ядер, однако есть некоторые ложные срабатывания, включая мертвые клетки и фрагменты клеток, которые я не хочу считать. Код, который я использовал:
import mahotas as mh
import numpy as np
from matplotlib import pyplot as plt
dna = mh.imread('img.jpg')
dna = dna[:,:,0]
dnaf = mh.gaussian_filter(dna.astype(float), 4)
maxima = mh.regmax(mh.stretch(dnaf))
maxima = mh.dilate(maxima, np.ones((5,5)))
plt.imshow(mh.as_rgb(np.maximum(255*maxima, dnaf), dnaf, dna > T_mean))
plt.show()
И изображение ниже. Мертвые клетки находятся внизу справа и слева от центра. Ложные срабатывания - большие красные пятна
Могу ли я отфильтровать эти ложные срабатывания? Я пытался получить размеры всех регионов и фильтровать их по размеру, но результаты выглядят странно, когда я беру региональные максимумы.
dnaf = mh.gaussian_filter(dna.astype(float), 4)
sizes = mh.labeled.labeled_size(dnaf)
too_small = np.where(sizes < 800)
dnaf = mh.labeled.remove_regions(dnaf, too_small)
maxima = mh.regmax(mh.stretch(dnaf))
maxima = mh.dilate(maxima, np.ones((5,5)))
plt.imshow(mh.as_rgb(np.maximum(255*maxima, dnaf), dnaf, dna > T_mean))
plt.show()
Это только избавило от одного из ложных срабатываний и исказило изображение в нескольких других местах (см. Ниже), заставив меня думать, что я сделал что-то не так.
Опять же, это изображение находится в другом месте, чем первое, но оно выглядит искаженным по сравнению с оригиналом, и фрагменты мертвых клеток все еще остаются, поэтому я уверен, что я не делаю это правильно.
Поэтому мой вопрос заключается в том, как лучше всего использовать python для удаления мелких частиц / мертвых клеток с изображения, чтобы получить лучшую оценку количества клеток?
1 ответ
Я думаю, что вы должны начать с исходного изображения, чтобы выявить ложные срабатывания. Отметьте местоположение мертвых клеток и других ложных срабатываний и запишите геометрические свойства сгустков, которые они производят. Если такие свойства, как размер, могут показать явную разницу, вы можете легко их различить.
Другой вариант - изменить параметры, такие как размер фильтра Гаусса и размер оператора расширения.
Если ничего из этого не помогло, рекомендуется использовать большое количество микроскопических изображений и обучать систему машинного обучения на их основе.