For deep learning-based QSM methods, check out the other github repo: deepMRI
The repository is for reconstructing Quantitative Susceptibility Mapping (QSM) images from MRI. The codes cover image recons for single-echo SWI or multiple-echo GRE sequence as well as gradient EPI sequence.
- For the background field removal method RESHARP, please reference:
H. Sun, A.H. Wilman. Background field removal using spherical mean value filtering and Tikhonov regularization. Magn Reson Med. 2014 Mar;71(3):1151-7. - For the POEM multi-channel coil combination method, please referece:
H. Sun, J.O. Cleary, R. Glarin, S.C. Kolbe, R.J. Ordidge, B.A. Moffat, G.B. Pike; Extracting more for less: Multi-echo MP2RAGE for simultaneous T1-weighted imaging, T1 mapping, R2* mapping, SWI, and QSM from a single acquisition. - For the EPI-QSM processing pipeline, please referece:
H. Sun, A.H. Wilman. Quantitative susceptibility mapping using single-shot echo-planar imaging. Magn Reson Med. 2015 May;73(5):1932-8. - For the hemorrhage-QSM method and processing pipeline, please referece:
H. Sun, M. Kate, L.C. Gioia, D.J. Emery, K. Butcher, A.H. Wilman. Quantitative susceptibility mapping using a superposed dipole inversion method: Application to intracranial hemorrhage. Magn Reson Med. 2016 Sep;76(3):781-91.
- Extract complex img from DICOMs or raw files
- removal phase-offsets if multiple-echo, then combine coils
- extract brain mask
- unwrap phase maps
- linearly fit unwrapped phase with TE if multiple-echo
- background field removal
- dipole inversion
- 1.5 T (Siemens)
- 3 T (Siemens, GE, and Philips)
- 4.7 T (Varian)
- 7 T (Siemens)
- 9.4 T (Bruker)
- Support sequences of single-echo SWI, multi-echo GRE and EPI.
-
Directory structure
- Siemens_1p5T: recon codes for Siemens 1.5T sequences, e.g. EPI (fMRI) and SWI
- qsm_epi15.m
- qsm_swi15.m
- qsm_hemo15.m
- Varian_4p7T: recon codes for Varian 4.7T sequences, e.g. EPI (fMRI), SWI and R2*
- qsm_epi47.m
- qsm_swi47.m
- qsm_r2s47.m
- Siemens_3T: recon codes for 3T PRISMA sequences, e.g. EPI (fMRI), SWI and R2*
- qsm_epi_prisma.m
- qsm_swi_prisma.m
- qsm_r2s_prisma.m
- qsm_hemo_prisma.m
- GE_3T: recon codes for 3T GE sequence, e.g. R2*
- qsm_spgr_ge.m
- Philips_3T: recon codes for 3T Philips sequence, currently only R2*
- qsm_spgr_philips.m
- Siemens_7T: recon codes for 7T Magnetom sequences, e.g. SWI, ME-GRE and ME-MP2RAGE
- qsm_swi.m
- mp2rage.m
- qsm_7T_bipolar.m
- qsm_7T_unipolar.m
- Bruker_9p4T: recon codes for 9.4T Bruker 3D multi-echo sequence
- qsm_r2s_3d_bruker.m
- coil_combination: coils combination related codes
- adaptive_cmb.m: adaptive filter method for single-echo, e.g. EPI, SWI
- poem.m: POEM (Phase-Offsets Estimation from Multi-echoes) coil combination
- background_field_removal: background field removal, including RESHARP/SHARP/ESHARP/PDF/LBV
- sharp.m: SHARP
- resharp.m: RESHARP method -- can tweak the ker_rad (kernel size) and tik_reg (regularization)
- projectionontodipolefields.m: PDF
- extendharmonicfield.m: ESHARP
- LBV.m: LBV
- poly2d.m: 2nd order 2D polynomial fit
- poly3d.m: 2nd order 3D polynomial fit
- dipole_inversion: dipole inversion with TV regularization
- tvdi.m: total variation dipole inversion
- tikhonov_qsm.m: Tikhonov total field inversion
- Misc: other functions including NIFTI and other small functions
- Siemens_1p5T: recon codes for Siemens 1.5T sequences, e.g. EPI (fMRI) and SWI
-
Usage
-
Call the main QSM function corresponding to the sequence, e.g.
qsm_r2s47
is the function for QSM recon of R2* at 4.7T. -
Function inputs are
- Directory of the raw data for 1.5T/4.7T or directories of both magnitude and unfiltered phase DICOMs for Siemens/GE/Philips 3T)
- User defined directory for QSM output results
- User specified parameters "options"
-
Examples:
```Matlab options.bkg_rm='resharp'; options.ph_unwrap='laplacian'; qsm_swi47('FID_DIR','OUTPUT_DIR',options); ```
-
For other advanced usage, see help, e.g.
help qsm_swi_prisma
-
-
Common user-changed options:
- bet_thr: threshold level for BET extracting the brain mask, by default is 0.3-0.5 depending on the sequence, smaller threshold keeps more region of the brain
- ph_unwrap: phase unwrapping methods, can be 'prelude', 'laplacian' or 'bestpath'
- bkg_rm: background field removal methods, can be 'sharp', 'pdf','resharp','esharp' or 'lbv', can pick multiple methods to compare, e.g.
options.bkg_rm={'resharp','lbv'}
- smv_rad: radius in mm of SHARP/RESHARP/ESHARP kernel (erosion size, ESHARP recovers some)
- tik_reg: tikhonov regularization for RESHARP, by default 1e-4, bigger value more regularization
- tv_reg: total variation regularization, by default 5e-4, bigger value gives smoother result