utils - josalggui/MaRGE GitHub Wiki
This module contains a collection of utility functions used throughout the MRI acquisition and reconstruction pipeline.
It includes tools for image orientation, decimation, k-space processing, reconstruction, denoising, SNR estimation, and file export (DICOM / NIfTI).
- Image orientation and visualization helpers
- DICOM and NIfTI export utilities
- k-space filtering and reconstruction
- Oversampled data decimation
- Echo alignment utilities
- Image denoising (BM4D)
- SNR estimation utilities
Adjusts the orientation of a 3D image array to match standard anatomical planes.
Description
- Reorders and flips image axes based on acquisition geometry.
- Generates metadata for visualization and DICOM export.
Parameters
-
image(np.ndarray): 3D image data. -
axes(list[int]): Current axis order. -
orientation(str, optional): Patient orientation (default'FFS'). -
rd_direction(int, optional): Readout direction sign.
Returns
-
output(dict): Visualization metadata (widget,data, labels, title). -
image(np.ndarray): Reoriented image. -
dicom_orientation(list): DICOM ImageOrientationPatient tag.
Save a 2D or 3D image as a DICOM file with appropriate metadata.
Features
- Handles orientation, resolution, pixel spacing, and slice thickness.
- Supports session-based metadata (scanner, subject, study).
Parameters
-
axes_orientation,n_points,fov,image -
file_path(str) -
meta_data(dict, optional) -
session(dict, optional)
Save a reconstructed volume as a NIfTI file.
Parameters
-
axes_orientation,n_points,fov,dfov -
image(np.ndarray) -
file_path(str)
Apply a Cosbell filter in k-space along readout, phase, and slice directions.
Parameters
-
sampled(ndarray): k-space coordinates. -
data(ndarray): k-space data(sl, ph, rd). -
cosbell_order(list[int]): Filter order per direction.
Returns
- Filtered k-space data.
Direct FFT from image space to k-space.
Inverse FFT from k-space to image space.
Zero-pad (or crop) k-space to a desired matrix size while preserving centering.
Parameters
-
k_space(np.ndarray) -
new_size(list[int]):(rd, ph, sl)
Apply a Hanning window near the edges of k-space to reduce ringing.
Perform POCS (Projection Onto Convex Sets) reconstruction for partial k-space data.
Features
- Iterative phase-constrained reconstruction
- Correlation-based convergence stopping
Simple partial Fourier reconstruction using zero-padding.
Align the echo center (k=0) within oversampled readout windows.
Description
- Uses dummy pulses to estimate true echo position.
- Shifts signal to center k-space before decimation.
Returns
- Decimated, echo-aligned data.
Convert oversampled ADC data to target bandwidth using a two-stage decimation approach.
Description
- FIR decimation with anti-aliasing
- Optional averaging-based decimation to complete oversampling reduction
Parameters
-
data_over(np.ndarray): Oversampled data -
n_adc(int): Number of ADC windows -
option('PETRA' | 'Normal') -
remove(bool) -
add_rd_points(int) -
oversampling_factor(int) -
decimation_factor(int)
Returns
- Decimated data array
Notes
- Total effective decimation =
oversampling_factor - PETRA mode reduces FIR ringing at readout start
Apply BM4D denoising to a 3D image.
Features
- Automatic noise estimation (if
std=0) - Preserves structural details
Parameters
-
image_data(np.ndarray) -
std(float, optional)
Returns
- Denoised image
Estimate SNR using histogram-based noise estimation.
Voxel-wise SNR using local mean / local standard deviation.
Slice-wise SNR estimation for 3D volumes.
Compute SNR from repeated acquisitions (4D data).
Description
- Signal: mean magnitude across acquisitions
- Noise: standard deviation across acquisitions
- All functions assume NumPy array conventions
(sl, ph, rd)unless stated otherwise. - Many utilities are designed to work seamlessly with
runBatches. - DICOM export follows DICOM 3.0 conventions.
- This module is intended to grow with additional filters and reconstruction methods.
- Integrate additional filters and reconstruction utilities.
- Extend multi-channel (MIMO) support.