基于Python的全切片(WSI)染色归一化工具/库,实现了reinhard, macenko, vahadane共三种方法,支持GPU加速,可通过pip安装
为了应对数字病理切片受到不同中心、不同扫描设备的影响,先后有不同的研究提出了针对病理图像的染色归一化(stain normalization)方法。本仓库对三种染色归一化方式进行了封装,针对常见的病理图片处理流程实现了染色归一化工具
仓库地址
https://github.com/HaoyuCui/WSI_Normalizer
https://pypi.org/project/wsi-normalizer/
支持以下主流染色归一化方法
- Reinhard Reinhard, Erik, et al. “Color transfer between images.” IEEE Computer graphics and applications 21.5 (2001): 34-41.
- Macenko Macenko, Marc, et al. “A method for normalizing histology slides for quantitative analysis.” 2009 IEEE international symposium on biomedical imaging: from nano to macro. IEEE, 2009.
- Vahadane Vahadane, Abhishek, et al. “Structure-preserving color normalization and sparse stain separation for histological images.” IEEE transactions on medical imaging 35.8 (2016): 1962-1971.
更新
- [10/2024] 感谢MIT协议开源库 cwlkr/torchvahadane ,WSI_Normalizer现在支持GPU加速的Vahadane方法,在较大分辨率的patch上能够达到2倍以上的速度提升
- [04/2025] 我们现将该工具包上传至PyPI ,先可直接通过pip进行安装,更快调用
库安装
使用PyPI安装
pip install wsi-normalizer
# 或使用国内清华源加速
# pip install wsi-normalizer -i https://pypi.tuna.tsinghua.edu.cn/simple
然后,可以直接通过代码进行调用
import cv2
from wsi_normalizer import imread, MacenkoNormalizer # 或 ReinhardNormalizer, VahadaneNormalizer, TorchVahadaneNormalizer
macenko_normalizer = MacenkoNormalizer()
macenko_normalizer.fit(imread('标准图片.jpg'))
norm_img = macenko_normalizer.transform(imread('输入图片.jpg'))
cv2.imwrite('输出图片.jpg', cv2.cvtColor(norm_img, cv2.COLOR_RGB2BGR))
本地安装
- 克隆本仓库
git clone https://github.com/HaoyuCui/WSI_Normalizer.git
- 进入到根目录,激活虚拟环境,运行
pip install -r requirements.txt
安装依赖文件,如果需要GPU加速的版本,需要额外安装pytorch-gpu
,scipy
,kornia (可选)
运行
-
在运行前,确保在原始文件夹这样组织patch块(后缀名支持.png,.jpg和.jpeg)
├── data │ ├── slide_1 │ │ ├── patch_1.png │ │ ├── patch_2.png │ │ ├── ... │ ├── slide_2 │ │ ├── patch_1.png │ │ ├── patch_2.png │ │ ├── ... │ ├── ... │ └── slide_n │ ├── ... │ └── patch_n.png
-
然后,修改以下参数
<TARGET FOLDER>
原始文件夹,存储了以上述树状格式组织的patch块
<OUTPUT FOLDER>
输出文件夹
<NORM METHOD>
染色归一化方法,请确保参数位于reinhard, macenko, vahadane, vahadane-gpu中
<TARGET IMAGE>
染色参考图片(可以是数据集中的一员)请注意,考虑到硬件IO,vahadane-gpu在224及256这类分辨率下的效果和vahadane几乎没有区别,只有在512、1024或者更大的分辨率下,能够达到2倍甚至更快的速度提升,请根据实际情况使用
然后运行
python main.py --target_dir <TARGET FOLDER> --output_dir <OUTPUT FOLDER> --method <NORM METHOD> --target_img <TARGET IMAGE>
-
程序将会在
<OUTPUT FOLDER>
自动生成与<TARGET FOLDER>
一致的目录结构 -
本仓库提供了一个示例脚本,可供直接运行:
python main.py --target_dir eg/origin --output_dir eg/norm --method vahadane-gpu --target_img eg/standard.jpg
-
运行结果如下:
如果有问题,欢迎联系我。
欢迎Star、点赞和收藏,转载请注明出处,谢谢!