Préface
La taille des tranches numériques plein champ (images de diapositives entières, WSI) peut atteindre 15w*15w pixels, ce qui ne peut pas être traité par les bibliothèques générales de traitement d'image, la bibliothèque openslide doit donc être utilisée. Cet article présente brièvement l'utilisation de plusieurs fonctions courantes dans la bibliothèque openslide.
详细用法介绍请参照:https://openslide.org/api/python/
1. Importez le package openslide
Si vous ne l'avez pas encore installé, rendez-vous sur : http://t.csdn.cn/RT8lw
import openslide
2. Lire dans l'image WSI
# 读入WSI图像,生成一个slide实例
slide = openslide.Openslide('tumor_001.tif')
3. Consultez les informations sur la pyramide de WSI
La plupart des images médicales ont une structure pyramidale avec plusieurs niveaux de résolution et sont mises à l'échelle selon un certain facteur d'échelle ( facteur de sous-échantillonnage ). La résolution du niveau 0 est la plus haute résolution du WSI
# 查看WSI的level数
print(slide.level_count)
#OUT:8
# 查看WSI各个level的分辨率
print(slide.level_dimensions)
#OUT: ((97792, 221184),(48896, 110592),(24448, 55296),(12224, 27648),
#(6112, 13824),(3056, 6912),(1528, 3456),(764, 1728))
# 查看WSI各个level的缩放倍数
print(slide.level_downsamples)
#OUT:(1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0)
4. Lisez la zone spécifiée par WSI
La fonction utilisée est : read_region(location, level, size) renvoie une image RGBA .Introduction des paramètres :
1.location : (tuple), indiquant les coordonnées du point de départ au niveau 0
2.level : (int), à quel niveau pour intercepter
3.size : (tuple), taille de la zone
# 读取level8的整个图像 size:(764, 1728)
image = slide.read_region((0,0), 8, slide.level_dimensions[8])
image = image.convert('RGB') #转换为RGB图像
# 在level 1分辨率下读取2个相邻的256*256大小的图像块
patch1 = slide.read_region((0,0), 1, (256,256))
patch2 = slide.read_region((0,512), 1, (256,256))
# level 1 下256相当于level 0 的512,缩放比例2倍
# 保存
patch1.save('tumor_level_8.png')
# 转换为ndarray
patch1_array = np.array(patch1)