All Projects → jcreinhold → Intensity Normalization

jcreinhold / Intensity Normalization

Licence: other
normalize the intensity of several MR image contrasts with various routines

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Intensity Normalization

easylearn dev
Easylearn is designed for machine learning mainly in resting-state fMRI, radiomics and other fields (such as EEG). Easylearn is built on top of scikit-learn, pytorch and other packages. Easylearn can assist doctors and researchers who have limited coding experience to easily realize machine learning, e.g., (MR/CT/PET/EEG)imaging-marker- or other…
Stars: ✭ 29 (-78.36%)
Mutual labels:  neuroimaging
Nilearn
Machine learning for NeuroImaging in Python
Stars: ✭ 712 (+431.34%)
Mutual labels:  neuroimaging
Dltk
Deep Learning Toolkit for Medical Image Analysis
Stars: ✭ 1,249 (+832.09%)
Mutual labels:  neuroimaging
Dcm2niix
dcm2nii DICOM to NIfTI converter: compiled versions available from NITRC
Stars: ✭ 364 (+171.64%)
Mutual labels:  neuroimaging
Fieldtrip
The MATLAB toolbox for MEG, EEG and iEEG analysis
Stars: ✭ 481 (+258.96%)
Mutual labels:  neuroimaging
Slicerdmri
Diffusion MRI analysis and visualization in 3D Slicer open source medical imaging platform.
Stars: ✭ 34 (-74.63%)
Mutual labels:  neuroimaging
pTFCE
Probabilistic Threshold-Free Cluster Enhancement of Neuroimages
Stars: ✭ 29 (-78.36%)
Mutual labels:  neuroimaging
Tedana
TE-dependent analysis of multi-echo fMRI
Stars: ✭ 116 (-13.43%)
Mutual labels:  neuroimaging
Nipype
Workflows and interfaces for neuroimaging packages
Stars: ✭ 557 (+315.67%)
Mutual labels:  neuroimaging
Nipype tutorial
Learn Nipype with these tutorial notebooks - go here to see them online -->
Stars: ✭ 76 (-43.28%)
Mutual labels:  neuroimaging
Fmriprep
fMRIPrep is a robust and easy-to-use pipeline for preprocessing of diverse fMRI data. The transparent workflow dispenses of manual intervention, thereby ensuring the reproducibility of the results.
Stars: ✭ 377 (+181.34%)
Mutual labels:  neuroimaging
Dipy
DIPY is the paragon 3D/4D+ imaging library in Python. Contains generic methods for spatial normalization, signal processing, machine learning, statistical analysis and visualization of medical images. Additionally, it contains specialized methods for computational anatomy including diffusion, perfusion and structural imaging.
Stars: ✭ 417 (+211.19%)
Mutual labels:  neuroimaging
Extensionsindex
Slicer extensions index
Stars: ✭ 36 (-73.13%)
Mutual labels:  neuroimaging
Slicer
Multi-platform, free open source software for visualization and image computing.
Stars: ✭ 263 (+96.27%)
Mutual labels:  neuroimaging
Hitchhackers guide brain
A list of tutorials and other resources useful to learn open science and neuroimaging, EEG and MEG
Stars: ✭ 85 (-36.57%)
Mutual labels:  neuroimaging
dmipy
The open source toolbox for reproducible diffusion MRI-based microstructure estimation
Stars: ✭ 58 (-56.72%)
Mutual labels:  neuroimaging
Slicergitsvnarchive
Multi-platform, free open source software for visualization and image computing.
Stars: ✭ 896 (+568.66%)
Mutual labels:  neuroimaging
Mne Python
MNE: Magnetoencephalography (MEG) and Electroencephalography (EEG) in Python
Stars: ✭ 1,766 (+1217.91%)
Mutual labels:  neuroimaging
Neuropredict
Easy and comprehensive assessment of predictive power, with support for neuroimaging features
Stars: ✭ 87 (-35.07%)
Mutual labels:  neuroimaging
Ica Aroma
ICA-AROMA Software Package: a data-driven method to identify and remove head motion-related artefacts from functional MRI data.
Stars: ✭ 63 (-52.99%)
Mutual labels:  neuroimaging

intensity-normalization

Build Status Coverage Status Documentation Status Docker Automated Build Python Versions

This package contains various routines to normalize the intensity of various contrasts of magnetic resonance (MR) brain images; specifically, T1-weighted (T1-w), T2-weighted (T2-w), and FLuid-Attenuated Inversion Recovery (FLAIR). Intensity normalization is an important pre-processing step in many image processing applications regarding MR images since MR images do not have a consistent intensity scale. We implement various individual image-based and sample-based (i.e., a set of images of the same contrast taken from the same scanner) intensity normalization routines to help alleviate this issue.

Note that this package was developed to process adult human MR images; neonatal, pediatric, and animal MR images should also work (at least with some of the normalization schemes). But if there is a substantial difference in the contrast you are processing compared with the same contrast in an adult human, the normalization scheme may not work as expected. Please open an issue if you encounter such a problem.

Also note that when the package refers to any specific contrast image, it is referring to a non-contrast version unless otherwise stated. Using a contrast image as input to a method that assumes non-contrast will produce suboptimal results.

We implement the following normalization methods:

  • Z-score normalization
  • Fuzzy C-means (FCM)-segmentation-based white matter (WM) mean normalization
  • Least squares (LSQ) tissue mean normalization
  • Gaussian Mixture Model (GMM)-based WM mean normalization
  • Kernel Density Estimate WM Peak normalization
  • Piecewise Linear Histogram Matching [1,2]
  • WhiteStripe [3]
  • RAVEL [4]

We use this package to explore the impact of intensity normalization on a synthesis task (pre-print available here).

Note that while this release was carefully inspected, there may be bugs. Please submit an issue if you encounter a problem.

This package was developed by Jacob Reinhold and the other students and researchers of the Image Analysis and Communication Lab (IACL).

Requirements

  • matplotlib
  • numpy
  • nibabel
  • scikit-fuzzy
  • scikit-learn
  • scipy
  • statsmodels

We have provided a script create_env.sh to create a conda environment with the necessary packages (run like: . ./create_env.sh, this package will be installed in the created environment)

Install

The easiest way to install the package is through the following command:

pip install intensity-normalization

To install from the source directory, use

python setup.py install

or (if you actively want to make changes to the package)

python setup.py develop

Note the package antspy is required for the RAVEL normalization routine, the preprocessing tool as well as the co-registration tool, but all other normalization and processing tools work without it. To also install the antspy package, run pip install antspyx before installing this package or use the create_env.sh script with the option --antspy. If the pip installation fails, you may need to build antspy from source.

Basic Usage

You can use the several provided command line scripts to interface with the package, e.g.,

fcm-normalize -i t1/ -m masks/ -o test_fcm -v

where t1/ is a directory full of N T1-w images and masks/ is a directory full of N corresponding brain masks, test_fcm is the output directory for the normalized images, and -v controls the verbosity of the output.

The command line interface is standard across all normalization routines (i.e., you should be able to run all normalization routines with the same call as in the above example); however, each has unique options and not all methods support single image processing.

Call any executable script with the -h flag to see more detailed instructions about the proper call.

Tutorial

5 minute Overview

In addition to the above small tutorial, there is consolidated documentation here.

Test Package

Unit tests can be run from the main directory as follows:

nosetests -v --with-coverage --cover-tests --cover-package=intensity_normalization tests

If you are using docker, then the equivalent command will be (depending on how the image was built):

docker run jcreinhold/intensity-normalization /bin/bash -c "pip install nose && nosetests -v tests/"

Singularity

You can build a singularity image from the docker image hosted on dockerhub via the following command:

singularity pull --name intensity_normalization.simg docker://jcreinhold/intensity-normalization

Citation

If you use the intensity-normalization package in an academic paper, please cite the corresponding paper:

@inproceedings{reinhold2019evaluating,
  title={Evaluating the impact of intensity normalization on {MR} image synthesis},
  author={Reinhold, Jacob C and Dewey, Blake E and Carass, Aaron and Prince, Jerry L},
  booktitle={Medical Imaging 2019: Image Processing},
  volume={10949},
  pages={109493H},
  year={2019},
  organization={International Society for Optics and Photonics}} 

References

[1] N. Laszlo G and J. K. Udupa, “On Standardizing the MR Image Intensity Scale,” Magn. Reson. Med., vol. 42, pp. 1072–1081, 1999.

[2] M. Shah, Y. Xiao, N. Subbanna, S. Francis, D. L. Arnold, D. L. Collins, and T. Arbel, “Evaluating intensity normalization on MRIs of human brain with multiple sclerosis,” Med. Image Anal., vol. 15, no. 2, pp. 267–282, 2011.

[3] R. T. Shinohara, E. M. Sweeney, J. Goldsmith, N. Shiee, F. J. Mateen, P. A. Calabresi, S. Jarso, D. L. Pham, D. S. Reich, and C. M. Crainiceanu, “Statistical normalization techniques for magnetic resonance imaging,” NeuroImage Clin., vol. 6, pp. 9–19, 2014.

[4] J. P. Fortin, E. M. Sweeney, J. Muschelli, C. M. Crainiceanu, and R. T. Shinohara, “Removing inter-subject technical variability in magnetic resonance imaging studies,” NeuroImage, vol. 132, pp. 198–212, 2016.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].