-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
For openslide/openslide#396. Co-authored-by: Wei Chen <[email protected]> Signed-off-by: Benjamin Gilbert <[email protected]>
- Loading branch information
Showing
4 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
--- | ||
title: Zeiss format | ||
permalink: /formats/zeiss/ | ||
--- | ||
|
||
Format | ||
: single-file binary format | ||
|
||
File extensions | ||
: `.czi` | ||
|
||
OpenSlide vendor backend | ||
: `zeiss` | ||
|
||
|
||
## Detection | ||
|
||
OpenSlide will detect a file as Zeiss if: | ||
|
||
1. The file is not a TIFF. | ||
2. The file has at least 32 bytes and starts with `ZISRAWFILE`. | ||
|
||
|
||
## CZI format | ||
|
||
CZI slides consist of overlapping subblocks (image tiles) at arbitrary pixel | ||
positions. Subblocks in level 0 are typically large, e.g. 2056 x 2464 | ||
pixels. A slide may or may not include downsampled levels. Slides may | ||
include multiple scenes (scan regions), whose pyramids can have different | ||
numbers of downsampled levels. Scenes are reflected in the metadata but | ||
aren't very important for rendering the slide, since subblock positions are | ||
relative to the slide and not the scene. | ||
|
||
Slides have an array of subblock directory entries, which contain the | ||
subblock's dimensions, pixel format, compression type, and a pointer to a | ||
segment containing XML metadata and an image tile. A dimension represents | ||
coordinates along an axis; it contains a short string identifying the | ||
dimension, an offset, and for some dimensions, a size in level 0 and in the | ||
subblock's level. Possible dimensions are "`X`" and "`Y`" pixel | ||
coordinates, a scene identifier "`S`", a channel identifier "`C`" (with | ||
value 0 for brightfield), and the tile's Z-index "`M`". Higher Z-indexes | ||
should be rendered after lower Z-indexes. `X` offsets are negative. The | ||
downsample of a subblock can be computed by dividing its `X` or `Y` size in | ||
level 0 by its size in the subblock's level. | ||
|
||
Subblocks may be compressed in any of several formats. JPEG XR is common. | ||
Uncompressed 24 bpp or 48 bpp pixel data is also possible, as well as pixel | ||
data compressed with lossless [Zstandard][zstd] compression. The format | ||
also permits JPEG and LZW compression, though these do not appear to be | ||
common and OpenSlide does not support them. | ||
|
||
CZI files can embed arbitrary named attachments, which might be JPEG images, | ||
nested CZI files, or other metadata. The `Label` and `SlidePreview` | ||
attachments are stored as nested CZIs with one subblock of uncompressed | ||
pixel data, 24 bpp and 48 bpp respectively. The `Thumbnail` attachment is | ||
stored as a JPEG. | ||
|
||
CZI also includes a large XML document containing scan parameters for the | ||
slide. | ||
|
||
[zstd]: https://facebook.github.io/zstd/ | ||
|
||
## Associated Images | ||
|
||
`label` | ||
: the `Label` attachment (optional) | ||
|
||
`macro` | ||
: the `SlidePreview` attachment (optional) | ||
|
||
`thumbnail` | ||
: the `Thumbnail` attachment (optional) | ||
|
||
|
||
## Known Properties | ||
|
||
Certain text nodes and attributes from the XML metadata are represented as | ||
properties prefixed with "`zeiss.`". The available properties are those | ||
from the `AttachmentInfos`, `DisplaySetting`, `Information`, and `Scaling` | ||
elements of `ImageDocument.Metadata`. | ||
|
||
`openslide.mpp-x` | ||
: calculated as 1000000 times `zeiss.Scaling.Items.X.Value` | ||
|
||
`openslide.mpp-y` | ||
: calculated as 1000000 times `zeiss.Scaling.Items.Y.Value` | ||
|
||
`openslide.objective-power` | ||
: normalized `zeiss.Information.Instrument.Objectives.$objective.NominalMagnification` | ||
where the value of `$objective` is obtained from | ||
`zeiss.Information.Image.ObjectiveSettings.ObjectiveRef.Id` | ||
|
||
|
||
## Test Data | ||
|
||
<https://openslide.cs.cmu.edu/download/openslide-testdata/Zeiss/> | ||
|
||
|
||
## ImHex Patterns | ||
|
||
- [CZI file](https://github.com/openslide/openslide/blob/main/misc/imhex/zeiss-czi.hexpat) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters