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

15 python matlab image-processing scientific-computing scipy

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

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

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

mpe*_*kov 7

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

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

  • 直方图拉伸(cv.EqualizeHist).当前的Python API 缺少此功能,但如果您下载最新的OpenCV SVN版本,则可以使用它.此部分仅用于显示目的,不需要获得相同的结果
  • 图像阈值
  • 形态学操作,如腐蚀(也扩张,开放,关闭等)
  • 使用cv.FindContours确定二进制图像中blob的轮廓- 请参阅此问题.它使用C而不是Python,但API实际上是相同的,所以你可以从中学到很多东西
  • 分水岭分割(使用cv.Watershed- 它存在,但由于某种原因,我在手册中找不到它)

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

  1. 使用经验确定的阈值(或Ohtsu的方法)阈值图像
  2. 对图像应用扩张以填补间隙.可选地,在先前的阈值处理步骤之前模糊图像 - 这也将移除小"洞"
  3. 使用确定轮廓 cv.FindContours
  4. 可选地,绘制轮廓
  5. 使用blob信息,迭代原始图像中的每个blob,并为每个blob应用单独的阈值以分离细胞核(这是他们的imextendedmax操作正在进行的操作)
  6. 可选地,在核中涂漆
  7. 应用分水岭变换

我没有尝试过这些(对不起,现在没有时间),所以我还没有给你看任何代码.但是,根据我对OpenCV的经验,我相信第7步的一切都会运作良好.我之前从未使用过OpenCV的分水岭变换,但我看不出它不能在这里工作的原因.

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

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


lui*_*dro 5

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

http://pythonvision.org/basic-tutorial

它与您要寻找的非常相似。