如何在 WSI 幻灯片的特定放大倍数下创建特定大小的补丁?

问题描述

我正在尝试以特定放大率从 WSI 幻灯片 (Available Here) 创建补丁。我在 Python 中使用 OpenSlide。我可以使用以下代码将所需的放大倍数转换为特定级别的幻灯片:

mag = 20 #required magnification
slide = openslide.open_slide(slide_path)
base_mag = 10.0 / float(slide.properties['openslide.mpp-x'])
level = slide.get_best_level_for_downsample(base_mag / mag)

因此问题归结为只是在幻灯片的特定级别找到补丁。

首先,我使用以下代码使用 Otsu 进行组织分割:

slide = openslide.open_slide(slide_path)
thumbnail = slide.get_thumbnail((slide.dimensions[0] / 256,slide.dimensions[1] / 256))

thumbnail_grey = np.array(thumbnail.convert('L')) # convert to grayscale
thresh = threshold_otsu(thumbnail_grey)
binary = thumbnail_grey > thresh

二进制是一个 np.array,0:组织,1:非组织

此外,我有一张蒙版图像(WSI 幻灯片),它告诉我肿瘤的区域。

为了生成补丁,我遇到了在 Python 中使用 OpenSlide 支持 DeepZoom。根据 OpenSlide 文档 (Available Here),我可以使用 DeepZoom 生成这样的图块:

tiles = DeepZoomGenerator(slide,tile_size=256,overlap=0,limit_bounds=False)

我意识到两件事:-

  • slide.level_count 在幻灯片中打印 10,即 0-9 级,其中 0 是最高分辨率。
  • tiles.level_count 在图块中打印 19,即 0-18 级,其中 18 是最高分辨率。

要获得特定级别的图块,我可以使用 get_tile(level,address) 返回一个 RGB 图像并将 DeepZoom 级别和级别内图块的地址(列、行)作为(列、行)元组.

现在我对一些事情感到困惑:

  1. 如何将我的幻灯片级别转换为 DeepZoom 级别?
  2. 如何在此特定 DeepZoom 级别获取不同图块的地址?我尝试使用随机地址,但它给出了“无效地址”的异常。
  3. 如何将两者结合在一起,以便我只从我的组织区域生成图块,然后将这些图块分割为肿瘤和非肿瘤。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...