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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了libvips从Ex40中提取NDPI区域而不是从地图中提取相关的知识,希望对你有一定的参考价值。

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

通过this answer并搜索documentation我发现了这个命令

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

它将从0 0开始,大小10000 10000的裁剪提取到dzi文件。

level参数是放大率,0是最高。

问题是ndpi里面有以下图像:

  • myimage_macro.tif
  • myimage_map.tif
  • myimage_x0.15625_z0.tif
  • myimage_x0.625_z0.tif
  • myimage_x10_z0.tif
  • myimage_x2.5_z0.tif
  • myimage_x40_z0.tif

当我需要myimage_macro.tif时,vips正在服用myimage_x40_z0.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

获得标签的一小部分。

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

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

以上是关于libvips从Ex40中提取NDPI区域而不是从地图中提取的主要内容,如果未能解决你的问题,请参考以下文章

从图像文件中提取感兴趣区域而不读取整个图像

对象 Promise 显示而不是从 API 调用中提取的数据

从字符串而不是从文件加载模板

支持的 libvips CLI 输出到 Windows 标准输出的格式

从 Nuget 包中自动提取本机和托管 DLL

DPI — nDPI — 安装部署与应用示例