Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 忽略边界的颜色反褶积后识别正像素_Opencv_Computer Vision_Scikit Image - Fatal编程技术网

Opencv 忽略边界的颜色反褶积后识别正像素

Opencv 忽略边界的颜色反褶积后识别正像素,opencv,computer-vision,scikit-image,Opencv,Computer Vision,Scikit Image,我正在分析用特定蛋白质标记物染色的组织学图像,我想确定该标记物的阳性像素。我的问题是,对图像进行阈值处理会产生太多的误报,我想排除这些误报 我正在使用颜色反褶积(separate_stainsfromskimage.color)来获得AEC通道(对应于红色标记),将其与背景(苏木精蓝色)分离,并应用cv2 Otsu阈值来使用cv2.threshold>识别正像素(blur,0255,cv2.THRESH_BINARY+cv2.THRESH_OTSU),但它也在拾取组织边界(参见示例图片中的白线,

我正在分析用特定蛋白质标记物染色的组织学图像,我想确定该标记物的阳性像素。我的问题是,对图像进行阈值处理会产生太多的误报,我想排除这些误报

我正在使用颜色反褶积(
separate_stains
from
skimage.color
)来获得AEC通道(对应于红色标记),将其与背景(苏木精蓝色)分离,并应用cv2 Otsu阈值来使用
cv2.threshold>识别正像素(blur,0255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
,但它也在拾取组织边界(参见示例图片中的白线,有时它甚至具有非白色的随机颜色),有时甚至是非阳性细胞(示例图片中的蓝色区域).它还缺少一些我想捕捉的微弱的正像素

总体而言:(1)如何过滤假阳性组织边界和蓝色像素?以及(2)如何调整大津阈值以捕获微弱的红色阳性

添加修改后的示例图像-

  • 左上角使用HistoQC识别组织区域后的原始图像,并在组织上应用其识别的遮罩,以使所有非组织区域均为黑色。我应tru调整其参数,以排除看起来更暗的折叠组织区域(此图像左下角)。欢迎对识别组织区域的其他工具提出建议
  • 反褶积后的右上苏木精
  • 反褶积后的左下角AEC
  • 右下角Otsu阈值不应用原始RGB图像,尝试仅捕获AEC正像素,但也显示假阳性和假阴性
  • 感谢您将ML用于此案例

  • 为图片手动创建二进制掩码:每个红色像素-白色,背景像素-黑色
  • 在HSV或实验室颜色空间工作
  • 训练简单分类器:决策树或SVM(线性或带RBF)
  • 让我们测试一下
  • 请参阅一个很好且非常简单的示例


    将来,您可以添加新示例和新案例,而无需代码重构:只需更新数据集和重新培训模型。

    我最终将Chris给出的一些反馈合并到以下可能的非常规解决方案中,我希望获得反馈(针对以下具体问题,以及改进或更有效/准确的工具或策略的一般建议):

  • 优化HistoQC脚本后定义(但尚未应用)组织面膜(HistoQC),以在不移除正常组织区域的情况下移除尽可能多的组织折叠
  • 使用hax_from_RGB对原始RGB图像应用反褶积
  • 使用第二个通道对应于红色着色像素,并从中减去第三个通道,据我所见,第三个通道对应于图像的背景非红色/蓝色像素。此步骤删除第二个通道中的高值,该高值是由于第一个通道中未移除的组织折叠或其他瑕疵造成的步骤(第三个通道对应什么?RGB的绿色元素?)
  • 根据图像的中值加20模糊调整后的图像和阈值(半任意但有效。有更好的替代方案吗?大津根本不起作用)
  • 在阈值图像上应用组织区域遮罩,仅产生正的红色/红色像素,而不产生非组织区域
  • 计算相对于组织遮罩区域的正像素百分比
  • 如上所述,我一直尝试在反褶积红色通道输出上应用组织遮罩,然后使用Otsu阈值。但由于应用组织区域遮罩产生的黑色背景使Otsu阈值检测到整个组织为阳性,因此我继续在t上应用阈值他调整了红色通道,然后在计算正像素数之前应用了组织遮罩。我很想知道我做错了什么


    除此之外,对数转换似乎效果不好,因为它产生了大量拉伸的亮段,而不仅仅是细胞所在的圆形斑点。我不确定为什么会发生这种情况。

    有几个问题会导致不正确的量化。我将详细介绍我建议您如何解决这些问题幻灯片

    我之所以使用,是因为我对它最熟悉(我是作者)。它有Python绑定,我在这里使用,但这些绑定不能与
    pip
    一起安装,库需要单独安装。但是,这些都不是复杂的图像处理,您应该能够与其他库进行类似的处理

    加载图像 这里没有什么特别的,除了图像有强烈的JPEG压缩伪影,这会干扰斑点分解。我们通过使用一个小的高斯滤波器平滑图像来帮助处理

    将PyDIP作为dip导入
    将numpy作为np导入
    image=dip.ImageRead('example.png')
    image=dip.Gauss(image[1])#因为JPEG压缩伪影严重
    
    色斑分解 [个人注释:我发现很不幸,该研究的作者Ruifrok和Johnston称之为“反褶积”,因为该术语在图像处理中已经有了明确的含义,特别是在与显微镜的结合中。我总是将其称为“染色分解”,而不是“反褶积”。]

    这应该始终是从bightfield图像量化的第一步。这里需要确定三个重要的RGB三元组:背景的RGB值(即光源的亮度)和每个污点的RGB值。分解过程有两个部分:

    首先我们应用映射。这个映射