Tobias Knopp1,2 and Mirco Grosser1,2
1Section for Biomedical Imaging, University Medical Center Hamburg-Eppendorf, Hamburg, Germany, 2Institute for Biomedical Imaging, Hamburg University of Technology, Hamburg, Germany
Synopsis
Image reconstruction plays a major role in the recent years of development
in magnetic resonance imaging (MRI) and has been one of the main drivers for
reductions in scan time. Within this work we introduce a new software package
MRIReco.jl that is very flexible to use and allows for rapid development of new
reconstruction algorithms. The package uses the programming language Julia,
which is very suitable for implementing reconstruction algorithms on a high
abstraction level while still allowing for the generation of runtime-optimized
machine code.
Introduction
Image reconstruction plays a major role in the recent years of development
in magnetic resonance imaging (MRI) and has been one of the main drivers for
reductions in scan time. Modern algorithms that exploit parallel imaging and
compressibility of MRI images are strongly based on mathematical concepts and
were introduced by experts in signal processing. After mathematical formulation
these algorithms are usually implemented in a high-level programming language
like Matlab or Python, which simplify the implementation but do not provide
full runtime optimization. On the other hand, full-featured MRI reconstruction
libraries like Gadgetron [1] and BART [2] are written in C/C++ and in turn
highly optimized. Both of these libraries are extensible to some extend but the
primary goal is to provide easy access to modern MRI reconstruction algorithms
through a simple command line interface or wrappers available for Matlab and
Python. The purpose of this work is to introduce a very accessible MRI
reconstruction framework that is implemented in the programming language Julia
[3].Background
Julia has been initially introduced in 2012 and released in version 1.0 in
August 2018. Julia’s prime focus is scientific computing and through a very
clean language design it allows to be used for rapid prototyping but also for
high-performance computing. It is therefore not necessary to write performance
critical algorithms in C/C++, which is usually done in high-level languages.
Runtime efficiency is achieved by using multiple dispatch, which allows to
generate specialized code for specific types using just-in-time compilation. A
further strength of Julia is its package ecosystem, which provides a variety of
additional software functionalities.Design Principle
Due to the open package infrastructure of Julia, MRIReco.jl aims to reuse as many existing solutions as possible.
This is different to the approach taken by BART and Gadgetron and has the
advantage that MRIReco.jl is itself
small and can focus on all MRI related functionality. For instance we use Wavelets.jl for sparsity transformation,
LinearOperators.jl for building
matrix-free operators, NFFT.jl for
the gridding implementation, FFTW.jl
for performing fast Fourier transformation, Images.jl
for all image processing related operations (e.g. filtering). All iterative
solvers use the package RegularizedLeastSquares.jl.
For image export one can use the packages NIfTI.jl
and DICOM.jl. For reading MRI raw
data, MRIReco.jl provides loading
routines for accessing data in the ISMRMRD format. MRIReco.jl is an open source project licensed under the MIT license
and can be accessed under:
https://github.com/MagneticResonanceImaging/MRIReco.jl
Functionality
MRIReco.jl consists of several parts:
- IO: For reading MRI raw data and writing image data
- Sequences: For the definition of MRI sequences
- Trajectories: For defining sampling trajectories
- Operators: Several MRI imaging operators
- Simulation: For the simulation of MRI raw data
- Reconstruction: For the reconstruction of MRI images
The package currently provides:
- Regular gridding reconstruction
- Parallel imaging reconstruction using SENSE
- Fast offresonce correction methods based on the NFFT or histogram approach
- Compressive sensing reconstruction
All these building blocks can be easily combined. MRIReco.jl provides a high level interface where the full reconstruction can be parameterized using a parameter dictionary. Additionally, it is possible to use a more low-level interface, which is useful for developing advanced custom reconstruction methods. For example, a magnetic resonance fingerprinting (MRF) reconstruction can be generated quite simply by combining the signal encoding operator with a projection onto a dictionary of possible signal evolution curves.
Conclusion
MRIReco.jl is a
new MRI reconstruction framework that aims to be flexible to use, easily
accessible and still targets high performance MRI reconstruction. The library
is still work in progress but already provides the essential tools for
developing next-generation reconstruction algorithms.Acknowledgements
References
[1]
Hansen, M. S., & Sørensen, T. S., MRM, 69(6), 1768-1776, (2013)
[2] Uecker, M. et al., In
Proc. Intl. Soc. Mag. Reson. Med. 23:2486, (2015)
[3] Bezanson, J. et al., SIAM review,
59(1), 65-98, (2017)
[4] Ma, D. et al.,
Nature, 495(7440), 187, (2013)