intensity_normalization.util package

Submodules

intensity_normalization.util.coregister module

Co-register images with ANTsPy Author: Jacob Reinhold <jcreinhold@gmail.com> Created on: 03 Jun 2021

class intensity_normalization.util.coregister.Registrator(template: nib.nifti1.Nifti1Image | ants.ANTsImage = None, *, type_of_transform: str = 'Affine', interpolator: str = 'bSpline', metric: str = 'mattes', initial_rigid: bool = True)[source]

Bases: SingleImageCLI

static description() str[source]
classmethod from_argparse_args(args: Namespace) Registrator[source]
static fullname() str[source]
classmethod get_parent_parser(desc: str, valid_modalities: frozenset[str] = frozenset({'flair', 'md', 'other', 'pd', 't1', 't2'}), **kwargs: Any) ArgumentParser[source]
static load_image(image_path: str | PathLike) ants.ANTsImage[source]
static name() str[source]
register_images(images: collections.abc.Sequence[nib.nifti1.Nifti1Image | ants.ANTsImage], /) collections.abc.Sequence[nib.nifti1.Nifti1Image | ants.ANTsImage][source]
register_images_to_templates(images: collections.abc.Sequence[nib.nifti1.Nifti1Image | ants.ANTsImage], /, *, templates: collections.abc.Sequence[nib.nifti1.Nifti1Image | ants.ANTsImage]) collections.abc.Sequence[nib.nifti1.Nifti1Image | ants.ANTsImage][source]
intensity_normalization.util.coregister.register(image: ValidImage, /, template: Optional[ValidImage] = None, *, type_of_transform: str = 'Affine', interpolator: str = 'bSpline', metric: str = 'mattes', initial_rigid: bool = True, template_mask: Optional[ValidImage] = None) nib.nifti1.Nifti1Image | ants.ANTsImage[source]

intensity_normalization.util.histogram_tools module

Process the histograms of MR (brain) images Author: Jacob Reinhold <jcreinhold@gmail.com> Created on: 01 Jun 2021

intensity_normalization.util.histogram_tools.get_first_tissue_mode(image: ImageLike, /, *, remove_tail: bool = True, tail_percentage: float = 99.0) float[source]

Mode of the lowest-intensity tissue class

Parameters:
  • image – array of image data (like an np.ndarray)

  • remove_tail – remove tail from histogram

  • tail_percentage – if remove_tail, use the histogram below this percentage

Returns:

mode of the lowest-intensity tissue class

Return type:

first_tissue_mode

intensity_normalization.util.histogram_tools.get_largest_tissue_mode(image: ImageLike, /) float[source]

Mode of the largest tissue class

Parameters:

image – array of image data (like an np.ndarray)

Returns:

value of the largest tissue mode

Return type:

largest_tissue_mode

intensity_normalization.util.histogram_tools.get_last_tissue_mode(image: ImageLike, /, *, remove_tail: bool = True, tail_percentage: float = 96.0) float[source]

Mode of the highest-intensity tissue class

Parameters:
  • image – array of image data (like an np.ndarray)

  • remove_tail – remove tail from histogram

  • tail_percentage – if remove_tail, use the histogram below this percentage

Returns:

mode of the highest-intensity tissue class

Return type:

last_tissue_mode

intensity_normalization.util.histogram_tools.get_tissue_mode(image: ImageLike, /, *, modality: Modality) float[source]

Find the appropriate tissue mode given a modality

intensity_normalization.util.histogram_tools.smooth_histogram(image: ImageLike, /) tuple[intensity_normalization.typing.ImageLike, intensity_normalization.typing.ImageLike][source]

Use kernel density estimate to get smooth histogram

Parameters:

image – array of image data (like an np.ndarray)

Returns:

domain of the pdf pdf: kernel density estimate of the pdf of data

Return type:

grid

intensity_normalization.util.io module

Input/output utilities for the project Author: Jacob Reinhold <jcreinhold@gmail.com> Created on: 01 Jun 2021

intensity_normalization.util.io.gather_images(dirpath: str | PathLike, *, ext: str = 'nii*', exclude: Sequence[str] = ()) list[pymedio.image.Image][source]

return all images of extension ext from a directory

intensity_normalization.util.io.gather_images_and_masks(image_dir: intnormt.PathLike, mask_dir: intnormt.PathLike | None = None, *, ext: str = 'nii*', exclude: collections.abc.Sequence[str] = ()) tuple[PymedioImageList, PymedioMaskListOrNone][source]
intensity_normalization.util.io.glob_ext(dirpath: str | PathLike, *, ext: str = 'nii*', exclude: Sequence[str] = ()) list[pathlib.Path][source]

return a sorted list of ext files for a given directory path

intensity_normalization.util.io.split_filename(filepath: str | PathLike, /, *, resolve: bool = False) SplitFilename[source]

split a filepath into the directory, base, and extension .. rubric:: Examples

>>> split_filename("path/base.ext")
SplitFilename(path=PosixPath('path'), base='base', ext='.ext')
intensity_normalization.util.io.zip_with_nones(*args: Sequence[Any] | None) Zipped[source]

zip sequence args but if an arg is None, yield None in that argument index .. rubric:: Examples

>>> for x, y, z in zip_with_nones((1, 2), None, ("a", "b")):
...    print(x, y, z)
1 None a
2 None b

intensity_normalization.util.preprocess module

Preprocess MR images for image processing

Preprocess MR images according to a simple scheme: 1) N4 bias field correction 2) resample to X mm x Y mm x Z mm 3) reorient images to specification

Author: Jacob Reinhold <jcreinhold@gmail.com> Created on: 21 May 2018

class intensity_normalization.util.preprocess.Preprocessor(*, resolution: tuple[float, ...] | None = None, orientation: str = 'RAI', n4_convergence_options: dict[str, Any] | None = None, interp_type: str = 'linear', second_n4_with_smoothed_mask: bool = True)[source]

Bases: SingleImageCLI

static description() str[source]
classmethod from_argparse_args(args: Namespace) Preprocessor[source]
static fullname() str[source]
classmethod get_parent_parser(desc: str, valid_modalities: frozenset[str] = frozenset({'flair', 'md', 'other', 'pd', 't1', 't2'}), **kwargs: Any) ArgumentParser[source]
static load_image(image_path: str | PathLike) ants.ANTsImage[source]
static name() str[source]
intensity_normalization.util.preprocess.preprocess(image: intnormt.ImageLike, /, mask: intnormt.ImageLike | None = None, *, resolution: tuple[float, ...] | None = None, orientation: str = 'RAS', n4_convergence_options: dict[str, Any] | None = None, interp_type: str = 'linear', second_n4_with_smoothed_mask: bool = True) tuple[mioi.Image, mioi.Image][source]

Preprocess an MR image

Preprocess an MR image according to a simple scheme: 1) N4 bias field correction 2) resample to X mm x Y mm x … 3) reorient images to RAI

Parameters:
  • image – image to preprocess

  • mask – mask covering the brain of image (none if already skull-stripped)

  • resolution – resolution for resampling. None for no resampling.

  • orientation – reorient the image according to this. See ANTsPy for details.

  • n4_convergence_options – n4 processing options. See ANTsPy for details.

  • interp_type – interpolation type for resampling choices: linear, nearest_neighbor, gaussian, windowed_sinc, bspline

  • second_n4_with_smoothed_mask – do a second N4 with a smoothed mask often improves the bias field correction in the image

Returns:

preprocessed image and corresponding foreground mask

intensity_normalization.util.tissue_membership module

Find the tissue-membership of a T1-w brain image Author: Jacob Reinhold <jcreinhold@gmail.com> Created on: 01 Jun 2021

class intensity_normalization.util.tissue_membership.TissueMembershipFinder(hard_segmentation: bool = False)[source]

Bases: SingleImageCLI

static description() str[source]
classmethod from_argparse_args(args: Namespace) TissueMembershipFinder[source]
static fullname() str[source]
classmethod get_parent_parser(desc: str, valid_modalities: frozenset[str] = frozenset({'flair', 'md', 'other', 'pd', 't1', 't2'}), **kwargs: Any) ArgumentParser[source]
static name() str[source]
intensity_normalization.util.tissue_membership.find_tissue_memberships(image: intnormt.ImageLike, /, mask: intnormt.ImageLike | None = None, *, hard_segmentation: bool = False, n_classes: int = 3) mioi.Image[source]

Tissue memberships for a T1-w brain image with fuzzy c-means

Parameters:
  • image – image to find tissue masks for (must be T1-w)

  • mask – mask covering the brain of image (none if already skull-stripped)

  • hard_segmentation – pick the maximum membership as the true class in output

  • n_classes – number of classes (usually three for CSF, GM, WM)

Returns:

membership values for each of three classes in the image

(or class determinations w/ hard_seg)

Return type:

tissue_mask

Module contents