Opening CZI files#

When working with microscopy image data, many file formats are circulating such as the Carl Zeiss Image (CZI) format. In this notebook, we will open a .czi file using the czifile library.

Note: It is recommended to use AICSImageIO for reading CZI files as shown in this notebook.

See also

import czifile

from pathlib import Path
from skimage.io import imshow
import numpy as np

We can open an image usually by providing a path to it to an imread function. In the following we are using an image showing a Drosophila wing during pupal stage kindly provided by Romina Piscitello-Gómez (MPI CBG).

image = czifile.imread(Path("../../data/PupalWing.czi"))

A first good step is to inspect the dimensionality of the image.

image.shape
(1, 1, 1, 80, 520, 692, 1)

These formats usually have extra dimensions to accomodate many different data shapes. This is their common order when working with CZI files:

  • ‘X’: ‘Width’

  • ‘Y’: ‘Height’

  • ‘C’: ‘Channel’

  • ‘Z’: ‘Slice’ (depth)

  • ‘T’: ‘Time’

  • ‘R’: ‘Rotation’

  • ‘S’: ‘Scene’ / contiguous regions of interest in a mosaic image

We know that our image had three dimensions when we acquired it. One trick to get rid of the unecessary extra dimensions is the np.squeeze function.

image_squeezed = np.squeeze(image)
image_squeezed.shape
(80, 520, 692)

The image is a numpy array and thus, we can work with it normally.

type(image_squeezed)
numpy.ndarray
cropped_slice_image = image_squeezed[40, 200:400, 500:700]

imshow(cropped_slice_image)
C:\Users\haase\mambaforge\envs\bio39\lib\site-packages\skimage\io\_plugins\matplotlib_plugin.py:150: UserWarning: Low image data range; displaying image with stretched contrast.
  lo, hi, cmap = _get_display_range(image)
<matplotlib.image.AxesImage at 0x2347feaee50>
../_images/e0023d4602d14b6ad0f931d30465e7fc86bcb37529c1239d41408f082fa3ac85.png