Skip to main content

Module inversion

Module inversion 

Source
Expand description

Dipole inversion methods for QSM

This module provides various methods to solve the inverse problem of estimating magnetic susceptibility from local field measurements.

Methods include:

  • TKD: Truncated k-space division (fast, simple)
  • TSVD: Truncated SVD (zeros small values)
  • Tikhonov: L2 regularization (closed-form)
  • TV: Total variation regularization via ADMM (iterative)
  • NLTV: Nonlinear-data-term TV via ADMM (QSM.jl nltv)
  • RTS: Rapid two-step method
  • MEDI: Morphology-enabled dipole inversion (plain, with SMV, or MEDI-mSMV)
  • TGV: Total Generalized Variation (single-step from a field in ppm or one wrapped echo; α in ppm)
  • COSMOS: multi-orientation least squares (closed form, well-posed)
  • STI: susceptibility tensor imaging (multi-orientation, 6-component tensor)
  • STAR-QSM: streaking artifact reduction (STI Suite 3.0’s QSM_star)

Re-exports§

pub use iqsm_echo_weighting::IqsmEchoWeighting;
pub use cosmos::cosmos;
pub use cosmos::cosmos_weighted;
pub use cosmos::uncovered_cone;
pub use cosmos::CosmosParams;
pub use cosmos::CONE_THRESHOLD;
pub use cosmos::MAX_UNCOVERED_CONE;
pub use sti::sti;
pub use sti::sti_forward;
pub use sti::tensor_maps;
pub use sti::StiParams;
pub use sti::SusceptibilityTensor;
pub use sti::TensorMaps;
pub use sti::N_TENSOR;
pub use tkd::tkd;
pub use tkd::tsvd;
pub use tkd::TkdParams;
pub use tikhonov::tikhonov;
pub use tikhonov::TikhonovParams;
pub use tikhonov::Regularization;
pub use tv::tv_admm;
pub use tv::TvParams;
pub use nltv::nltv;
pub use nltv::NltvParams;
pub use rts::rts;
pub use rts::RtsParams;
pub use medi::extract_csf;
pub use medi::medi;
pub use medi::EchoMagnitudes;
pub use medi::MediParams;
pub use msmv::msmv;
pub use msmv::MsmvOutput;
pub use msmv::MsmvParams;
pub use tfi::tfi;
pub use tfi::TfiKernel;
pub use tfi::TfiParams;
pub use tfi::TfiPrecision;
pub use tgv::tgv_qsm;
pub use tgv::TgvInput;
pub use tgv::TgvParams;
pub use tgv::get_default_alpha;
pub use tgv::get_default_iterations;
pub use tgv::rad_per_ppm;
pub use ilsqr::ilsqr;
pub use ilsqr::IlsqrParams;
pub use ilsqr::IlsqrPrecision;
pub use ilsqr::STI_DEFAULT_NITER;
pub use ilsqr::STI_DEFAULT_PAD_MM;
pub use ilsqr::STI_GUI_NITER;
pub use ilsqr::STI_GUI_PAD_MM;
pub use ilsqr::STI_PAD_MM;
pub use star::star_qsm;
pub use star::StarParams;
pub use star::STAR_GUI_PAD;
pub use star::QSM_STAR_DEFAULT_PAD;
pub use star::STI_TEMPLATES_STAR_PAD;
pub use lsqr_qsm::lsqr_qsm;
pub use lsqr_qsm::LsqrQsmParams;
pub use lsqr_qsm::RESIDUAL_WEIGHTING_PER_TESLA;
pub use heidi::cone_fill_iterations;
pub use heidi::heidi;
pub use heidi::heidi_cone_fill;
pub use heidi::homogeneity_masks;
pub use heidi::HeidiParams;
pub use heidi::HomogeneityMasks;
pub use admm::FansiKernel;
pub use ndi::ndi;
pub use ndi::NdiParams;
pub use fansi::fansi;
pub use fansi::FansiParams;
pub use l1qsm::l1qsm;
pub use l1qsm::L1QsmParams;
pub use whqsm::whqsm;
pub use whqsm::WhQsmParams;
pub use whqsm::WhQsmWeight;
pub use hdqsm::hdqsm;
pub use hdqsm::hdqsm_magnitude;
pub use hdqsm::HdQsmParams;
pub use amp_pe::amp_pe;
pub use amp_pe::AmpPeParams;
pub use tile_budget::max_wasm_patch_edge;
pub use tile_budget::tile_bytes;
pub use tile_budget::tile_patch_size;
pub use tile_budget::tiles_within_wasm_budget;
pub use tile_budget::wasm_tiles_in_flight;
pub use tile_budget::TileConfig;
pub use tile_budget::WASM_MAX_PATCH_ACTIVATION_BYTES;
pub use tile_budget::WASM_TILE_ACTIVATION_BUDGET;
pub use tiled::check_wasm_patch_fits;
pub use tiled::tile_concurrency;
pub use tiled::tiled_field_inversion;
pub use tiled::tiled_scatter;
pub use tiled::tiled_volume_algorithm;
pub use tiled::Tile;
pub use xqsm::xqsm;
pub use xqsm::xqsm_tiled;
pub use qsmnet::qsmnet;
pub use qsmnet::qsmnet_tiled;
pub use qsmnet::QsmnetNorm;
pub use qsmnetme::QsmnetmeNorm;
pub use qsmnetme::QsmnetmeParams;
pub use qsmnetme::qsmnetme;
pub use autoqsm::autoqsm;
pub use iqsm::iqsm;
pub use iqsm::iqsm_multi_echo;
pub use iqsm_plus::iqsm_plus;
pub use iqsm_plus::iqsm_plus_multi_echo;
pub use iqfm::iqfm;
pub use iqfm::iqfm_multi_echo;
pub use qsmgan::qsmgan;
pub use lpcnn::lpcnn;
pub use lpcnn::lpcnn_tiled;
pub use lpcnn::LPCNN_ALPHA;
pub use lpcnn::LPCNN_GT_MEAN;
pub use lpcnn::LPCNN_GT_STD;
pub use ir2qsm::ir2qsm;
pub use ir2qsm::ir2qsm_tiled;
pub use modl_qsm::modl_qsm;
pub use modl_qsm::modl_qsm_tiled;
pub use modl_qsm::MODL_ALPHA;
pub use modl_qsm::MODL_MEAN;
pub use modl_qsm::MODL_STD;
pub use nextqsm::nextqsm;
pub use nextqsm::nextqsm_padded;
pub use nextqsm::nextqsm_tiled;
pub use nextqsm::NEXTQSM_LAMBDAS;

Modules§

admm
Shared ADMM iteration infrastructure for TV-based inversion methods.
amp_pe
AMP-PE: Approximate Message Passing with built-in Parameter Estimation for QSM.
autoqsm
AutoQSM single-step deep-learning reconstruction (onnx feature).
cosmos
COSMOS: calculation of susceptibility through multiple orientation sampling
fansi
FANSI nonlinear TV / TGV dipole inversion.
hdqsm
HD-QSM: Hybrid data-fidelity two-stage linear dipole inversion.
heidi
HEIDI — Homogeneity Enabled Incremental Dipole Inversion
ilsqr
iLSQR: LSQR dipole inversion with streaking-artefact removal
iqfm
iQFM single-step deep-learning tissue-field mapping (onnx feature).
iqsm
iQSM single-step deep-learning reconstruction (onnx feature).
iqsm_echo_weighting
Echo weighting for the multi-echo iQSM, iQFM and iQSM+ combinations.
iqsm_plus
iQSM+ single-step deep-learning reconstruction (onnx feature).
ir2qsm
IR2QSM dipole inversion (onnx feature).
l1qsm
L1-QSM: nonlinear L1 data-fidelity dipole inversion with TV regularization
lpcnn
LPCNN dipole inversion (onnx feature).
lsqr_qsm
Minimally regularised LSQR dipole inversion (Schweser 2010)
medi
MEDI (Morphology Enabled Dipole Inversion), a port of MEDI_L1.m from the MEDI toolbox (release 2024.11.26)
modl_qsm
MoDL-QSM dipole inversion (onnx feature).
msmv
mSMV (maximum spherical mean value) filtering, the field step of MEDI-mSMV
ndi
Nonlinear Dipole Inversion (NDI) for QSM
nextqsm
NeXtQSM single-step deep-learning reconstruction (onnx feature).
nltv
Nonlinear total variation (NLTV) dipole inversion
qsmgan
QSMGAN dipole inversion (onnx feature).
qsmnet
QSMnet deep-learning dipole inversion (onnx feature).
qsmnetme
QSMnetME deep-learning dipole inversion (onnx feature).
rts
Rapid Two-Step (RTS) dipole inversion
star
STAR-QSM: streaking artifact reduction for QSM
sti
STI: susceptibility tensor imaging
tfi
TFI (preconditioned Total Field Inversion)
tgv
TGV-QSM: Total Generalized Variation for Quantitative Susceptibility Mapping
tikhonov
Tikhonov regularization for QSM
tile_budget
How much heap a tiled network’s tiles take, and how many a browser keeps in flight.
tiled
Overlap-tiled inference for fully-convolutional deep-learning inversions (onnx).
tkd
Truncated k-space division (TKD) / TSVD for QSM
tv
Total Variation (TV) regularized dipole inversion using ADMM
whqsm
Weak-Harmonic QSM (WH-QSM) dipole inversion
xqsm
xQSM deep-learning dipole inversion (onnx feature).