Python中的细胞分割与荧光计数

2024-05-16 12:15:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何从显微镜上拍摄的图像中,沿着在Matlab中所做的行来分割细胞?

http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/

另外,如果我在不同的荧光通道中拍摄多幅图像(用某种抗体/标记物染色细胞后),如何自动量化每个标记物的阳性细胞比例?有人用Python做过这样的事情吗?或者在Python中有一个库可以用来做这件事吗?


Tags: 标记图像comhttpcell细胞steve荧光
3条回答

您可以使用OpenCV库在Python中执行此操作。

特别是,您将对以下功能感兴趣:

  • 直方图拉伸(cv.EqualizeHist)。这是当前Python API的missing,但是如果您下载了OpenCV的最新SVN版本,就可以使用它。此部分仅用于显示目的,不需要获得相同的结果
  • image thresholding
  • 形态操作,如erode(也包括扩张、打开、关闭等)
  • 使用cv.FindContours确定二进制图像中blob的轮廓——请参见this question。它使用的是C,而不是Python,但是api实际上是相同的,因此您可以从中学习很多东西
  • 分水岭分割(使用cv.Watershed——它exists,但由于某种原因,我在手册中找不到它)

考虑到这一点,下面是我将如何使用OpenCV获得与matlab文章中相同的结果:

  1. 使用经验确定的阈值(或Ohtsu方法)对图像设置阈值
  2. 对图像应用膨胀来填充间隙。或者,在上一个阈值步骤之前模糊图像——这也将移除小的“洞”
  3. 使用cv.FindContours确定轮廓
  4. 可选,paint the contours
  5. 使用blob信息,迭代原始图像中的每个blob,并为每个blob应用单独的阈值来分离细胞核(这就是它们的imextendedmax操作所做的)
  6. 可选地,在细胞核中绘制
  7. 应用分水岭变换

我还没有试过这些(抱歉,现在没有时间),所以我还不能给你显示任何代码。不过,根据我在OpenCV方面的经验,我相信到步骤7为止的一切都会很好地工作。我以前从未使用过OpenCV的分水岭变换,但我看不出它不在这里工作的原因。

试着完成我展示的步骤,如果你有任何问题请告诉我们。一定要公布你的来源,因为这样更多的人将能够帮助你。

最后,要回答你关于染色细胞和量化它们存在的问题,很容易知道你使用的染料。例如,要确定用红色染料染色的细胞,您需要从图像中提取红色通道并检查高强度区域(可能通过阈值)。

再加一个:cellprofiler.org(python中的开源单元格图像分析软件)

你读过pythonvision.org上的教程吗?

http://pythonvision.org/basic-tutorial

它和你要找的非常相似。

相关问题 更多 >