python,Openslide自动切.SVS格式(WSI)病理图像

本文介绍如何使用openslide库处理高分辨率的病理图像。通过实例演示了如何安装和使用该库进行图像读取,并利用DeepZoomGenerator生成多层金字塔形式的图像切片。

随着深度学习在医疗界的发展,病理图像也越来越来重要。但是病理图像大多数在10万×10万分辨率,用平常的图像处理库没有办法读取。开源的openslide库提供清洁便利的读取方法。
首先安装,openslide,如果是ubuntu用户,直接 sudo apt install python-openslide,然后
导入库

import openslide

然后导入DeepZoomGennerator,主要是多层金字塔形式封装

from openslide.deepzoom import DeepZoomGenerator

打开所需要读入的文件,给出文件名,

slide = openslide.open_slide('02.svs')

类别调用

highth = 2000
data_gen = DeepZoomGenerator(slide, tile_size=highth, overlap=0, limit_bounds=False)
  • tile_size可以设成自己想切的图像大小。
  • limit_bounds表示的是大图整个边缘可能达不到自己设的长和宽。False,则丢弃边缘图。True,保存
  • overlap表示的是否边缘overlap,引入其他信息
    输出总共切图个数和一共有多少个金字塔,
print(data_gen.tile_count)
print(data_gen.level_count)
1036
17
  • num_w,图像切片宽度个数
  • num_h, 图像切片长度个数
  • data_gen.get_tite(level,(row,col)),level范围在data_gen.level_count,最大的为金字塔底层,最小为0。row,范围是(0,num_w)。col,范围是(0,num_h).还有其他的API切图,可以看官方文档
    也可以自己实现,不调用API.
num_w = int(np.floor(w/width))+1
num_h = int(np.floor(h/highth))+1
for i in range(num_w):
    for j in range(num_h):
        img = np.array(data_gen.get_tile(16, (i, j))) #切图
        io.imsave(join(result_path, "02"+str(i)+'_'+str(j)+".png"), img) #保存图像
### 关于医学图像处理中的 SVS 文件 #### SVS 文件格式概述 SVS 是一种常见的用于存储高分辨率数字病理切片图像的文件格式[^1]。这种格式由 Aperio Technologies 开发,广泛应用于数字化显微镜扫描仪所生成的数据保存。 #### 主要特点 - **多分辨率层次结构**:SVS 文件内部采用金字塔式的分层存储方式,每一层代表不同缩放比例下的全幅图像。 - **高效压缩算法**:通常会应用 JPEG 或 JPEG 2000 压缩标准来减少文件大小而不明显损失画质。 - **元数据支持**:除了基本像素信息外,还能够携带丰富的附加属性描述,比如患者ID、染色方法等临床相关信息。 #### 应用场景 主要用于病理学领域内的研究与诊断工作,在肿瘤分析等方面发挥着重要作用。通过专用软件可以方便地浏览这些大型图片并进行精确测量和标记操作[^2]。 #### 处理工具和技术栈 对于此类特殊类型的医学影像资料而言,存在一些专门设计用来读取、转换以及可视化展示其内容的应用程序库: - Python 中有 `openslide-python` 这样的开源项目提供了简单易用接口来进行基础访问; - C++ 用户可以选择 OpenSlide 的原生实现版本; - 商业产品如 QuPath 则集成了更多高级功能供专业人士使用。 下面给出一段简单的Python代码片段作为例子说明如何加载一张 .svs 图像并获取基本信息: ```python import openslide # 打开一个 svs 文件 slide = openslide.OpenSlide('example.svs') # 获取图像尺寸 (宽度, 高度) dimensions = slide.dimensions print(f"Image dimensions: {dimensions}") # 访问特定级别的缩略图 thumbnail = slide.get_thumbnail((150, 150)) # 显示缩略图 thumbnail.show() ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水煮城府、器

谢谢你的欣赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值