在显微镜研究中绘制围绕异质纹理组织的边界

时间:2015-08-31 20:34:29

标签: python opencv

我正在整理一个OpenCV脚本来分析免疫组织化学染色的心脏组织。我们的染色程序使细胞类型在其质膜中表达某些蛋白质,并在光学显微镜下可见颜料,我们用它来拍摄图像。

到目前为止,我已成功使用OpenCV社区(http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html)提供的经常引用的颜色分段脚本的修改版本,根据颜色范围将图像分割到不同的图层。

原始图像的屏幕截图: Original Image of heart tissue

显示B-Cell层: AP Pigment layer

此时,我想计算B细胞面积与未染色组织的比率。此操作根据颜色范围提示提取背景单元层: tissue background

显然,这些结果还有很多不足之处。

有没有人知道如何解决这个问题?再次,我想分割背景组织(透明)层,不幸的是,它在纹理上相当海绵状。我的目标是创建一个代表未染色组织区域的面罩。似乎模糊技术是填补组织间隙所必需的,但这种方法所带来的准确性损失是显而易见的。

1 个答案:

答案 0 :(得分:2)

在样本图像中,通道看起来高度相关。如果对图像应用去相关拉伸,您应该能够看到更多细节。 Here在我的博客文章中,我用C ++实现了解相关 - 拉伸(不幸的是不是Python)。

使用博客中的示例代码,我执行以下操作来细分单元格区域:

  • 使用以下targetMean和tergetSigma来扩展CIE Lab图像。

    float mu[3] = {128.0f, 128.0f, 128.0f};
    float sd[3] = {128.0f, 5.0f, 5.0f};
    Mat mean = Mat(3, 1, CV_32F, mu);
    Mat sigma = Mat(3, 1, CV_32F, sd);
    
  • 将dstretched CIE Lab图像转换回BGR。
  • 使用3x3矩形结构元素侵蚀此BGR图像一次。
  • 使用k = 2将kmeans聚类应用于此侵蚀图像。

我不知道这种细分有多好。我认为通过尝试上述参数的不同值(平均值,sigma,结构元素大小和图像被侵蚀的次数)可以获得更好的分割。

以下图片未达到原始比例

原件: original 将CIE实验室转换回BGR: dstretched-cielab 侵蚀: eroded k = 2的kmeans: labels