Magnetic Resonance Imaging(MRI) Bias-field Correction Filter

In MRI images, intensity inhomogeniety which are caused by magnetic settings, patients' position, and other factors are not unusual. This application has several small utilities that can be used to reduce such bias field. To estimate the bias field, we use Legendre polynomials. The 1+1 evolutionary optimizer searches for the best parameters of a Legendre polynomial (bias field estimate) which minimizes the total energy value of each image after bias field is eliminated. 

This application directory includes eight command line utilities. You can see the usage by just typing the name of utilities without any command line argument. This Web page is based on the "readme" text file in the same directory.

All software's and methods ,except the slab identification method, for the bias correction in this directory was initially developed and implemented by Martin Styner, University of North Carolina at Chapel Hill, and his colleagues [1] [2] .

What is the Purpose of this Application?
This application shows how to use the itk::MRIBiasFieldCorrectionFilter class for implementing an MRI bias field correction application.

The itk::MRIBiasFieldCorrectionFilter class is relatively a big and complex image filter. It is intended to be an image enhancing filter for further image analysis. Most of users would want to use it as it is instead of extending its functionality's.

The "MRIBiasCorrection" application directory contains eight utilities:

1) BiasFieldEstimator
This utility basically searches for the best set of coefficients for the bias field using some image files (target image, mask images) and parameters which you will type in as a command line arguments. It returns some command line arguments values and the list of the best set of coefficients to screen.

2) ImageCorrector
This utility creates a bias field corrected image using an image and a set of bias field estimate coefficients which will be the result from the BiasFieldEstimator.

3) BiasImageGenerator
This utility creates the image of a bias field estimate which is defined by the set of coefficients which is probably the result of the BiasFieldEstimator

4) InterSliceIntensityCorrector
This utility corrects the difference between slices using the Legendre polynomial of the zeroth degree. User can use this utility as a preprocessing for the BiasFieldEstimator.

5) IntensityHistogram3D
This utility creates a list of sets of slice number, mean intensity, and frequency. Users can use this list to plot a 3D histogram with slice number, intensity, and frequency axes.

6) EnergyTablePlotter
This utility creates a list of pairs of intensity and its energy value using class statistics given by users. Users can use the list to adjust to tissue class sigma (standard deviation).

7) SlabIdentifier
This utility search for slabs in an MR angiogram (MRA) image. In many cases, a 3D MRA image is constructed by merging  smaller 3D blocks (slabs) which were acquired with different settings such as magnetic settings and patient positions. Therefore, stripe like patterns with slabs can be present in the resulting image. Such artifacts are called "slab boundary" artifacts or "venetian blind" artifacts.

With the slab boundary artifacts in an image, even a same tissue class's intensity values might vary significantly along the borders of slabs. Such rough value changes are not appropriate for some image processing methods. For example, MRIBiasFieldCorrectionFilter assumes a smooth bias field. However, with the slab boundary artifacts, the bias field estimation scheme that MRIBiasFieldCorrectionFilter uses might not adopt well. So, the MRIBiasFieldCorrectionFilter creates regions for slabs using the MRASlabIdentifier and then apply its bias correction scheme to each slab.

8) BiasCorrector
This utility performs slab identification, inter-slice intensity correction, bias field estimation, and corrected image generation all together using  itkMRIBiasFieldCorrectionFilter (in the Code/BasicFilter directory). The main purpose of this utility is to show how to use the filter. The InterSliceIntensityCorrector utility also uses the same filter.

The BiasCorrector utility uses all of the functionality of the MRIBiasFieldCorrectionFilter class. Therefore, users who want to learn the functionality of the filter class might want to take a look at the utility's code first. The reason why there are small utilities instead of just one program is to provide users to perform and examine each step individually so that users have a chance to adjust the parameter values before running the long optimization step.

The first row of images of the following is the images before and after the correction. The left image (before image) shows the venetian artifacts along x axis. You can see the improvement in the right image (after image). The improvement is clearer in the histogram second row of images.

Image before correction
Image after correction
Histogram image  

How Can This Be Used for Image Analysis?
The MRIBiasFieldCorrectionFilter is meant to be an image enhancing filter for further image analysis.  If users have good estimates for statistics of tissue classes, using this filter, users reduce the intensity inhomogeniety in MRI images and venetian blind artifacts of MRA images.

[1] Martin Styner, G. Gerig, Christian Brechbuehler, and Gabor Szekely, Parametric estimate of intensity inhomogeneities applied to MRI, IEEE TRANSACTIONS ON MEDICAL IMAGING; 19(3), pp. 153-165, 2000,
< >.

[2] Martin Styner and G. Gerig, Evaluation of 2D/3D bias correction with 1+1ES-optimization, Technical report, IKT, BIWI, ETH Zuerich, < >.

Go to next application.