CZI: questions about openslide grids

Mathieu Malaterre mathieu.malaterre at gmail.com
Fri Dec 19 05:21:59 EST 2014


On Wed, Dec 17, 2014 at 9:15 AM, Mathieu Malaterre
<mathieu.malaterre at gmail.com> wrote:
> On Wed, Dec 17, 2014 at 8:43 AM, Benjamin Gilbert <bgilbert at cs.cmu.edu> wrote:
>> On 12/16/2014 05:23 AM, SOUEDET Nicolas 215310 wrote:
>>> Is there any other format supported that had to deal with this kind
>>> of issue ? I guess this is not particular to Zeiss, but maybe I am
>>> wrong ?
>>
>> The other formats that use irregular tile placements (MIRAX, Trestle,
>> Ventana) record both a tile's actual pixel coordinates and its idealized
>> placement on a regular grid.  This allows the tilemap grid to do a "poor
>> man's range search", using the ideal position as a starting point for a
>> limited brute-force search.
>>
>> If CZI only records the pixel coordinates of each tile, we've reached
>> the third option in my previous email.  I don't think it's worthwhile
>> trying to cleverly compute idealized tile advances (as Mathieu proposed
>> on StackExchange) just so you can use the tilemap grid.
>
> Just for later reference: I did not find the `idealized` position,
> does not mean they are not stored somewhere. For instance I found the
> jitter 10/15% somewhere in the XML file, which AFAIK is not documented
> in the CZI reference I downloaded...
>
> But I agree that a brute force approach should just work.

I am still starring at `Hypofyse Synapto.czi` sent on this list and
for ZISRAWSUBBLOCK (index 1977 as per my own counting) here is what I
see:

$ cat 1977.XML
<METADATA><Tags><OriginalBounds>&lt;OriginalBounds StartX="-138240"
SizeX="1600" StartY="82080" SizeY="1200" StartZ="0" StartC="0"
StartS="0" StartB="0" StartM="1309"
/&gt;</OriginalBounds></Tags><AttachmentSchema /></METADATA>%

However the points as stored in the `DimensionEntryDV` states:

std::vector of length 7, capacity 7 = {{Dimension = "X\000\000", Start
= -138130, Size = 1600, StartCoordinate = 0, StoredSize = 1600},
{Dimension = "Y\000\000", Start = 82083,
    Size = 1200, StartCoordinate = 0, StoredSize = 1200}, {Dimension =
"Z\000\000", Start = 0, Size = 1, StartCoordinate = 0, StoredSize =
1}, {Dimension = "C\000\000", Start = 0,
    Size = 1, StartCoordinate = 0, StoredSize = 1}, {Dimension =
"S\000\000", Start = 0, Size = 1, StartCoordinate = 0, StoredSize =
1}, {Dimension = "B\000\000", Start = 0, Size = 1,
    StartCoordinate = 0, StoredSize = 1}, {Dimension = "M\000\000",
Start = 1309, Size = 1, StartCoordinate = 0, StoredSize = 1}}

So maybe after all we may have access to idealized position through
the reading of the associated Metatada associated XML file
(Attachement is always empty AFAIK).

What's not clear for now, is that ZISRAWSUBBLOCK (index 1976) states:

$ cat 1976.XML
<METADATA><AttachmentSchema /></METADATA>%

-- 
Mathieu


More information about the openslide-users mailing list