Opening multiscene CZI files with FIJI

fiji
bio-formats
imagej
czi
qupath

#1

Hi all,

Hopefully someone can help. We have a Zeiss Axioscan Z1 slide scanner and we generate both brightfield and fluorescent images in a pyramid CZI format using Zen Blue as our acquisition software. Our CZI files often contain more than one ‘scene’, a scene is a scan of a particular tissue section so depending on how many sections are on a slide will determine the number of scenes. From what I’ve read the Bio-formats plugin should be able to handle our images and allow us to open in FIJI/Image J however I’ve spent quite a bit of time trying this with no success. The most common failure is a silent fail of the image to open and so I was wondering if anyone has any advice to offer?

Many thanks,

Michelle


#2

@Michelle_S

The best way to get help is to report a bug directly to OME since they don’t regularly frequent this forum… Some members do check occasionally - so you could wait a day or two - but then I’d go to them directly.

They did do updates for dealing with scenes in CZI - but apparently there are still a few exceptions (check out these older posts on the OME Forum).

eta


#3

If you are using Windows, depending on the compression you may need the Visual Studio 2015 C++ Redistributable – see https://docs.openmicroscopy.org/bio-formats/5.9.0/formats/zeiss-czi.html for the info and link.

The pyramidal images may also simply be too large for Fiji to open in one go. You could try QuPath, which is designed to handle pyramidal images, along with the Bio-Formats extension.

Note: QuPath + Bio-Formats will also require the Visual Studio 2015 C++ Redistributable to be installed if you’re using Windows.


#4

Hi both,

Thanks very much for the advice I’ll give these things a go.

Best wishes,

Michelle


#5

Hello Michelle,

We have the same slide scanner here and as you noticed Fiji doesn’t like this format. The easiest way to get your images is to export them in the Tif format using the Batch mode of the processing tab in Zen. You will end up with individual file for each scene, and depending on how big your pictures are, it might be the best way to get something out of them with fiji, IF you are working on brighfield of 3 colors fluorescent images it will work fine. For more than 4 colors it becomes more tricky as Zen likes to compress into an RGB format, but you can extract the individual channels and merge them back into a composite file in Fiji.


#6

Without meaning to push the QuPath thing too hard, assuming your image can be opened with QuPath + Bio-Formats, then that it is arguably easier than the Zen method. It also doesn’t have the conversion-to-RGB problem or any need to extract channels individually.

Rather, you would draw around any region in QuPath and choose the option to send it to ImageJ - optionally scaling it down if you like. The image sent to ImageJ should retain the channels and bit depth, and also have its properties set accordingly (e.g. pixel size, origin).

This means that if you create ROIs/overlays in ImageJ, you can optionally send them back to QuPath to view them in the correct location in the original whole slide image.

The properties are also maintained if you save the image as an ImageJ TIFF, which increases your processing options further. For example, you might save some TIFFs created in this way, run a Fiji macro/script to process them, and at some later date decide to write a QuPath script to bring all your ImageJ/Fiji ROIs back onto the whole slide. Alternatively, you could could use CellProfiler or some other software if you preferred for the batch processing.

There’s a video showing the general idea of exchanging data between QuPath and ImageJ here and some written documentation here.

I also wrote a blog post showing how you can go from binary images showing detected regions back into QuPath here.


#7

Depending o your IT skills you might have a look into libCZI, a powerful and open-source c++ library to read CZI o ay platform.


#9

Does anyone still need help with opening multi-scene CZIs? If yes, please let me know. In many cases it makes sense to split the scenes in ZEN into single CZIs, because Fiji can handle those much better.


#10

To add to my previous post here some additional information about multi-scene CZIs.

  • scenes are nothing else than physically distinct tile regions
  • the example shows CZI with two scenes, where each scene has X tiles
  • to be able to zoom and navigate inside those images (and especially in much bigger ones) the CZI data format is using a concept called image pyramid --> btw. something OME 6 will have this as well :slight_smile: soon

Now when opening such an CZI one should be aware of the Autostitch option, which can be found inside the BioFormats plugin Configuration.

image

  • when activated, BioFormats will read the scenes as a whole image including all pyramid levels.
  • this becomes obvious when inspection the different image series offered by BioFormats --> scenes and their respective pyramid levels in a CZI will be interpreted currently as series, since OME has no scenes & pyramid concept yet.

  • to open both individual scenes in full resolution please check the series with the full pixel count
  • when pressing OK one will get two images

  • when the autostich option is not activated, BioFormats will treat all tiles in all scenes as single image (in this case with 640x640 pixels)

  • when using the Open all series and Concatenate series when compatible option are active all tiles from both scenes will be open as one single stack
  • Note that in such a case BioFormats will “misinterpret” this as a time series with … frames (one for each tile)

Thanks to the close and very good collaboration between the OME community and the ZEISS folks opening multiscene CZI images works quite well (in my opinion). Even the JPG-XR compresion is supported by BioFormats due to a custom implementation supported by ZEISS.

Nevertheless no software is perfect and please fell free to give feedback and report issues.

Happy imaging!

Sebi (from ZEISS)


#11

Hi Pete,

We use Qupath and we think it handles these files brilliantly, however the issues we have are not being able to complete the same analysis in Qupath that we can perform in Image J.
For instance I use the Weka segmentation plugin in Image J to pull out areas of staining as we had some stained tissues sections using two colours brown and purple (plus hematoxylin) which didn’t seem to separate well using colour deconvolution.
I’ve installed the Weka segmentation plugin on my Qupath software but the interface is very different and I’m struggling with it as I’d like to use it in the same way as Image J. Often we are quantifying multiple stromal markers and so need percentage area which seems to be more difficult to achieve with Qupath than with the analyze particles plugin in Image J.
I have played around to be able to export multiple TIFF files from Qupath so that’s the only way we can perform the analysis at the moment.
In the future we’d like to perform registration of multiple staining batches of the same sections that have been slide scanned so we can say perform 2 lots of 3 colour fluorescence staining and overlay them so we have six colours on the same image but I’m not sure if Qupath would manage this?

Thanks,

Michelle


#12

Hi Sebi,

Yes we still have issues with these files. I’m struggling to find an obvious way in the Zen software to split and save multi-scene files that preserves the pyramid rather than just a one dimensional snap-shot.
I’ve never managed to get Image J/FIJI to open one of these multi-scene pyramid JPegXR active files and still keep the pyramid function intact.
If you could help with this that would be greatly appreciated.

Best wishes,

Michelle


#13

Zen will only create a pyramidal structure if the file size is over a certain limit, though I am not sure what that is. If over that limit, Zen (Blue) automatically creates it when you split scenes, write files, and look at the image (I think you need to open it). The greater issue for me tends to be that the initial multiscene files might be JPEGXR compressed, and after performing operations on the image (like stitching the tiles together), the resulting image is full size. So a 200MB scene might become 6GB, while still maintaining all of the resolution of a 200MB compressed image. Compressing it a second time makes things worse. If I know I wanted separate files and was starting with a multiscene CZI, I would probably save the initial image at full quality, split the scenes, and then save with JPEGXR compression as the final step. That may or may not be helpful to you! :slight_smile:

For the ImageJ stuff, you can run quite a few plugins from ImageJ through QuPath, though I have not specifically tried that one (Weka segmentation). You do need to add the plugins to QuPath’s version of ImageJ though. In Preferences, there should be a field for “ImageJ plugins directory.” I have created a few different scripts that use the Analyze Particles… feature to get objects returned to QuPath through ImageJ, so that is definitely possible. Maybe these scripts will help:
A quick intro that also includes a link to Pete’s intro:

Summary

https://gist.github.com/Svidro/5e4c29630e8d2ef36988184987d1028f#file-imagej-plugin-macros-in-a-script-groovy

A more general script to handle finding brighter regions rather than darker regions

Summary

https://gist.github.com/Svidro/6171d6d24a85539d3af5d417bc928d50#file-lipid-detection-and-measurement-groovy

This one calls one of two different IJ scripts, and inserts variables for thresholds given by the user. It was mostly intended to help with newer 7-8+ channel fluorescent images:

Summary

https://gist.github.com/Svidro/6171d6d24a85539d3af5d417bc928d50#file-tissue-detection-with-no-gui-groovy

Finally, for percentage area, I also use a script that sums the areas of objects of a particular set of classes, and then divides them by the total area of their parent annotation, and adds that percentage to the parent annotation measurement list. It may take some editing for your use. For example you may want to add an extra for loop so that it cycles through only objects of a particular class, and then creates multiple percentages.

Summary

https://gist.github.com/Svidro/68dd668af64ad91b2f76022015dd8a45#file-area-measurements-to-annotation-groovy

I’ll leave the pixel classifier question to Pete, and I am not sure QuPath really performs any image modifications… though many things can be scripted! Here is one discussion:
https://groups.google.com/forum/#!topic/qupath-users/FuBgGrKoX_k

Cheers!

Ugh, edited for formatting, did noooot like the way the links worked! Will need to figure that out when I have more time!


#14

JPGXR compression in Zen is completely optional and can be switched on and off on demand.

And BioFormats can read JPGXR.

Zen also allows to switch of the initial image pyramid.


#15

Hi @MSSomerville I’m currently working on a pretty substantial update to QuPath. It should be available within the next month or two and will have some new features I think you’ll find useful.

In the meantime, lots can be done to combine ImageJ & QuPath by scripting (a relatively simple example here). By pointing QuPath’s ImageJ plugins directory to a Fiji installation (as @Research_Associate describes) you may find you’re able to access Weka segmentation within QuPath scripts… although I haven’t tested this specifically myself.

Most of my available time these days is spent swallowed up inside the code (talks & workshops in March give a pretty hard deadline), but I’ll post more about the changes and new features when it’s finally available. Feel free to send me a message if you need more info or want to discuss sooner.