jcreinhold/intensity-normalization

Normalize MR image intensities in Python

What it solves

Magnetic resonance (MR) images lack a consistent intensity scale across different scanners, sites, and sessions. This inconsistency is an acquisition artifact that often disrupts downstream processing, particularly for machine learning models.

How it works

The package provides two main categories of normalization methods:

  • Individual methods: These are plain functions that operate on a single image (e.g., zscore, fcm, kde, whitestripe).
  • Population methods: These learn a transformation from a set of images and save it, allowing the apply the same transformation to new scans (e.g., nyul, lsq, ravel).

It also includes tools for tissue membership maps, histogram plotting for validation, N4 preprocessing, and co-registration via ANTs.

Who it’s for

Researchers and developers working with medical imaging, specifically those preparing MR images for machine learning or other automated processing pipelines.

Highlights

  • Supports multiple MR sequences including T1-w, T2-w, FLAIR, and PD-w.
  • Offers a variety of individual and population-based normalization techniques.
  • Provides a CLI for quick processing without needing to write code.
  • Integrates with numpy and nibabel for image data handling.

Related

  • Project
  • Project
  • Project
  • Project
  • Project