Matlab Framework for MRI Simulation and Reconstruction.
Written by Matthieu Guerquin-Kern at the Biomedical Imaging Group (BIG), EPFL, Switzerland
This package is a collection of Matlab functions that provides:
- analytical and rasterized multi-channel MRI simulations of realistic phantoms and
- a collection of basic and state-of-the-art reconstruction methods including an efficient wavelet-based non-linear one.
Demonstration and testing scripts are included. A detailed documentation is provided.
The analytical phantom simulation tools allow sound validations of reconstruction methods. The reconstruction framework is rather general and should be easy to adapt to any linear inverse problem. Wavelet transform and wavelet coefficients can be easily manipulated like Matlab's matrices and vectors.
- M. Guerquin-Kern, L. Lejeune, K.P. Pruessmann, and M. Unser, "Realistic Analytical Phantoms for Parallel Magnetic Resonance Imaging," IEEE Transactions on Medical Imaging, vol. 31, no. 3, pp. 626-636, March 2012.
- Github project dedicated to the analytical MRI simulation code and phantom design tools.
- PhD thesis chapter on the general principles of image reconstruction in MRI.
- M. Guerquin-Kern, M. Haeberlin, K.P. Pruessmann, and M. Unser, "A Fast Wavelet-Based Reconstruction Method for Magnetic Resonance Imaging," IEEE Transactions on Medical Imaging, vol. 30, no. 9, pp. 1649-1660, September 2011.
Some functions have been written in C++. Most of them have fall-back counterparts written in Matlab language. The package was developed and tested under Linux and MacOSX platforms with Matlab R2011b. Partial testing demonstrated that the code is mainly compatible with GNU Octave 3.2.
- If you have a Unix-like operating system on a multi-core computer, you can use the POSIX-thread library to parallelize the computations. To do so,
- make sure this library is installed on your system such that Matlab's mex can find it;
- uncomment line 30 in
myerfzparts_c.cpp
.
- If you do not care much about calculation speed or if you use windows, or if things just do not work, just comment line 30 in
myerfzparts_c.cpp
.
Download the code here (~351 KB).
Add the folder and subfolders in your matlab path. Some C++ sources are distributed with the code. To compile them as MEX binaries, simply run make
in matlab prompt (make sure that you have a compiler installed using the mex setup).
You can start with the script DemoSimuAndRecon.m
and continue with PerformTests.m
.
Please note that the MRI scanner data mentioned in the documentation is not shared publicly. Without these data, the two functions DemoBrainEPI.m
and DemoBrainSpiral.m
will not work.
No conditions. This is public domain. See LICENSE.
Download the documentation here (PDF, ~223 KB).
See this project for more details on the simulation part.
- MEX files for wavelet transform by Cedric Vonesch, 2008. Publicly distributed.
- MEX files for determining the points inside a polygon by Bruno Luong, 2010. Publicly distributed..
- Matlab code for n-dimensional "n permute k" problem by Matt Fig, 2009. Publicly distributed.
- Matlab functions for the computation of MRI data with Bezier-defined phantoms by Laurent Lejeune under the author's supervision, 2010. See here.
- Marcel Leutenegger's instructions, publicly distributed, have been followed in the C++/MEX multi-threaded code that computes the error function of a complex variable.
- The Matlab and MEX files for gridding and NUFT computation have been coded by the author during spring 2012, inspired by L. Greengard and J.-Y. Lee (in Accelerating the nonuniform fast Fourier transform, SIAM Review, vol. 46, no. 3, pp. 443-454, 2004) and a partial implementation that is publicly distributed by Jeff Fessler.