stitching of czi dataset from Axioscan Slidescanner

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

stitching of czi dataset from Axioscan Slidescanner

Kai Schleicher
I've acquired a tiled dataset (ca 10% overlap) on the Zeiss AxioscanZ1
Slidescanner in the czi format using jpegXR compression.

The czi contains a single scene (aka "scope"), all tiles recorded across
3 channels and 7z planes, several lower res pyramid images as well as
snapshots of the slide and its label (download, ca 8GB
<https://filesender.switch.ch/filesender/?vid=66166618-ca5a-df49-4ac1-00000cdb5b73>).

I'd like to open this dataset and stitch it using either the
grid/collection stitcher or the BigStitcher, but so far both plugins
where not able to read the data.

Is there a way I can make this possible or did I simply set the plugins
incorrectly?

The file is understood by bioformats and I am using an up-to-date FIJI.

Thanks and cheers,
Kai

--
>>Please note my NEW PHONE NUMBERS: +41 61 207 57 31 (direct) +41 61 207 22 50 (central)<<
Kai Schleicher, PhD | Research Associate in Advanced Light Microscopy | Biozentrum, University of Basel | Klingelbergstrasse 50/70 | CH-4056 Basel |
Phone: +41 61 207 57 31 (direct) +41 61 207 22 50 (central) | [hidden email] | www.biozentrum.unibas.ch | www.microscopynetwork.unibas.ch


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: stitching of czi dataset from Axioscan Slidescanner

Stephan.Preibisch@mdc-berlin.de
Hi Kai, we are looking into that and keep you updated, thanks a lot!

Cheers,
Stephan

Sent from my iPhone

> On Aug 10, 2017, at 15:26, Kai Schleicher <[hidden email]> wrote:
>
> I've acquired a tiled dataset (ca 10% overlap) on the Zeiss AxioscanZ1 Slidescanner in the czi format using jpegXR compression.
>
> The czi contains a single scene (aka "scope"), all tiles recorded across 3 channels and 7z planes, several lower res pyramid images as well as snapshots of the slide and its label (download, ca 8GB <https://filesender.switch.ch/filesender/?vid=66166618-ca5a-df49-4ac1-00000cdb5b73>).
>
> I'd like to open this dataset and stitch it using either the grid/collection stitcher or the BigStitcher, but so far both plugins where not able to read the data.
>
> Is there a way I can make this possible or did I simply set the plugins incorrectly?
>
> The file is understood by bioformats and I am using an up-to-date FIJI.
>
> Thanks and cheers,
> Kai
>
> --
>>> Please note my NEW PHONE NUMBERS: +41 61 207 57 31 (direct) +41 61 207 22 50 (central)<<
> Kai Schleicher, PhD | Research Associate in Advanced Light Microscopy | Biozentrum, University of Basel | Klingelbergstrasse 50/70 | CH-4056 Basel |
> Phone: +41 61 207 57 31 (direct) +41 61 207 22 50 (central) | [hidden email] | www.biozentrum.unibas.ch | www.microscopynetwork.unibas.ch
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: stitching of czi dataset from Axioscan Slidescanner

Kai Schleicher
Hi Stephan, thanks for your reply and looking into this!

I've uploaded another relevant example image
<https://filesender.switch.ch/filesender/?vid=19c77bc9-1421-9a29-b25f-00004de41858>
(~17GB).

While the previous file has already been stitched (albeit badly) by the
"online" method implemented in the Zeiss Zen acquisition software, this
file here is completely raw and unstitched and furthermore has no pyramids.

What I am hoping to accomplish is to

  * stitch the datasets (or restitch them better)
  * use one of the methods as offered by the grid/collection stitched to
    better deal with the dark frames that stem from bleaching where the
    tiles overlap, e.g. linear blending or max intensity

Thanks for your help and cheers,
Kai


On 08/10/2017 06:46 PM, [hidden email] wrote:

> Hi Kai, we are looking into that and keep you updated, thanks a lot!
>
> Cheers,
> Stephan
>
> Sent from my iPhone
>
>> On Aug 10, 2017, at 15:26, Kai Schleicher <[hidden email]> wrote:
>>
>> I've acquired a tiled dataset (ca 10% overlap) on the Zeiss AxioscanZ1 Slidescanner in the czi format using jpegXR compression.
>>
>> The czi contains a single scene (aka "scope"), all tiles recorded across 3 channels and 7z planes, several lower res pyramid images as well as snapshots of the slide and its label (download, ca 8GB <https://filesender.switch.ch/filesender/?vid=66166618-ca5a-df49-4ac1-00000cdb5b73>).
>>
>> I'd like to open this dataset and stitch it using either the grid/collection stitcher or the BigStitcher, but so far both plugins where not able to read the data.
>>
>> Is there a way I can make this possible or did I simply set the plugins incorrectly?
>>
>> The file is understood by bioformats and I am using an up-to-date FIJI.
>>
>> Thanks and cheers,
>> Kai
>>
>> --
>>>> Please note my NEW PHONE NUMBERS: +41 61 207 57 31 (direct) +41 61 207 22 50 (central)<<
>> Kai Schleicher, PhD | Research Associate in Advanced Light Microscopy | Biozentrum, University of Basel | Klingelbergstrasse 50/70 | CH-4056 Basel |
>> Phone: +41 61 207 57 31 (direct) +41 61 207 22 50 (central) | [hidden email] | www.biozentrum.unibas.ch | www.microscopynetwork.unibas.ch
>>
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
>> Please note my NEW PHONE NUMBERS: +41 61 207 57 31 (direct) +41 61 207 22 50 (central)<<
Kai Schleicher, PhD | Research Associate in Advanced Light Microscopy | Biozentrum, University of Basel | Klingelbergstrasse 50/70 | CH-4056 Basel |
Phone: +41 61 207 57 31 (direct) +41 61 207 22 50 (central) | [hidden email] | www.biozentrum.unibas.ch | www.microscopynetwork.unibas.ch


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: stitching of czi dataset from Axioscan Slidescanner

Jan Eglinger
Hi all,

for the record, there are several issues on github that might be related
to this topic:

https://github.com/openmicroscopy/bioformats/issues/2898
https://github.com/fiji/Stitching/issues/42

@Kai: is there a specific reason you posted this here instead of the
ImageJ forum [1]? :)

Cheers
Jan

[1]: http://forum.imagej.net/



On 12.08.2017 13:13, Kai Schleicher wrote:

> Hi Stephan, thanks for your reply and looking into this!
>
> I've uploaded another relevant example image
> <https://filesender.switch.ch/filesender/?vid=19c77bc9-1421-9a29-b25f-00004de41858>
> (~17GB).
>
> While the previous file has already been stitched (albeit badly) by the
> "online" method implemented in the Zeiss Zen acquisition software, this
> file here is completely raw and unstitched and furthermore has no pyramids.
>
> What I am hoping to accomplish is to
>
>   * stitch the datasets (or restitch them better)
>   * use one of the methods as offered by the grid/collection stitched to
>     better deal with the dark frames that stem from bleaching where the
>     tiles overlap, e.g. linear blending or max intensity
>
> Thanks for your help and cheers,
> Kai
>
>
> On 08/10/2017 06:46 PM, [hidden email] wrote:
>> Hi Kai, we are looking into that and keep you updated, thanks a lot!
>>
>> Cheers,
>> Stephan
>>
>> Sent from my iPhone
>>
>>> On Aug 10, 2017, at 15:26, Kai Schleicher <[hidden email]>
>>> wrote:
>>>
>>> I've acquired a tiled dataset (ca 10% overlap) on the Zeiss
>>> AxioscanZ1 Slidescanner in the czi format using jpegXR compression.
>>>
>>> The czi contains a single scene (aka "scope"), all tiles recorded
>>> across 3 channels and 7z planes, several lower res pyramid images as
>>> well as snapshots of the slide and its label (download, ca 8GB
>>> <https://filesender.switch.ch/filesender/?vid=66166618-ca5a-df49-4ac1-00000cdb5b73>).
>>>
>>>
>>> I'd like to open this dataset and stitch it using either the
>>> grid/collection stitcher or the BigStitcher, but so far both plugins
>>> where not able to read the data.
>>>
>>> Is there a way I can make this possible or did I simply set the
>>> plugins incorrectly?
>>>
>>> The file is understood by bioformats and I am using an up-to-date FIJI.
>>>
>>> Thanks and cheers,
>>> Kai
>>>
>>> --
>>>>> Please note my NEW PHONE NUMBERS: +41 61 207 57 31 (direct) +41 61
>>>>> 207 22 50 (central)<<
>>> Kai Schleicher, PhD | Research Associate in Advanced Light Microscopy
>>> | Biozentrum, University of Basel | Klingelbergstrasse 50/70 |
>>> CH-4056 Basel |
>>> Phone: +41 61 207 57 31 (direct) +41 61 207 22 50 (central) |
>>> [hidden email] | www.biozentrum.unibas.ch |
>>> www.microscopynetwork.unibas.ch
>>>
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

image-based spectroscopy

Frederic V. Hessman
Thanks for all the help and ideas on how to do simple image-based spectroscopy!


My high school science camp kids will be taking CCD images of various spectra created by various spectrographs, and I needed a simple means for them to calibrate the images (via the ImageJ astronomy plugins and scripts), wavelength calibrate the final spectral images, and then plot them dynamically including the wavelength-calibration.

 The initial package with jar-file, toolset macros and “Spectroscopy” plugin directory is available at http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/ <http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/>  (brief info and a zip file containing all you need): the process includes the following steps

        - configure by double-clicking on the ID icon  (selection of spectral quantity, e.g. “Wavelength” or “Frequency”, units, and rectangle of ID ROI);

        - with the ID icon selected, identify calibration spectral lines by clicking on a known spectral feature in the image (creates a rectangular ROI from which the centroid is measured), and then being asked for the corresponding standard value (e.g. wavelength) so that the x-position and value can be entered in the Results table (was easier to write and is easier for first-time students to use than the RoiManager);

        - the “Wavelength Calibration” macro takes the Results table and fits a linear pixel(wavelength) dispersion relation (no, not wavelength(pixel) - the wavelengths are known and the positions are measured!) and shows a plot of the results;

        - the “Apply Calibration” macro calibrates the image using the standard ImageJ Calibration object by trivially inverting pixel(wavelength).

        - finally, the Calibrated_Profiler object can produce a plot of the calibrated image or a ROI within (if no ROI has been set, unlike the standard Profiler, then nearly the entire image is selected so that it’s easier to decide what to do - a full selection makes it hard to grasp the ROI’s grabbing points!).

Since it’s impossible to do any analysis within the dynamic plot, the kids have to save their final result as a csv-file and work further in Excel/OpenOffice.

If you’re only interested in (live) calibrated plots, there are also links to the two class files you’ll need at the link above.


Unfortunately, work with prism spectrographs results in highly non-linear dispersion curves and the generic Calibration object really isn’t up to it.  I’m trying to write a SpectralCalibration replacement that extends Calibrations POLY2 and POLY3 models to the spacial scale so that I could

                …
                SpectralCalibration spcal = new SpectralCalibration (…);
                imp.setCalibration (spcal);
                …

and so be able to give non-linear results with getX() and getRawX(),  but  I’m hindered in transfering all the calibration info by all the private Calibration variables (sigh…  what did I say…)!  It would help to at least have a

                public Calibration (Calibration cal)

method so that I could separate the old and new internal info via

                public SpectralCalibration (Calibration cal)
                        {
                        super (cal);
                        mystuff = …
                        }

but I think the “private” fetishists have even blocked this.  Remember: there are two main reasons for programming within the OO paradigm, and sub-classing is one of them.  If you close doors to daughter classes, you have to create new doors for them.

Since I’m starting to punt, I’ll simply have to do as well as I can and accept that SpectralCalibration will not be exactly the same in all the inner details.  Will add SpectralCalibration to the package linked above when it works.

Yes, I should be doing this within ImageJ2 - maybe all of this is trivial therein -  but I have a “customer base" of schools and colleagues using ImageJ1 and AstroImageJ.

Rick



------------------------------------------------------------------------------------------------
Dr. Frederic V. Hessman     [hidden email]
Institut für Astrophysik          Tel.  +49-551-39-5052
Friedrich-Hund-Platz 1         Fax +49-551-39-5043
37077 Goettingen                 Room F04-133
http://www.Astro.physik.Uni-Goettingen.de/~hessman
-------------------------------------------------------------------------------------------------
MONET: a MOnitoring NEtwork of Telescopes
http://monet.Uni-Goettingen.de
-------------------------------------------------------------------------------------------------



--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: image-based spectroscopy

Frederic V. Hessman
Last update to the ImageJ list:

Adding non-linear spatial calibration was easier than I thought, so I managed to build in support for several standard ImageJ CurveFit functions that are easily inverted (need pixel(wavelength) and wavelength(pixel)).  This makes the calibration model for the primary spatial axis the same as for the intensities.  Generalisation to the other axes would be tricky...

I also added metadata support so that an image, once calibrated, can be stored as a FITS file and re-constituted  when read back in by re-calibration using the internal metadata.  Although there are various World Coordinate System (WCS) implementations for astronomical spectra around, few offer the functional flexibility I needed for prism spectra, so I dreamed up my own simple metadata standard using the usual FITS keyword=value / comment model: here’s a snippet from the image info:

COMMENT ImageJ Spectroscopy package Version 2017-AUG-18                        
SP-QUANT= 'Wavelength' / spectral quantity of x-axis
SP-UNITS= 'Angstroms' / spectral units of x-axis
SP-MODEL= 'Exponential with Offset' / spectral dispersion model
SP-FUNCT= 'pixel = c0*exp(-c1*w)+c2' / spectral dispersion function
SP-COEF0= 3418.8907 / spectral coefficient
SP-COEF1= 8.91E-4 / spectral coefficient
SP-COEF2= 293.2363 / spectral coefficient
SP-COEF3= 0.0 / spectral coefficient

This does require my astroj.jar file (for FitsJ) that automatically comes with the Astronomy package or with AstroImageJ but can also be downloaded from my Spectroscopy page at http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/ 

Examples of how things work and what everything looks like can be found at the link above, but here’s a calibrated profile showing how the Hg lines are broadened in wavelength due to the non-linear dispersion curve when plotted linearly in wavelength.

Rick


> On 17 Aug 2017, at 09:09, Frederic V. Hessman <[hidden email]> wrote:
>
> Thanks for all the help and ideas on how to do simple image-based spectroscopy!
>
>
> My high school science camp kids will be taking CCD images of various spectra created by various spectrographs, and I needed a simple means for them to calibrate the images (via the ImageJ astronomy plugins and scripts), wavelength calibrate the final spectral images, and then plot them dynamically including the wavelength-calibration.
>
> The initial package with jar-file, toolset macros and “Spectroscopy” plugin directory is available at http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/ <http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/>  (brief info and a zip file containing all you need): the process includes the following steps
>
> - configure by double-clicking on the ID icon  (selection of spectral quantity, e.g. “Wavelength” or “Frequency”, units, and rectangle of ID ROI);
>
> - with the ID icon selected, identify calibration spectral lines by clicking on a known spectral feature in the image (creates a rectangular ROI from which the centroid is measured), and then being asked for the corresponding standard value (e.g. wavelength) so that the x-position and value can be entered in the Results table (was easier to write and is easier for first-time students to use than the RoiManager);
>
> - the “Wavelength Calibration” macro takes the Results table and fits a linear pixel(wavelength) dispersion relation (no, not wavelength(pixel) - the wavelengths are known and the positions are measured!) and shows a plot of the results;
>
> - the “Apply Calibration” macro calibrates the image using the standard ImageJ Calibration object by trivially inverting pixel(wavelength).
>
> - finally, the Calibrated_Profiler object can produce a plot of the calibrated image or a ROI within (if no ROI has been set, unlike the standard Profiler, then nearly the entire image is selected so that it’s easier to decide what to do - a full selection makes it hard to grasp the ROI’s grabbing points!).
>
> Since it’s impossible to do any analysis within the dynamic plot, the kids have to save their final result as a csv-file and work further in Excel/OpenOffice.
>
> If you’re only interested in (live) calibrated plots, there are also links to the two class files you’ll need at the link above.
>
>
> Unfortunately, work with prism spectrographs results in highly non-linear dispersion curves and the generic Calibration object really isn’t up to it.  I’m trying to write a SpectralCalibration replacement that extends Calibrations POLY2 and POLY3 models to the spacial scale so that I could
>
> …
> SpectralCalibration spcal = new SpectralCalibration (…);
> imp.setCalibration (spcal);
> …
>
> and so be able to give non-linear results with getX() and getRawX(),  but  I’m hindered in transfering all the calibration info by all the private Calibration variables (sigh…  what did I say…)!  It would help to at least have a
>
> public Calibration (Calibration cal)
>
> method so that I could separate the old and new internal info via
>
> public SpectralCalibration (Calibration cal)
> {
> super (cal);
> mystuff = …
> }
>
> but I think the “private” fetishists have even blocked this.  Remember: there are two main reasons for programming within the OO paradigm, and sub-classing is one of them.  If you close doors to daughter classes, you have to create new doors for them.
>
> Since I’m starting to punt, I’ll simply have to do as well as I can and accept that SpectralCalibration will not be exactly the same in all the inner details.  Will add SpectralCalibration to the package linked above when it works.
>
> Yes, I should be doing this within ImageJ2 - maybe all of this is trivial therein -  but I have a “customer base" of schools and colleagues using ImageJ1 and AstroImageJ.
>
> Rick
>
>
>
> ------------------------------------------------------------------------------------------------
> Dr. Frederic V. Hessman     [hidden email]
> Institut für Astrophysik          Tel.  +49-551-39-5052
> Friedrich-Hund-Platz 1         Fax +49-551-39-5043
> 37077 Goettingen                 Room F04-133
> http://www.Astro.physik.Uni-Goettingen.de/~hessman
> -------------------------------------------------------------------------------------------------
> MONET: a MOnitoring NEtwork of Telescopes
> http://monet.Uni-Goettingen.de
> -------------------------------------------------------------------------------------------------
>
>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

calibrated.png (14K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: image-based spectroscopy

Frederic V. Hessman
Hmmm…. my email went out but didn’t contain the text I sent, so here’s the text to the plot again….
------------------------------------------

Last update to the ImageJ list:

Adding non-linear spatial calibration was easier than I thought, so I managed to build in support for several standard ImageJ CurveFit functions that are easily inverted (need pixel(wavelength) and wavelength(pixel)).  This makes the calibration model for the primary spatial axis the same as for the intensities.  Generalisation to the other axes would be tricky...

I also added metadata support so that an image, once calibrated, can be stored as a FITS file and re-constituted  when read back in by re-calibration using the internal metadata.  Although there are various World Coordinate System (WCS) implementations for astronomical spectra around, few offer the functional flexibility I needed for prism spectra, so I dreamed up my own simple metadata standard using the usual FITS keyword=value / comment model: here’s a snippet from the image info:

COMMENT ImageJ Spectroscopy package Version 2017-AUG-18                        
SP-QUANT= 'Wavelength' / spectral quantity of x-axis
SP-UNITS= 'Angstroms' / spectral units of x-axis
SP-MODEL= 'Exponential with Offset' / spectral dispersion model
SP-FUNCT= 'pixel = c0*exp(-c1*w)+c2' / spectral dispersion function
SP-COEF0= 3418.8907 / spectral coefficient
SP-COEF1= 8.91E-4 / spectral coefficient
SP-COEF2= 293.2363 / spectral coefficient
SP-COEF3= 0.0 / spectral coefficient

This does require my astroj.jar file (for FitsJ) that automatically comes with the Astronomy package or with AstroImageJ but can also be downloaded from my Spectroscopy page at http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/ <http://www.astro.physik.uni-goettingen.de/~hessman/ImageJ/Spectroscopy/>

Examples of how things work and what everything looks like can be found at the link above, but here’s a calibrated profile showing how the Hg lines are broadened in wavelength due to the non-linear dispersion curve when plotted linearly in wavelength.

Rick


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html