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

时间:2011-04-06 01:24:24

标签: python matlab image-processing scipy scientific-computing

如何从显微镜拍摄的图像中分割细胞,沿着Matlab中的方式划分?

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

另外,如果我在不同荧光通道中拍摄多个图像(用一些抗体/制造者染色细胞后),我如何自动定量每个标记阳性细胞的比例?有没有人在Python中做过这样的事情?或者Python中是否有可用于执行此操作的库?

4 个答案:

答案 0 :(得分:6)

您可以使用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. 确定大纲
  5. (可选)paint the contours
  6. 使用blob信息,迭代原始图像中的每个blob,并为每个blob应用单独的阈值来分隔细胞核(这是他们的imextendedmax操作正在进行的操作)
  7. 任选地,在核中涂漆
  8. 应用分水岭变换
  9. 我还没有尝试过这些(对不起,现在没有时间),所以我还没有给你看任何代码。但是,根据我对OpenCV的经验,我相信第7步的一切都会运作良好。我以前从未使用OpenCV的分水岭变换,但我看不出它不能在这里工作的原因。

    尝试完成我展示的步骤,如果您有任何问题,请告诉我们。请务必以更多人能够帮助您的方式发布您的来源。

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

答案 1 :(得分:3)

您是否阅读了pythonvision.org上的教程?

http://pythonvision.org/basic-tutorial

它与您正在寻找的非常相似。

答案 2 :(得分:1)

您可能还会发现此库很有用:

https://github.com/luispedro/pymorph/

我发现移动比OpenCV库更容易。

答案 3 :(得分:1)

只需添加一个:cellprofiler.org(开源单元格图像分析软件,在python中)