颜色标准化工具——StainTools

颜色标准化工具——StainTools

为什么要使用标准化工具

在处理医学图像时经常会遇到切片染色不均衡问题,这也很容易理解,每个医生染色的剂量不同,容易造成颜色深浅不一。所以为了避免颜色不均衡给模型带来误差,通常会使用了一些颜色标准化工具来平衡不同病理图片颜色不一的问题。这里记录一下我使用StainTools这个工具包,以做备份。
官方文档说明:https://staintools.readthedocs.io/en/latest/index.html.

函数介绍

整个工具包我最常用的是VahadaneNormalizer和MacenkoNormalizer这两个类,具体的使用说明请参照上方的官方文档说明。为了方便写了一个函数进行调用:

from normalization.macenko import MacenkoNormalizer
from normalization.vahadane import VahadaneNormalizer

def standard_transfrom(standard_img,method = 'M'):
    if method == 'V':
        stain_method = VahadaneNormalizer()
        stain_method.fit(standard_img)
    else: 
        stain_method = MacenkoNormalizer()
        stain_method.fit(standard_img)
    return stain_method

这里我为了方便并没有将源码放在python的包里,而是直接放在相应项目的文件夹下,并起名为normalization。
这里函数返回的是一个实例化对象,传进去参数第一个是standard_img,表示颜色标准化的模板,第二个参数是标准化使用的方法。速度方面,个人实测使用M方法的速度是使用V方法的5~10倍左右,M方法标准化一张图大概在0.1秒左右,而V方法大概在1秒左右,具体看个人电脑配置,但应该不会相差太远。两者效果对比嘛,这个不好说,需要看具体情况。
还有需要特别说明的是使用V方法会出现颜色标准化失败的情况,这个错误是python无法捕捉到的,属于c++错误,也就是说无法用try语句进行捕捉,会导致程序中断,这个坑等到后面有空了再填吧。
函数具体使用方法如下:

stain_method = standard_transfrom(sttd, normalization_method)
img = stain_method.transform(img)

normalization源码文件夹:https://pan.baidu.com/s/17jZ0OLPOpftPvGB5kInTRg
提取吗:rai1

Guess you like

Origin blog.csdn.net/weixin_41693877/article/details/105827582