MRIReco.jl: An Extensible Open-Source Image Reconstruction Framework written in Julia
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


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.


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].


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:



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.


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.



[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)


Example code for a simple high-level reconstruction using an under-sampled spiral trajectory.

Logo of MRIReco.jl

Proc. Intl. Soc. Mag. Reson. Med. 27 (2019)