2011-04-06 1284 views
13

如何从显微镜上拍摄的图像中分割出细胞,沿着Matlab中完成的操作?在Python中进行细胞分割和荧光计数

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

另外,如果我采取不同的荧光信道的多个图像(有一些抗体/制造者染色细胞后),我怎样才能自动定量细胞的阳性每个标记的级分?有没有人在Python中做过这样的事情?还是有Python中的库可以用来做到这一点?

+0

不知道如何把这个放下抱,但试图编辑解决(而挑剔的和不正确的)“关主题“标记。 – 2015-06-09 22:22:31

+0

@bluefeet - 为什么关闭?这是一个具体问题,下面有两个具体答案。我编辑了要求推荐的部分。 – 2015-07-12 04:32:26

+0

@thouis这是为什么关闭?因为这个问题太广泛了,而且还要求一个图书馆。您的编辑删除最后一行基本上无效每个答案就这个问题,只是指向一个链接。关闭一个问题并不意味着它会被删除,但是这个写的问题是无关紧要的。 – Taryn 2015-07-13 14:48:07

回答

6

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

特别,你会感兴趣的以下特点:

  • 直方图拉伸(cv.EqualizeHist)。这是来自当前Python API的missing,但是如果您下载OpenCV的最新SVN版本,则可以使用它。这部分是唯一的,并不需要得到同样的结果
  • image thresholding
  • 形态操作,如erode(也扩张,打开,关闭等)
  • 确定一个blob的轮廓的二进制图像显示的目的使用cv.FindContours - 见this question。它使用C,而不是Python,但API几乎相同,所以你可以从那里学到很多
  • 分水岭分割(使用cv.Watershed - 它exists,但由于某种原因,我在手册中找不到它)

考虑到这一点,这是我会怎么用OpenCV中得到相同的结果MATLAB文章:

  1. 阈值利用经验确定的阈值图像(或大津的方法)
  2. 应用扩大图像以填补空白。任选地,模糊之前的先前阈值步骤的图像 - 这也将使用cv.FindContours
  3. 任选地,paint the contours
  4. 使用blob信息除去小的“洞”
  5. 确定的轮廓,在原始遍历每个斑图像并应用一个单独的阈值对每个斑点以分离细胞核(这是他们的imextendedmax操作做)
  6. 任选地,涂料在细胞核
  7. 应用分水岭变换

我还没有尝试过任何(对不起,现在没有时间),所以我不能告诉你任何代码。然而,根据我对OpenCV的经验,我相信到第7步的所有内容都可以正常工作。我以前从未使用过OpenCV的分水岭转换,但我无法看到它不能在此工作的原因。

尝试执行我已经显示的步骤,并让我们知道您是否有任何问题。一定要张贴您的来源,让更多的人能够帮助您。

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

1

您也可能会发现这个库有用:

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

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

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 – 2015-06-06 21:42:29

+0

@AndrewSvetlov感谢哥们...... 4年前你在哪里告诉我们这件事。 – so12311 2015-06-07 01:13:19

1

而只是为了增加一个:cellprofiler.org(开源的细胞图像分析软件,在python)