Modules

Together with the scripts, a series of modules are provided. Each module contains a series of functions for image processing which are used during the script developing. The modules are the following, each of them provides a different kind of functions.

Utils

This modules provides all the functions to read and write images in a medical image format like ‘.nrrd’ or ‘.nifti’. All the formats supported by SimpleITK are allowed.

utils._read_dicom_series(filedir)[source]

Define and initialize the SimpleITK reader for the image series

Parameters

filedir (str) – path to the directory that contains the DICOM series

Returns

imgs – initialized, but not executed, reader for the DICOM series

Return type

SimpleITK image series reader

utils._read_image(filename)[source]

Define and initialize the SimpleITK image reader

Parameters

filename (str) – Path to the image file

Returns

image_array – initialized image reader

Return type

sitk reader

utils.deep_copy(image)[source]

Return a copy of the input image

Parameters

image (SimpleITK image) – Image to Copy

Returns

copy – copy of the input image

Return type

SimpleITK image

utils.load_pickle(filename)[source]

Load the pickle image file

Parameters

filename (str) – filename or path to load the file as pickle

Returns

data – array loaded from the given file

Return type

array_like

utils.normalize(image)[source]

Rescale each GL according to the mean and std of the whole image Will raise ZeroDivisionError if the provided image has constant pixel GL.

Parameters

image (SimpleITK image object) – image to normalize

Returns

normalized – normalized image

Return type

SimpleITK image

utils.read_image(filename)[source]

Read an image or a series from a format supported by SimpleITK.

Parameters

filename (str) – Path to the image file, each format supported by SimpleITK is allowed. To load a DICOM series, provide the path to the directory containing only the .dcm files for the single series

Returns

volume – Image red from the input file

Return type

SimpleITK image

Example

>>> from CTLungSeg.utils import read_image
>>>
>>> path = 'dicom/series/path/
>>> # load a DICOM series
>>> dicom = read_image(path)
>>> # load a Nifti image
>>> filename = 'path/to/nifti/file.nii'
>>> image = read_image(filename)
utils.save_pickle(filename, data)[source]

Save the image tensor as pickle

Parameters
  • filename (str) – file name or path to dump as pickle file

  • data (array-like) – image or stack to save

utils.shift_and_crop(image)[source]

Ensure that the air peak of HU is centerd on -1000 and shift it to reach 0. After that, ensure that the maximum HU value is +2048

Parameters

image (SimpleITK image) – image or stack of images, each pixel value must be expressed in hounsfield units (HU)

Returns

centered – image or stack of images in whch the air value in HU is shifted to zero

Return type

SimpleITK image

utils.shuffle_and_split(data, number_of_subarrays)[source]

Shuffle the input array and divide it into number_of_subarrays sub-arrays

Parameters
  • data (array-like) – input sample to divide

  • number_of_subarrays (int) – number of subsamples

Returns

out – list of random subsamples

Return type

list of array-like

utils.write_volume(image, output_filename)[source]

Write the image volume in a specified format. Each format supported by SimpleITK is supported. .. note: It does not write as .dcm series.

Parameters
  • image (SimpleITk image file) – image to write

  • output_filename (str) – output filename

Example

>>> from CTLungSeg.utils import read_image, write_volume
>>>
>>> input_file = 'path/ti/input/image'
>>> image = read_image(input_file)
>>> # process the image
>>> # write the image as nrrd
>>> output_name = 'path/to/output/filename.nrrd'
>>> write_volume(image, output_name)
>>> #or write the image as nifti
>>>  output_name = 'path/to/output/filename.nii'
>>> write_volume(image, output_name)

Method

This module contains the implementation of all the filter used for the processing of images inside the script. The functions are based on SimpleITK methods

method.adaptive_histogram_equalization(image, radius)[source]

Apply the histogram equalization in a neighbourhood of each voxel.

Parameters
  • image (SimpleITK image) –

  • radius (int > 0) – neighbourhood radius

Returns

equalized – equalized image or stack of images

Return type

SimpleITK image

method.adjust_gamma(image, gamma=1.0, image_type='HU')[source]

Apply a gamma correction on the input image: $GL_{out} = GL_{in}^{gamma}$

Parameters
  • image (SimpleITK image) – image stack to adjust

  • gamma (float) – power of the correction

  • image_type (str) – input data type: can be [‘uint8’, ‘uint16’, ‘HU’].

Returns

out – gamma corected image

Return type

SimpleITK image

method.apply_mask(image, mask, masking_value=0, outside_value=- 1500)[source]

Apply a mask to image

Parameters
  • image (SimpleITK image) – image to mask

  • mask (SimpleITK image) – image mask

Returns

masked

Return type

SimpleITK image

method.cast_image(image, new_pixel_type)[source]

Cast image pixels type to new_pixel_type

Parameters
  • image (SimpleITK image) – image to cast

  • new_pixel_type (SimpleITK PixelIDValueEnum) – new pixel type

Returns

casted – image with new pixel type

Return type

SimpleITK image

method.gauss_smooth(image, sigma=1.0)[source]

Apply a gaussian smoothing to the input image

Parameters
  • image (SimpleITK image) – image to smooth

  • sigma (float) – noise sigma

Returns

smoothed – smoothed image

Return type

SimpleITK image

method.median_filter(img, radius)[source]

Apply median blurring filter on the specified image.

Parameters
  • img (SimleITK image) – image or stack of images to filter

  • radius (int) – neighbourhood radius. must be greater or equal than 1.

Returns

blurred – median blurred image

Return type

SimpleITK image

Examples

>>> from CTLungSeg.utils import read_image
>>> from CTLungSeg.method import median_filter
>>> # load the DICOM series
>>> seriesname = 'path/to/input/series/'
>>> volume = read_image(seriesname)
>>> # define the kernel size and apply the median filter
>>> radius = 5
>>> filtered = median_blur(volume, radius)
method.std_filter(image, radius)[source]

Replace each pixel value with the standard deviation computed on a circular neighbourhood with specified radius

Parameters
  • image (SimpleITK image) – image to filter

  • radius (int) – radius of the neighborhood

Returns

filtered – filtered image

Return type

SimpleITK image

method.threshold(image, upper, lower, inside=1, outside=0)[source]

Apply an interval threshold to the image

Parameters
  • image (SimpeITK image) – input image

  • upper (int) – upper threshold value

  • lower (int) – lower threshold value

  • inside (int) – value to assign to the voxels with GL in [lower, upper]

  • outside (int) – value to assign to the voxels with GL outside [lower, upper]

Returns

thr – thresholded image

Return type

SimpleITK image

method.vesselness(image)[source]

Apply Frangi filter to find the likelihood of image regions to contains vessels (tubular structures)

Parameters

image (SimpleITK image) –

Returns

vesseness_map

Return type

SimpleITK image

Segmentation

This module contains the implementation of the functions used to perform the tasks on each script.