Precipoint VMIC driver and DeepZoom

Markus Pöpping markus.poepping at precipoint.de
Mon Jun 27 09:16:49 EDT 2016


Dear openslide community,

I have written a driver for the Precipoint VMIC slide format, which
already does a fairly good job in processing any existing VMIC files.
Since a nested ZIP archive is involved, a zip library was needed that
can handle this. For simplicity's sake I chose libzip, which is part of
linux distributions and compiles to a binary of 90kb size.

The current code can be found here:

https://github.com/Markus-PP/openslide/blob/master/src/openslide-vendor-precipoint.c

The driver is a single file for testing purposes; before committing it
is planned to move all functions, which are good for common use, to
openslide-decode-xxx

However, I'm stuck at some point and still have some questions.

1. DeepZoom: VMIC is very closely related to DeepZoom. Therefore I
believe it makes sense to implement "Generic DeepZoom in a zip archive"
(such as SZI, DZZ) and "Generic DeepZoom in a directory tree", together
with this. Is there any interest in the community for me to write the
generic driver, too ? Can anyone who uses such files point me to some
examples ? The key reason why I'm asking this is because I want to
organize the code.

2. libcairo: Can someone who is experienced with libcairo please check
the code from line 933 to 949 ?

3. zip: Are there known other slide formats that use ZIP containers ?
Also, libzip vs. libgsf Some people prefer libgsf. I found, libzip is
fast and easy to use, and though it's generally not thread-safe, a mutex
can fix this. So far, I have not worked with libgsf. Can it handle
nested zip archives, too ? From my PoV, the only reason for switching to
libgsf I can think of is that libgsf capabilities other than "zip" are
needed by future openslide drivers. Also, the binary of libgsf is much
larger. Any educated input on this ?

Thanks in advance,

Markus Pöpping

-----------------------

This works:

* DeepZoom pyramids inside VMIC with JPEG files. Overlaps other than "0"
are untested yet. These specs are enough for VMIC, they are always jpeg
and don't overlap.
* DeepZoom pyramids are cut off below the largest level that consist of
a single tile, so the list of levels doesn't get unnecessary long.

TO DO:

* PNG and BMP tiles. BMP is not used, The ability to load JP2K tiles is
proposed long-term, even as it's not part of the deepzoom standard.
* Overlap > 0 must be tested.
* Find which is the minimum required version of libzip.
* A driver for generic DeepZoom in a file system and/or generic DZZ (DZ
in a zip container), IF there's interest in the community

---------------------

VMIC demo slides can be found here ->

https://drive.google.com/file/d/0BwWPfDJXmk2gbm5ROU5TZUNxVms/view?usp=sharing
https://drive.google.com/file/d/0BwWPfDJXmk2gbUdsU1V2TGE4eHM/view?usp=sharing
https://drive.google.com/file/d/0BwWPfDJXmk2gcG5NME5zNGgwTnM/view?usp=sharing

VMIC files are a double nested zip archive which consists of an outer
container and an inner container. The outer container has some editable
settings, the inner container contains a standard deepzoom pyramid and
some specific files in the VMCF/ folder, such as properties and
associated images. The outer container is storage-only, the inner
container can be or can not be a compressed archive.

---------------------

Detection:

  The file is a ZIP.
  Among the first 20 entries, there exists a file which either starts
with "Image" or ends with ".vmici", AND is a zip archive.
  [To make this fast, at this point detection is flagged "positive" as
soon as the inner Image/.vmici container has been found and has the
magic bytes "PK34". The inner container is not opened or checked,
because it would take very long.]

---------------------


More information about the openslide-users mailing list