目前的卷积神经网络智能诊片,往往需要输入的图片大小为128×128、224×224...等等,但是对于全视野数字病理影像图片(whole-slide images,WSI)往往是10000×10000分辨率,对于过大的图像,需要对其进行裁剪,才能进行训练。
今天主要分享在学习病理影像智能诊断过程中获得的一些知识和经验,与诸君共勉!
1.python中需要用的基础库
最主要的是histolab库histolab · PyPI,但是其建立在openslide库的基础上,关于openslide库的安装,可以在PyPI · The Python Package Index中进行寻找然后进行下载。这两个库主要是针对病理影像开发的库。
2.随机抽取tile的分割方法
对于过大图像,我们可以在整个图像上进行随机抽取几个或者几十个指定大小的图像。
from histolab.slide import Slide
import os
BASE_PATH = os.getcwd()
CRC_path='./TCGA-A6-2677-11A-01-TS1.svs'#图片位置
path=r"./picturecut"#切割完成后图片存放的位置
CRC_slide = Slide(CRC_path,processed_path=path)
print(f"Slide name:{CRC_slide.name}")#幻灯片名称
print(f"Levels:{CRC_slide.levels}")
print(f"Dimensions at level 0:{CRC_slide.dimensions}")
print(f"Dimensions at level 1:{CRC_slide.level_dimensions(level=1)}")
print(f"Dimensions at level 2:{CRC_slide.level_dimensions(level=2)}")
print("Native magnification factor:",CRC_slide.level_magnification_factor())
print("Magnification factor corresponding to level 1:",CRC_slide.level_magnification_factor(level=1),)
输出结果:
#Slide name:TCGA-A6-2677-11A-01-TS1
#Levels:[0, 1, 2]
#Dimensions at level 0:(14000, 13138)
#Dimensions at level 1:(3500, 3284)
#Dimensions at level 2:(1750, 1642)
#放大倍数
#Native magnification factor: 20.0X #本身放大
#Magnification factor corresponding to level 1: 5.0X #在水平1上的放大倍数
以上是图像的基本信息
分割过程
from histolab.tiler import RandomTiler
random_tiles_extractor = RandomTiler(
tile_size=(224, 224),
n_tiles=100,
level=0,
seed=42,
check_tissue=True, # default
tissue_percent=80.0, # default
prefix="random11/", # save tiles in the "random" subdirectory of slide's processed_path
suffix=".png" # default
)
random_tiles_extractor.locate_tiles(
slide=CRC_slide,
scale_factor=24, # default
alpha=128, # default
outline="red", # default
)
可以看到其中红色的框子就是随机选择的100张,224×224分辨率的tile。
对选择的图像进行保存
random_tiles_extractor.extract(CRC_slide)
reference:
histolab · PyPI