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

标签 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 细胞层:
AP Pigment layer

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

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

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

最佳答案

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

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

  • 使用以下 targetMean 和 tergetSigma 拉伸(stretch) 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 矩形结构元素腐 eclipse 此 BGR 图像一次。
  • 将 kmeans 聚类应用于 k = 2 的侵 eclipse 图像。

  • 我不知道这个分割有多好。我认为可以通过尝试上述参数的不同值(平均值、西格玛、结构元素大小和图像被侵 eclipse 的次数)来获得更好的分割。

    (以下图片不是原图)

    原来的:
    original
    dstretched CIE Lab 转换回 BGR:
    dstretched-cielab
    侵 eclipse :
    eroded
    k=2 的 kmeans:
    labels

    关于python - 在显微镜研究中围绕异质纹理组织绘制边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32319534/

    相关文章:

    python - 具有多个服务器的 Flask-login 如何工作

    python - 如何在 TensorFlow 中使用批量标准化?

    python - OpenCV VideoCapture仅在5个read()之后更新

    python - 具有精确的移动距离和方向变化如何填充OpenCV透视变换矩阵(disparity-to-depth)?

    python - 如何基于坐标更新numpy数组

    python - 检索随机数字时出现类型错误

    javascript - 使用angularjs将json对象传递给python

    opencv - 在OpenCV中在640x480和640x360分辨率之间切换

    java - 分解基本矩阵 : Validation of the four possible solutions for R and T

    c++ - 使用 openCV 检测 ROI