ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)
在临床病理诊断中, 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。
免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。
一般而言,抗原含量越多,分布密度越高,阳性结果显色则越强。根据阳性标记的显色程度分为:蓝色,阴性;淡黄色,弱阳性;棕黄色,中等阳性;深棕色,强阳性。

免疫组化原理图
免疫组化分析主要有两种方法,阳性着色细胞计数法和染色强度评分法。前者是在光学显微镜下,随机多个视野下计数阳性着色细胞;后者则是在下按染色强度和染色阳性范围评分,最终分数相加。
但组织样品的病理学分析仍然是耗时且主观的程序,其中人工判断染色强度来评分,直接受到视觉偏差的影响[1]。且阳性细胞计数往往不能自动化进行,导致免疫组化分析费时费力。
这篇文章会怎么利用ImageJ进行免疫组化分析,进行全面的讲解,包括两部分:
1、利用IHC Profiler插件对样本的染色情况进行自动化评分;
2、利用Trainable Weka Segmentation插件分别对阳性细胞和阴性细胞进行计数;
一、IHC Profiler-自动分析染色情况

IHC Profiler,将阳性细胞的平均灰度值(染色强度)和阳性面积百分比(染色面积)共同作为 IHC 测量指标[2],最终给出四种评分:High positive (3+), Positive (2+), Low Positive (1+) and Negative (0)。
最新更新,为解决IHC_Profiler安装失败的问题,我更改了IHC_Profiler的原代码,整个插件变成了newIHC_Profiler.ijm,可以在GitHub上下载到:
newIHC_Profiler.ijmgithub.com/ethanzhao9/ImageJ-Tutorial/blob/master/newIHC_Profiler.ijm
插件使用方法:
1、通过Image -> Color -> Color Deconvolution,分离出想要测量的Channel:

2、选中想要测量的Channel,Run这个Macro,即可得到4种评分所占面积的百分比:

注意IHC_Profiler里四个评分的定义:
- High positive (灰度值0-60)
- Positive (灰度值61-120)
- Low Positive (灰度值121-180)
- Negative (灰度值181-236)

1、插件安装
注意:Fiji和IHC Profiler会出现不兼容的情况,导致结果错误,建议在ImageJ1中安装这个插件并使用。
ImageJ1的下载链接:
https://imagej.nih.gov/ij/download.html
该插件的安装包括插件和宏的安装,下载地址:
IHC Profilersourceforge.net/projects/ihcprofiler/
若无法打开可以在GitHub上下载到:
https://github.com/inanezhao/ImageJ-Tutorial/blob/master/IHC_Profiler.zip
压缩包里包含下面三个文件插件文件夹、宏文件以及官方安装教程:

(1)插件安装
将IHC Profiler文件夹放在Plugins中,重启ImageJ即可安装IHC Profiler插件:

(2)宏安装(对于Fiji是必需且重要的)
Fiji安装宏的步骤和网传的版本不同,因为IHC Profiler是基于ImageJ最初的版本编写的,在FIji上使用的时候会有不兼容的情况。
首先将IHC_Profiler.txt文件放到macros文件夹中。

然后点击Plugins -> Macros -> Install,选择该txt文件(如果是ImageJ1则跳过这一步):


即可在Plugins -> Macros中找到该宏:

注意!!!每次关闭ImageJ后,再次使用IHC Profiler需要重新安装该宏。否则得出的结果是错误的。
2、插件使用
该插件的基本原理为先对染色图片进行颜色去卷积,分出蓝色的阴性区域和棕色的阳性区域,然后判断染色类型是细胞质染色还是细胞核染色,再分别进行对应的操作[2]。

插件工作流程
(1)以细胞质染色为例:
打开图片和插件(Plugins -> IHC_Profiler)

打开插件后选择细胞质染色的Mode:

颜色去卷积默认H DAB染色:

然后即可分别得到阴性区域和阳性区域,直接得出结果:


(2)以细胞核染色为例:

选择细胞核染色Mode,并不会直接得出结果,需要先设定一个阈值:

然后点击上面安装的宏(Plugins -> Macros -> IHC_Profiler),即可得到结果:

二、Trainable Weka Segmentation-自动阳性细胞计数
该插件的使用请参考这篇文章:
Treasure琛:ImageJ实用技巧——基于机器学习的自动细胞分割(插件篇)220 赞同 · 91 评论文章编辑
一般的免疫组化图片不能通过Threshold的方法进行分割,需要利用该插件,基于机器学习算法,做到阳性细胞和阴性细胞的计数。
例如统计上图中,阳性细胞和阴性细胞的数量,经过训练之后分类器可以很好的分出阳性细胞、阴性细胞以及背景(甚至可以区分出强阳性和弱阳性细胞):

点击Create result、Get Probability可以得到分割后的图像:


通过Analyze Particles可以快速得到细胞的数量,可以参考这篇文章:
Treasure琛:ImageJ实用技巧——自动细胞计数(解放双手篇)724 赞同 · 160 评论文章编辑
三、总结
该篇文章完整讲述了怎么利用IHC Profiler进行免疫组化分析,补充了利用Trainable Weka Segmentation对阳性细胞进行自动统计。
以后对于免疫组化分析,不必再过度依赖人工,可以通过软件的自动分析得到更加直观和稳定的数据。但前提是样品的制备、染色以及拍照时要注意避免假阳性。
与此同时,在使用插件的时候要多思考,多研究,避免出现分析错误的情况。(例如,若不安装IHC Profiler的宏文件,得出的结果会完全相反)。
推荐阅读介绍IHC Profiler的这篇文献[2],以更深入地了解自动免疫组化分析的原理。
四、补充
(1)插件报错问题
如果插件出现报错等不能用的情况,建议换用ImageJ1来安装这个插件,在ImageJ1中使用,而不是Fiji。
(2)共染问题
免疫组化共染不能用IHC Profiler来进行分析,这个插件现在只包含了DAB。
如果想要分析共染的荧光强度的话,比较好的方法是通过Colour Deconvolution(Image -> Color -> Colour Deconvolution)
选择H&E DAB把粉红色、棕色以及蓝色,三个通道分别分离出来(但要注意免疫组化本身并不是化学计量的)。


通道分割结果
可以参考下面这个网站:
Colour-deconvolutionblog.bham.ac.uk/intellimic/g-landini-software/colour-deconvolution/
参考文献:
[1].Jensen, Ellen C . Quantitative Analysis of Histological Staining and Fluorescence Using ImageJ[J]. The Anatomical Record, 2013, 296(3):378-381.
[2].Varghese F, Bukhari A B, Malhotra R, et al. IHC Profiler: An Open Source Plugin for the Quantitative Evaluation and Automated Scoring of Immunohistochemistry Images of Human Tissue Samples[J]. Plos One, 2014, 9(5):e96801.
相关文章:
ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)
在临床病理诊断中, 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。 免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。 一般而言,抗原含量越多,分布密度越高,阳性结果显色…...
了解STM32看门狗定时器的工作原理和原则
STM32 系列微控制器的看门狗定时器 (Watchdog Timer,WWDG) 是一种重要的硬件资源,用于检测系统的异常状态,并在发生异常时执行特定的操作,以确保系统能够正常运行。在本文中,我将详细介绍 STM32 看门狗定时器的工作原理…...
【2014年数据结构真题】
41. (13分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。 给定一棵二叉树T,采用二叉链表存储,结点结构如下: 其中叶结点的weight域保存该结点的非负权值。 设root为指向T的根结点的指针, 请设计求T 的WPL…...
PostgreSQL基本操作
目录 1.源码安装PostgreSQL 1.1.前置条件(root下操作) 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…...
hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)
1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令: ssh-keygen -t rsa3. 发送到需要免密机器: # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功...
Django 的国际化与本地化详解
概要 随着全球化的发展,为 Web 应用提供多语言支持变得日益重要。Django 作为一个功能强大的 Web 框架,提供了一套完整的国际化(i18n)和本地化(l10n)工具,使得开发多语言应用变得简单。本文将详…...
Java19新增特性
前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17、Java18 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特…...
[文件读取]metinfo_6.0.0 任意文件读取漏洞复现
1.1漏洞描述 漏洞编号--漏洞类型文件读取漏洞等级⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐漏洞环境windows漏洞名称MetInfo 6.0.0 任意文件读取漏洞 MetInfo 是一套使用PHP 和MySQL 开发的内容管理系统。MetInfo 6.0.0 版本中的 /app/system/include/module/old_thumb.class.php 文件存在任意文件…...
[量化投资-学习笔记015]Python+TDengine从零开始搭建量化分析平台-量化知识点汇总
之前的章节介绍了多个技术分析指标,以下进行一个简单的总结。 看过之前章节的同学就可以不用打开了。 技术指标 MAEMAMACDCCIATRKDJ MA 最基础的技术指标,对一段周期内的收盘价进行简单平均,是一切指标的基础。 def calc_ma(period,ma):ma_…...
VSCode 好用的插件分享
文章目录 Introlistcode runner 【在文本编辑器中编辑好各类语言的源代码,然后一键运行】gitlens - 【git提交信息即时查看,类似IDEA中的 show annotation】还有更多,会日常补充。 Intro 大四毕业前,我只有一台dell latitude 455…...
C++虚基类详解
多继承(Multiple Inheritance) 是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。…...
Mac M2/M3 芯片环境配置以及常用软件安装-前端
最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。 一、环境配置 1. 安装 Homebrew 安装 Homebrew【Mac 安装 Homebrew】 通过国内镜像安装会比较快 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Ho…...
Karmada更高效地实现故障转移
随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问…...
前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(四)
你可以的,去飞吧! 同步代码和异步代码 回调函数地狱和 Promise 链式调用 回调函数地狱 缔造“回调地狱”↓ 制造里层回调错误,却在最外层接收错误→无法捕获 axios源码抛出异常(未捕获) <!DOCTYPE html> <ht…...
TechSmith Camtasia 2024破解版功能介绍及使用教程
在现在的网络互联网时代,越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频,也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音,做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…...
【无线网络技术】——无线传输技术基础(学习笔记)
目录 🕒 1. 无线传输媒体🕘 1.1 地面微波🕘 1.2 卫星微波🕘 1.3 广播无线电波🕘 1.4 红外线🕘 1.5 光波 🕒 2. 天线🕘 2.1 辐射模式🕘 2.2 天线类型🕤 2.2.1 …...
【Liunx】部署WEB服务:Apache
【Liunx】部署WEB服务:Apache 概述Apache1.介绍2.Apache文件路径3.Apache详解(1)安装Apache(2)启动Apache(3)配置文件a.Apache主配置文件:vim /etc/httpd/conf/httpd.conf信息:b.基于主机头的虚拟主机 (4)开始演示:a.新建两个网站根目录b.分别…...
数字媒体技术基础之:常见图片文件格式
在数字图像处理和图形设计领域,了解不同的图片文件格式及其特点是至关重要的。每种格式都有其独特的用途和优势。以下介绍一些最常见的图片文件格式。 JPEG Joint Photographic Experts Group 扩展名:.jpg 或 .jpeg 特点: 1、有损压缩&#x…...
2023-2024-2 高级语言程序设计-二维数组
7-1 矩阵运算 给定一个nn的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n(1<n≤10);随后n行,每行给出…...
【uniapp】确认弹出框,选择确定和取消
代码如下: <view style"display: flex; justify-content: space-around;"><button class"button" click"submit">t提交</button> </view>submit(){let thatthisuni.showModal({title: 提示:,con…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
