一、为什么不用 ImageJ 算全片
ImageJ 是科研图像处理的老牌工具,但它有两个硬伤:
- 打不开全片。一张 20 亿像素的 WSI 直接读进 ImageJ 会内存溢出,必须先用 Bio-Formats 降采样,等于损失信息。
- 没有组织识别。ImageJ 不会自动区分组织和玻片背景,你得自己框,框多了少了都影响结果。
QuPath 是专门为全片设计的,按需加载金字塔层级,能自动识别组织区域,还能批量处理。做全片定量,它比 ImageJ 合适得多。
二、安装与打开全片
- 访问 qupath.github.io,下载对应系统的安装包(Windows / Mac / Linux)
- 直接安装,不需要额外配置 Java 环境(已内置)
- 打开软件 → File → Open → 选择你的 .svs / .ndpi / .mrxs 文件
- 文件加载后,滚轮缩放,空格键 + 拖动可以平移
.mrxs 和 .vsi 要先建工程
这两种是文件夹形式。如果直接 Open 打不开,用 File → Project → Create project,把整个文件夹拖进去,再从工程里打开。
三、圈定组织区域(关键一步)
这一步做错,后面全错。因为阳性面积占比 = 阳性面积 ÷ 组织面积,分母错了结果就错了。
正确做法:
- 菜单 Classify → Create thresholder,或者用工具栏的"自动检测组织"
- 在弹窗里调整阈值,让红色覆盖区域刚好贴合组织轮廓(通常用光学密度或饱和度通道)
- 点 Create annotations,生成组织区域的标注
- 检查:玻片空白处不能被框进去,组织边缘不能被切掉
- 如果有灰尘、气泡、笔迹,手动删掉对应的区域
最常见的分母错误
把玻片上的标签纸、马克笔字迹、盖玻片边缘一起框进组织区域。这些区域颜色深,会被误判为强阳性,直接拉高阳性率。一定要在扫描前擦干净,或者圈区域时手动排除。
四、阈值怎么设才不会被质疑
IHC 定量一般用 DAB 显色,判读阳性靠颜色深浅。阈值设置是主观性最强的环节,也是最容易被审稿人挑的地方。
三种做法,可靠性从低到高:
| 方法 | 做法 | 问题 |
|---|---|---|
| 手动调 | 自己看着调,直到结果符合预期 | 主观性最强,无法复现 |
| 阴性对照定阈值 | 用同批的阴性对照片确定本底,阈值设为本底之上 | 较可靠,需有对照 |
| 固定参数 + 全部样本同批处理 | 所有片子用同一组参数,不做个体调整 | 最推荐,可复现 |
论文里必须写明:用了什么软件、什么版本、阈值怎么定的、是否全部样本用同一参数。这三句话说清楚,审稿人基本不会再追问。
五、批量处理几十张片子
QuPath 支持脚本批量处理,不用一张张点。
- File → Project → Create project,把所有片子加进去
- 菜单 Automate → Show script editor
- 用循环脚本对所有图像执行同样的操作:检测组织 → 设阈值 → 测量
- Automate → Run for project,一次性跑完
官方文档和社区有现成的脚本模板(搜 "QuPath script positive area"),改几个参数就能用。如果不会写脚本,也可以录制宏。
六、导出与统计
测量结果在 Measure → Show detection measurements 里,每张片子一行数据,包含:
- 组织面积(μm²)
- 阳性面积(μm²)
- 阳性面积占比(%)
- 平均光密度(可选)
- 细胞数 / 密度(如果做了细胞检测)
点右上角 Save 导出为 CSV,直接进 GraphPad 或 R 做统计和作图。
七、三个常见错误
- 不同片子用不同阈值。看到结果不理想就调参数,这是最严重的错误。所有样本必须用同一组参数,否则结果没有可比性。
- 没排除非组织区域。(见第三节)标签、笔迹、气泡、褶皱都会被算进去。
- 只算平均光密度,不算面积。光密度反映强度,面积反映范围,两个是不同的生物学信息。多数 IHC 研究用的是面积占比或 H-score,不是单纯的光密度。
一条实用建议
定量结果和图要能对上。如果你的定量说"实验组阳性面积显著增加",读者会去图上看,图上也必须能明显看出来。如果图上看不出差别但统计显著,基本会被质疑。