MRI-NUFFT#

Doing non-Cartesian MR Imaging has never been so easy.

This python package extends various NUFFT (Non-Uniform Fast Fourier Transform) python bindings used for MRI reconstruction.

In particular, it provides a unified interface for all the methods, with extra features such as coil sensitivity, density compensated adjoint and off-resonance corrections (for static B0 inhomogeneities).

https://github.com/mind-inria/mri-nufft/raw/master/docs/_static/mri-nufft-scheme.svg

Modularity and Integration of MRI-nufft with the python computing libraries.

Usage#

from scipy.datasets import face # For demo
import numpy as np
import mrinufft
from mrinufft.trajectories import display
from mrinufft.density import voronoi

# Create 2D Radial trajectories for demo
samples_loc = mrinufft.initialize_2D_radial(Nc=100, Ns=500)
# Get a 2D image for the demo (512x512)
image = np.complex64(face(gray=True)[256:768, 256:768])

## The real deal starts here ##
# Choose your NUFFT backend (installed independently from the package)
NufftOperator = mrinufft.get_operator("finufft")

# For improved image reconstruction, use density compensation
density = voronoi(samples_loc.reshape(-1, 2))

# And create the associated operator.
nufft = NufftOperator(
    samples_loc.reshape(-1, 2), shape=image.shape, density=density, n_coils=1
)

kspace_data = nufft.op(image)  # Image -> Kspace
image2 = nufft.adj_op(kspace_data)  # Kspace -> Image

For improved image quality, embed these steps in a more complex reconstruction pipeline (for instance using PySAP).

Want to see more ?

Installation#

MRI-nufft is available on Pypi and can be installed with:

pip install mri-nufft

Additionally, you will have to install at least one NUFFT computation backend. See the Documentation for more guidance.

Benchmark#

A benchmark of NUFFT backend for MRI applications is available in mind-inria/mri-nufft-benchmark

Who is using MRI-NUFFT?#

Here are several project that rely on MRI-NUFFT: