Extract a whole scale image from a SVS format file in C++

与世无争的帅哥 提交于 2020-01-06 11:11:12

问题


I am trying to extract a whole scale image from a SVS file in C++.

I saw an explanation from the OpenSlide homepage. It says the SVS format is "single-file pyramidal tiled TIFF".

So I tried to extract a whole-scale image like I did for TIFF image: I read all IFDs from the SVS file, but there is no 273 tag which contains an address pointing to a whole scale image.

That's why I am little confused now, the SVS format doesn't have a whole scale image inside the file?

I found an undefined private tag from a SVS file which number is 34675. Is this tag is for a whole scale image? Or is there a proper way to extract it?


回答1:


Aperio SVS is a tiled format. All levels of the pyramid are tiled images. The base layer is the first TIFF directory. This page of the LibTiff documentation shows how to read tiled images.

In short, you need to look for tag 324 (TIFFTAG_TILEOFFSETS), as well as tags 322 and 323 (TIFFTAG_TILEWIDTH, TIFFTAG_TILELENGTH). I highly recommend you use LibTiff for this, and don’t try to roll your own.

The custom tag in the SVS file contains metadata, including the physical size of a pixel in micron (SVS doesn’t set the resolution TIFF tags).




回答2:


You can read out the thumbnail image (is this what you mean by whole scale image?) as an openslide associated image.

For example, libvips has a convenient openslide binding written by the openslide authors:

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

Lists the images in the SVS file. macro is the huge pyramid that you get by default, thumbnail is the small overview, label is the shot of the slide label.

Get the thumbnail like this:

$ vips copy CMU-1.svs[associated=thumbnail] x.jpg

To read as a JPG image.

In C++, you could write:

VImage thumb = VImage::new_from_file("CMU-1.svs", 
    VImage::option()->set("associated", "thumbnail"));
thumb.write_to_file("x.jpg");


来源:https://stackoverflow.com/questions/53349947/extract-a-whole-scale-image-from-a-svs-format-file-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!