【代码已开源】基于Python的全切片(WSI)染色归一化工具/库,实现了reinhard, macenko, vahadane共三种方法,支持GPU加速,可通过pip安装

基于Python的全切片(WSI)染色归一化工具/库,实现了reinhard, macenko, vahadane共三种方法,支持GPU加速,可通过pip安装

为了应对数字病理切片受到不同中心、不同扫描设备的影响,先后有不同的研究提出了针对病理图像的染色归一化(stain normalization)方法。本仓库对三种染色归一化方式进行了封装,针对常见的病理图片处理流程实现了染色归一化工具

仓库地址

https://github.com/HaoyuCui/WSI_Normalizer

https://pypi.org/project/wsi-normalizer/

支持以下主流染色归一化方法

  1. Reinhard Reinhard, Erik, et al. “Color transfer between images.” IEEE Computer graphics and applications 21.5 (2001): 34-41.
  2. 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.
  3. 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.

更新

  1. [10/2024] 感谢MIT协议开源库 cwlkr/torchvahadane ,WSI_Normalizer现在支持GPU加速的Vahadane方法,在较大分辨率的patch上能够达到2倍以上的速度提升
  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))

本地安装

  1. 克隆本仓库
    git clone https://github.com/HaoyuCui/WSI_Normalizer.git
    
  2. 进入到根目录,激活虚拟环境,运行 pip install -r requirements.txt 安装依赖文件,如果需要GPU加速的版本,需要额外安装pytorch-gpu, scipy, kornia (可选)

运行

  1. 在运行前,确保在原始文件夹这样组织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
    
  2. 然后,修改以下参数
    <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>
    
  3. 程序将会在<OUTPUT FOLDER>自动生成与 <TARGET FOLDER> 一致的目录结构

  4. 本仓库提供了一个示例脚本,可供直接运行:

    python main.py --target_dir eg/origin --output_dir eg/norm --method vahadane-gpu --target_img eg/standard.jpg
    
  5. 运行结果如下:
    请添加图片描述

如果有问题,欢迎联系我。
欢迎Star、点赞和收藏,转载请注明出处,谢谢!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值