基于Python的全切片(WSI)染色归一化工具,实现了reinhard, macenko, vahadane共三种方法,支持GPU加速
为了应对数字病理切片受到不同中心、不同扫描设备的影响,先后有不同的研究提出了针对病理图像的染色归一化(stain normalization)方法。本仓库对三种染色归一化方式进行了封装,针对常见的病理图片处理流程实现了染色归一化工具
仓库地址
https://github.com/HaoyuCui/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倍以上的速度提升
安装
- 克隆本仓库
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、点赞和收藏,转载请注明出处,谢谢!