从 C++ 中的 SVS 格式文件中提取全比例图像
Extract a whole scale image from a SVS format file in C++
我正在尝试从 C++ 中的 SVS 文件中提取全比例图像。
我看到了the OpenSlide homepage的解释。
它说 SVS 格式是 "single-file pyramidal tiled TIFF".
所以我尝试像提取 TIFF 图像那样提取全比例图像:我从 SVS 文件中读取了所有 IFD,但是没有包含指向全比例图像的地址的 273 标签。
这就是为什么我现在有点困惑,SVS 格式的文件中没有完整比例的图像?
我从一个SVS文件中找到了一个未定义的私有标签,其编号是34675。这个标签是针对整幅图像的吗?
或者有什么好的提取方法吗?
Aperio SVS 是一种平铺格式。金字塔的所有层次都是平铺图像。基础层是第一个 TIFF 目录。 This page of the LibTiff documentation 展示了如何读取平铺图像。
简而言之,您需要查找标签 324 (TIFFTAG_TILEOFFSETS
),以及标签 322 和 323 (TIFFTAG_TILEWIDTH
、TIFFTAG_TILELENGTH
)。我强烈建议您为此使用 LibTiff,不要尝试自己动手。
SVS 文件中的自定义标签包含元数据,包括像素的物理尺寸(以微米为单位)(SVS 不设置分辨率 TIFF 标签)。
您可以读出缩略图(这是您所说的全比例图像的意思吗?)作为 openslide 关联图像。
例如,libvips 有一个由 openslide 作者编写的方便的 openslide 绑定:
$ vipsheader -f slide-associated-images CMU-1.svs
label, macro, thumbnail
列出SVS 文件中的图像。 macro
是你默认得到的大金字塔,thumbnail
是小概览,label
是幻灯片标签的截图。
像这样获取缩略图:
$ vips copy CMU-1.svs[associated=thumbnail] x.jpg
以 JPG 图片格式阅读。
在 C++ 中,你可以这样写:
VImage thumb = VImage::new_from_file("CMU-1.svs",
VImage::option()->set("associated", "thumbnail"));
thumb.write_to_file("x.jpg");
我正在尝试从 C++ 中的 SVS 文件中提取全比例图像。
我看到了the OpenSlide homepage的解释。 它说 SVS 格式是 "single-file pyramidal tiled TIFF".
所以我尝试像提取 TIFF 图像那样提取全比例图像:我从 SVS 文件中读取了所有 IFD,但是没有包含指向全比例图像的地址的 273 标签。
这就是为什么我现在有点困惑,SVS 格式的文件中没有完整比例的图像?
我从一个SVS文件中找到了一个未定义的私有标签,其编号是34675。这个标签是针对整幅图像的吗? 或者有什么好的提取方法吗?
Aperio SVS 是一种平铺格式。金字塔的所有层次都是平铺图像。基础层是第一个 TIFF 目录。 This page of the LibTiff documentation 展示了如何读取平铺图像。
简而言之,您需要查找标签 324 (TIFFTAG_TILEOFFSETS
),以及标签 322 和 323 (TIFFTAG_TILEWIDTH
、TIFFTAG_TILELENGTH
)。我强烈建议您为此使用 LibTiff,不要尝试自己动手。
SVS 文件中的自定义标签包含元数据,包括像素的物理尺寸(以微米为单位)(SVS 不设置分辨率 TIFF 标签)。
您可以读出缩略图(这是您所说的全比例图像的意思吗?)作为 openslide 关联图像。
例如,libvips 有一个由 openslide 作者编写的方便的 openslide 绑定:
$ vipsheader -f slide-associated-images CMU-1.svs
label, macro, thumbnail
列出SVS 文件中的图像。 macro
是你默认得到的大金字塔,thumbnail
是小概览,label
是幻灯片标签的截图。
像这样获取缩略图:
$ vips copy CMU-1.svs[associated=thumbnail] x.jpg
以 JPG 图片格式阅读。
在 C++ 中,你可以这样写:
VImage thumb = VImage::new_from_file("CMU-1.svs",
VImage::option()->set("associated", "thumbnail"));
thumb.write_to_file("x.jpg");