libvips 从 Ex40 而非地图中提取 NDPI 区域

libvips extract area of NDPI from Ex40 not from map

我正在使用 libvips 获取 .ndpi 图像的金字塔。

通过 and searching the documentation我找到了这个命令

vips extract_area myimage.ndpi[level=0] mypyramid.dz 0 0 10000 10000

提取从 0 0 开始、大小为 10000 10000 的裁剪到 dzi 文件。

level参数为放大倍数,0为最高

问题是ndpi里面有如下图片:

当我需要 myimage_x40_z0.tif

时,vips 正在使用 myimage_macro.tif

应该有一个像level这样的参数来选择我想要的OpenSlide(ndpi)中的图像。

有人问。为什么不提取 tif 然后 运行 vips?

嗯,因为 vips 告诉我这个:

openslide2vips: opening slide: No such value: directory 0, tag 278

这意味着使用 ndpisplit 提取 tif 以某种方式不保存元数据以允许 vips 识别图像

所以我有点烦人。我有巨大的图像,我需要提取一个稍微不那么巨大的部分,然后得到它的金字塔。

请帮助我,现在我基本上是自己编写代码,它可以工作,但速度非常慢。

我把它写成一个答案,虽然它不是真正的答案。只是评论好像太长了。

libvips openslideload 操作允许您选择要加载的关联图像。您可以从 slide-associated-images 元数据标签中获取关联图像的列表。例如:

$ vipsheader -f slide-associated-images 2013_09_20_29.ndpi 
macro
$ vipsheader -f slide-associated-images CMU-1.svs
label, macro, thumbnail

然后您可能会选择一张关联图片:

$ vips crop CMU-1.svs[associated=label] x.jpg 10 10 100 100

获取标签的一小部分。

所以...检查 openslide 为您的幻灯片报告了哪些关联图像。如果你能得到你需要的那个,用 associated 参数选择它。如果您需要的图像未列出,我会联系 openslide 项目,因为他们需要添加支持。

您还可以查看 openslide 命令行工具,它们可能会提供更多选项。