问题描述
我正在尝试以特定放大率从 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 级别和级别内图块的地址(列、行)作为(列、行)元组.
现在我对一些事情感到困惑:
- 如何将我的幻灯片级别转换为 DeepZoom 级别?
- 如何在此特定 DeepZoom 级别获取不同图块的地址?我尝试使用随机地址,但它给出了“无效地址”的异常。
- 如何将两者结合在一起,以便我只从我的组织区域生成图块,然后将这些图块分割为肿瘤和非肿瘤。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)