User guide
Reading whole slide images in DICOM format using the dicomslide
package.
Constructing a DICOM Client
Use dicomweb_client.DICOMfileClient to read whole slide images from DICOM files stored on a file system:
import dicomweb_client
client = dicomweb_client.DICOMfileClient(url='file:///tmp/images')
Use dicomweb_client.DICOMwebClient to read whole slide images over network using DICOMweb services:
import dicomweb_client
client = dicomweb_client.DICOMwebClient(url='http://myserver.com/dicomweb')
Reading images using dicomslide API
import dicomslide
import numpy as np
from matplotlib import pyplot as plt
found_slides = dicomslide.find_slides(client, container_id='S22-ABC-123')
assert len(found_slides) == 1
slide = found_slides[0]
print(slide.num_channels)
print(slide.num_focal_planes)
print(slide.num_levels)
print(slide.total_pixel_matrix_dimensions)
print(slide.downsampling_factors)
print(slide.label_images)
print(slide.get_volume_images(channel_index=0, focal_plane_index=0))
region: np.ndarray = slide.get_image_region(
pixel_indices=(0, 0),
level=-1,
size=(512, 512),
channel_index=0,
focal_plane_index=0
)
plt.imshow(region)
plt.show()
Reading images using openslide API
The library also exposes an OpenSlide interface (dicomslide.OpenSlide
), which is intended as an API wrapper around a dicomslide.Slide
instance and to be used as a drop-in replacement for an openslide.OpenSlide instance:
from PIL import Image
openslide = dicomslide.OpenSlide(slide)
print(openslide.level_count)
print(openslide.dimensions)
print(openslide.level_dimensions)
print(openslide.level_downsamples)
print(openslide.properties)
print(openslide.associated_images)
thumbnail: Image.Image = openslide.get_thumbnail(size=(50, 100))
thumbnail.show()
Note that the OpenSlide API only supports 2D color images. For images with multiple channels or Z-planes, only the standard dicomslide API can be used.