我正在尝试使用python来计算图像中的一些细胞。我或多或少地遵循了教程here。在阈值步骤之后,我找到区域最大值并对它们进行计数。这对于计算细胞核非常有效,但是也有一些假阳性,包括死亡细胞和我不想计算的细胞碎片。我使用的代码如下:
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从图像中去除小碎片/死细胞的最佳方法是什么,以便获得更好的细胞计数估计?
发布于 2016-06-28 14:59:55
我认为你必须从原始图像开始,以识别假阳性。标记死细胞和其他假阳性的位置,并记录它们产生的斑点的几何属性。如果像大小这样的属性可以显示出明显的差异,那么您就可以很容易地区分它们。
另一种选择是更改参数,如高斯滤波器大小和膨胀操作符大小。
如果这些都不起作用,推荐的选择是使用大量的显微图像,并基于它们训练机器学习系统。
https://stackoverflow.com/questions/38063419
复制相似问题