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).
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 ?
- Check the Documentation
- Or go visit the Examples
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.
A benchmark of NUFFT backend for MRI applications is available in https://github.com/mind-inria/mri-nufft-benchmark
Here are several project that rely on MRI-NUFFT:
-
Add yours by opening a PR !