HistoQC|病理切片的质量控制工具

news2024/11/24 11:46:48

小罗碎碎念

这期推文介绍的内容,我相信研究病理组学的人,一定都非常熟悉——HistoQC——病理切片的质量控制。

之前写过Hover Net系列的推文,反响还可以,但是Hover Net是用于细胞核检测和分类的,直接从这里开始还不够系统,所以我想了想,还是觉得要从头开始。

最开始要做的,就是数据收回来以后,怎么处理?为了保证模型的准确性,最开始要做的就是把质量差的数据剔除(类似于临床数据的纳入排除标准),所以这一期推文介绍的就是如何批量筛除质量差的切片

另外,这篇文章并不是教你怎么用哈,只是给你梳理一下知识背景,让你系统的了解一下这个工具而已。


这篇文章介绍了一个名为HistoQC的开源工具,它用于对数字病理切片进行质量控制。

数字病理(DP)指的是组织切片的数字化,这一技术正在改变临床诊断工作流程,并在计算病理学领域引起了积极的研究。

HistoQC工具的主要目的是自动识别和描绘数字切片中的伪影,并发现队列级别的异常情况(例如,与其他切片相比,染色过深或过浅的切片)。这个工具结合了图像度量(如颜色直方图、亮度、对比度)、特征(如边缘检测器)和监督分类器(如笔迹检测),通过交互式图形用户界面向用户展示无伪影区域和度量,使用户能够通过实时可视化和过滤来检测伪影。用户还可以明确定义他们工作流程中可接受的容差。

HistoQC在450张来自癌症基因组图谱(The Cancer Genome Atlas)的切片上进行了测试,由两位病理学家进行了评审,结果表明,超过95%的情况下,HistoQC的输出适合进行计算分析。这表明HistoQC可以为识别伪影和测量切片质量提供一个自动化、可量化的质量控制流程,从而帮助提高DP工作流程的重复性和稳健性。

文章还讨论了HistoQC的潜在改进空间,包括检测压缩效果、整合更多特征,以及扩展到其他类型的多模态显微镜图像。此外,作者希望HistoQC能够成为一个社区驱动的参考实现集合,包括复杂的检测器和度量方法。

HistoQC的源代码是公开可用的,可以自由使用、修改和贡献。


一、引言

精准的疾病诊断通常依赖于病理学家在显微镜下对组织切片的视觉检查。在此之前,必须先创建组织切片。这一过程包括大体器官解剖、选择和准备用于制作切片的组织块、显微切片(切割并将组织放置在玻片上)、染色和封片,存在许多分析前引入人为误差和批次效应的机会[1-3]。

这些人为误差可能包括:

  • 不正确的组织放置(例如,折叠、压缩、撕裂、气泡)
  • 不正确的试剂(例如,过度或不足染色、染料浓度差异、染料批次变化)
  • 较差的显微切片(例如,刀片颤动、厚度差异)

对这些切片进行日益流行的数字化处理,以便利用计算机辅助诊断方法[4-6],例如,又引入了另一种潜在的人为误差源。这一数字化过程将通常用于显微镜病理学的玻璃切片放置在相当于数码相机上,以构建切片的数字表示。扫描机制造商可能采用不同的方法进行切片数字化,包括不同的硬件(例如,照明用的灯泡、数字化用的电荷耦合器件芯片)和图像处理算法(例如,拼接、压缩)以及文件格式。因此,切片扫描仪的选择可能会影响图像外观,进而可能对任何后续的图像分析程序产生影响[7]。

这些数字病理学(DP)切片可能还会包括数字化误差,如模糊、照明和对比度问题。总的来说,存在多种不同的来源组合,可能导致组织切片的外观和质量产生重大差异。


这些同样的人为误差和差异可能会对下游的临床和研究工作流程产生负面影响[8]。

在当今使用的模拟工作流程中,连续质量控制(QC)过程是有限的,与实验室医学依赖的连续统计过程控制不同。临床上,因质量原因被拒绝的切片会拖慢临床病理工作流程,因为需要重新切割或重新扫描这些切片,从而造成额外的延误和不必要的成本。

从研究的角度来看,人为误差是噪声的来源,可能会不利地影响疾病检测、诊断和预后等任务的解析分类器的开发和验证[9,10]。这对于日益流行的深度学习和机器学习方法尤为重要[11-16],这些方法依赖于良好注释且相对无误差的图像来学习特定疾病的表示。


目前,大多数临床和研究应用的质量控制过程都是手动进行的,这使得过程具有主观性、劳动强度大且容易出错。

例如,尽管TCGA托管的30,000个数字化组织切片的图像在引入TCGA之前经过了手动质量控制,但在许多切片中仍可以看到广泛的人为误差和图像质量(图1)。

在这里插入图片描述

图中并列显示了原始的组织切片图像和HistoQC分析后的对应图像,其中品红色(fuchsia)表示可接受的组织区域。

(A) 显著的气泡伪影:HistoQC识别出一个需要从实验队列中移除的显著气泡伪影。气泡伪影可能会影响图像分析的准确性,因为它们可能与实际的组织结构相混淆。

(B) 盖玻片裂缝附近的模糊组织:HistoQC检测到盖玻片裂缝附近存在模糊的组织区域。模糊可能是由于切片过程中的技术问题或者扫描过程中的焦点问题造成的,这会影响图像的清晰度和分析质量。

© 折叠的组织:HistoQC识别出组织折叠的情况。组织在制备过程中可能会发生折叠,这会导致图像中出现不连续的区域,影响图像分析。

(D) 笔迹标记:HistoQC正确地识别出应避免的笔迹标记区域。这些标记可能是在切片的制备或标记过程中留下的,它们不是组织的一部分,可能会干扰图像分析。

这些分析结果表明HistoQC能够有效地识别出可能影响病理学图像分析的伪影和异常区域,帮助提高数字病理图像的质量控制。通过这些可视化的结果,用户可以快速识别出问题区域,并决定是否需要对切片进行重新制备或扫描。


这篇文献介绍了一个开源质量控制应用程序HistoQC,用于自动评估切片质量,以及一个包含人为误差的切片公共存储库。

HistoQC结合了图像度量(例如,颜色直方图、亮度、对比度)、特征(例如,边缘和平滑度检测器)和监督分类器(例如,笔检测),以帮助用户识别具有明显技术误差的切片、可能不适合计算分析的受误差影响的区域(数据补充提供了当前的分类器和度量列表)以及可能受批次效应影响的样本。

此外,HistoQC的模块化特性允许轻松嵌入额外的度量和误差检测算法


二、方法

2-1:HistoQC的工作原理

用户提供一个配置文件,定义QC流程的参数,例如执行哪些模块以及顺序。

当基于Python的流程在切片上执行时,将创建相关的输出图像(例如,缩略图显示潜在的模糊区域),并将元数据(例如,扫描仪类型、放大倍数、每像素微米数)和度量保存在一个制表符分隔的值文件中。按照设计,可以在整个切片上(即包括背景)或仅限于包含检测到组织的区域计算图像度量。

虽然任何常用的数据分析工具都可以用来审查制表符分隔的值输出(例如,Matlab [MathWorks, Natick, MA], Excel [Microsoft, Redmond, WA], R [R Foundation, Vienna, Austria]),但作者开发了一个基于HTML5的用户界面(图2),可以无缝地实现数据的实时可视化和过滤。


2-2:HistoQC用户界面的几个关键功能和组件

FIG 2展示了HistoQC用户界面的几个关键功能和组件,这些功能使得用户能够高效地进行质量控制和图像分析:

(A) 用户界面展示:

image-20240625194924908

  • 表格:HistoQC生成的度量指标以表格形式展示,具有可排序的列(绿色箭头指示)。这允许用户根据不同的度量标准对切片进行排序和筛选。
  • 平行坐标图(红色框内):这是一种可视化工具,用于展示切片的多个度量指标,帮助用户识别批次效应和异常值。具体的度量指标和它们的视觉表示将在图3中给出更多细节。
  • 缩略图:显示了整个队列的缩略图,以及HistoQC叠加输出,指示无伪影区域(蓝色箭头指示)。这为用户提供了一个快速概览,以识别可能需要进一步审查的切片。

(B) 选择单个图像:

在这里插入图片描述

  • 当用户在界面上选择单个图像时,平行坐标图中相应的线条会被突出显示。这有助于用户在平行坐标图中追踪和识别所选图像的度量指标。
  • 同时,界面会展示该图像由HistoQC流水线模块生成的一系列输出结果。这允许用户对选定的切片进行更详细的审查和分析。

© 双击图像:

image-20240625195053126

  • 用户可以通过双击任何图像来打开一个更高分辨率的版本,该版本具有动态缩放功能。这使得用户能够对潜在的伪影进行精细调整的检查。
  • 动态缩放功能对于识别和分析图像中的微小细节非常有用,尤其是在评估图像质量或伪影对分析可能产生的影响时。

在用户使用注释字段注释行或从表中删除行之后,可以保存结果表,并将其用作适合下游实验的样本列表。在安装后,不需要互联网连接,使得这个模型特别适用于非匿名临床数据。


三、结果

为了验证HistoQC生成的结果,邀请了两位具有DP经验的病理学家对HistoQC生成的每个掩模进行评估,将其分为可接受或不可接受。

可接受性定义为病理学家的视觉评估与HistoQC对无误差组织的计算评估之间至少有85%的区域重叠。每位病理学家独立审查了250个样本。

此外,两位病理学家和HistoQC共同评估了来自TCGA的50张图像,以确定对HistoQC输出的专家间一致性。总体而言,HistoQC与专家1的总体一致性为94%(250个中的235个),与专家2的一致性为97%(250个中的242个)。对于两位专家共同评估的50张切片,观察者间一致性为96%(50个中的48个),与HistoQC与个别读者的比较相当。

不一致的主要原因是染色较淡的切片导致组织检测失败,以及一些主要富含间质的区域被错误地识别为模糊(数据补充)。这些失败在HistoQC用户界面表现为异常值,主要是由于度量(例如,估计的组织面积)与所分析切片的其余部分相关的标准差数量级不同。


病理学家还提供了关于HistoQC似乎错误识别为受损或不受损的病例模式的定性反馈。这些病例通常分为三类:

  • 固定不良的组织
  • 坏死组织
  • 微妙的脂肪组织浸润伴少量组织反应

HistoQC在完全识别粘液瘤中的实质方面有时也遇到困难。作者正在努力进一步改进HistoQC,以解决这些局限性,并在下一个版本中予以解决。

【PS:文章于19年发表,我们在Github上可以看到,最新的一版更新于21年5月】

在这里插入图片描述


四、讨论

总结来说,作者提出并发布了一个名为HistoQC的开源DP切片质量控制工具。

4-1:HistoQC适用于界定切片级别的误差

将HistoQC与两位病理学家对450张图像的手动质量控制进行比较,平均一致性超过95%,与两位个别人类读者之间的同意范围相当。此外,HistoQC计算出的图像度量可以被研究人员和分析流程开发者用来精确定义他们的算法所训练和验证的输入图像特征。这些图像特征的严格规范使得算法可以选择性地仅在适当的图像上调用,这可能会提高算法的置信度。

DP工作流程正处于利用强大的计算机辅助诊断(CAD)支持算法的边缘,这可能会大大减少观察者内部和观察者之间的诊断变异性。正如最近的一些出版物所揭示的,许多CAD和人工智能(AI)算法在对其初始训练图像集之外的队列进行评估时,似乎不具有很好的泛化能力。

因此,这些AI和CAD算法必须在大量的异构输入上进行稳健的验证。像HistoQC这样的方法可以允许对测试集进行预评估,以确保CAD和AI算法在足够多样化的测试图像上进行评估。


4-2:HistoQC需要进一步改进的地方

例如,由于DP扫描仪之间通常存在的压缩水平异质性,以及压缩误差影响深度学习和AI算法性能的证据,HistoQC可以扩展到检测和测量压缩效果。

在需要整合更多特征的基础上,作者设想HistoQC将发展成为一个由社区驱动的复杂检测器和度量标准参考实现的集合。例如,Senaras等人提出了一种基于深度学习的模糊检测器,Avanaki等人提出了一种基于纹理的图像质量度量。作者希望这些类型的算法在未来能够嵌入到HistoQC中,以实现不同站点和实验室之间结果的比较。

本文所展示的工作重点是对HistoQC在苏木精和伊红明场显微镜图像背景下的评估。显然,还需要在其他类型的多元显微镜图像,如免疫组织化学染色和定量免疫荧光中应用质量控制度量。最后,作者希望汇集用户社区在使用HistoQC过程中识别的独特误差。作者已经建立了一个图像质量存储库,允许终端用户上传包含误差的切片。这个存储库将帮助提供未来CAD方法的基准测试所需的训练和验证材料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用程序任务驱动:详细解析LLM的评估指标

在自然语言处理(NLP)的动态环境中,大型语言模型(LM)性能的评估是衡量其在各种下游应用程序中的有效性的关键因素。不同的应用程序需要与其目标一致的不同性能指标。本文将详细介绍各种LLM评估指标,探索它们如何应用于实际场景。 从传统的摘要任务到更细…

华三中小企业组网

一、组网需求 在中小园区中,S5130系列或S5130S系列以太网交换机通常部署在网络的接入层,S5560X系列或 S6520X系列以太网交换机通常部署在网络的核心,出口路由器一般选用MSR系列路由器。 核心交换机配置VRRP保证网络可靠性。园区网中不同的…

python flask 入门-helloworld

学习视频链接: 01-【前奏】课程介绍_哔哩哔哩_bilibili 1.安装flask pip install flask 踩坑记:本机不要连代理,否则无法install 提示报错valueError: check_hostname requires server_hostname 2.程序编写 在根目录下创建 app.py fr…

深入探讨C++的高级反射机制(2):写个能用的反射库

在现代软件开发中,反射是一种强大的特性,它可以支持程序在运行时查询和调用对象的属性和方法。 但是在C中,没有内置的反射机制。我们可以通过一些巧妙的技术模拟反射的部分功能。 上一篇文章写了个简单的反射功能,这回完善一下&a…

Linux-笔记 OverlayFS文件系统入门

目录 前言 主要概念 工作原理 特点特性 1、上下合并 2、同名文件覆盖 3、同名目录合并 4、写时拷贝 实操入门 内核配置 挂载文件系统 验证 1、同名文件覆盖 2、同名目录合并 3、写时拷贝 1)验证新增文件或目录 2)验证修改文件 3&…

[leetcode]assign-cookies. 分发饼干

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int m g.size(), n s.size();int count 0;for (int i 0, j 0; i…

【嵌入式Linux】i.MX6ULL GPIO 中断服务函数注册与编写

文章目录 1 外部中断初始化与中断服务函数1.2 外部中断初始化函数 exti_init1.2.1 GPIO引脚配置1.2.2 中断使能与注册1.2.3 GIC_EnableIRQ()函数的分析 1.3 中断服务函数 gpio1_io20_irqhandler1.3.1 消抖处理1.3.2 中断事件处理1.3.3 清除中断标志 2 BUG处理2.1 问题描述2.2 解…

【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers

在当今人工智能与大数据飞速发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为推动科技进步的重要力量。而在NLP领域&#xff0c;Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度&#xff0c;为您深…

泰迪智能科技大数据挖掘企业服务平台典型合作案例介绍

泰迪大数据挖掘企业服务平台 是一款通用的、企业级、智能化的数据分析模型构建与数据应用场景设计工具&#xff0c;能够一体化地完成数据集成、模型构建、模型发布&#xff0c;为数据分析、探索、服务流程提供支撑&#xff0c;提供完整的数据探索、多数据源接入、特征处理、模型…

编程设计思想

健康检查脚本 nmap:扫描端口 while true do healthycurl B:httpPORT/healthy -i | grep HTTP/1.1 | tail -n 1 | awk {print $2} done 批量操作类型脚本&#xff08;记录每一步日志&#xff09; 将100个nginx&#xff1a;vn推送到harbor仓库192.168.0.100 根据镜像对比sha值…

高效修复机床导轨磨损,保障加工精度!

机床导轨是支承和引导运动构件沿着一定轨迹运动的传动装置&#xff0c;在机器设备中是个十分重要的部件&#xff0c;在机床中是常见的部件。机床的加工精度与导轨精度有直接的联系&#xff0c;且导轨一旦损坏&#xff0c;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…

rocketMQ消息中间件,onMessage报错,MessageExt of onessage method is not supported

本地启动不会报错&#xff0c;生产者和消费者都运行的好好的&#xff0c;但是打包之后就不断的报错误&#xff0c; 起初以为是maven出现了问题&#xff0c;但是刷新和重写都不管用&#xff0c;并且打的jar包解压后发现类里 有这个类和方法。最后认为是打包出现问题 解决方式&am…

SEO之竞争对手研究

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 竞争对手研究是市场竞争研究的重要部分&#xff0c;对判断特定关键词竞争程度及了解行业整体情况非常有价值。…

AutoStudio: 开源 AI 漫画创作神器

AutoStudio是一个用于生成系列连续且一致的图片系统&#xff0c;可用于漫画创作&#xff0c;其核心由四个 Agent 组成&#xff1a; 主题管理器&#xff1a;理解用户对话&#xff0c;跟踪角色信息。 布局生成器&#xff1a;确定图像中角色的位置。 监督者&#xff1a;给出改进…

昇思25天学习打卡营第3天|张量Tensor

张量Tensor 概念创建张量&#xff08;4种方式&#xff09;张量的属性张量索引张量运算Tensor与NumPy转换 概念 张量&#xff08;Tensor&#xff09;是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。张量是MindSpore网络运算中的基本数据结构。 创建张量&#xff08;4…

离线安装docker-v26.1.4,compose-v2.27.0

目录 ​编辑 1.我给大家准备好了提取即可 2.安装docker和compose 3.解压 4.切换目录 5.执行脚本 6.卸载docker和compose 7.执行命令 “如果您在解决类似问题时也遇到了困难&#xff0c;希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历&#xff0c;…

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别&#xff1f;如何建立WebSocket连接&#xff1f;WebSocket消息看起来像什么&#xff1f; 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

揭示优化Prompt的秘诀:如何让API表现媲美网页版

为什么用GPT API&#xff08;GPT-3.5-turbo&#xff09;进行程序分析时&#xff0c;效果好像比网页版的GPT-3.5差一点&#xff1f;这可能有几个原因&#xff0c;咱们细说一下。 1. Prompt不同 这是最常见的问题之一。API调用时的指令&#xff08;prompt&#xff09;往往比较简…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

Spring Boot 接口一个 JSON 字符串用两个对象去接收,这能行吗?

文章目录 需求场景解决方案Step 1: 创建 Person 和 Address 类Step 2: 创建 PersonWithAddress 类Step 3: 自定义转换器Step 4: 配置转换器Step 5: 使用 RequestBody 接收 JSON 数据 结论 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#…