Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dwidenoise enhancements list #3023

Open
9 of 13 tasks
Lestropie opened this issue Oct 9, 2024 · 0 comments
Open
9 of 13 tasks

dwidenoise enhancements list #3023

Lestropie opened this issue Oct 9, 2024 · 0 comments
Labels
enhancement meta Meta-issue grouping multiple issues / PRs wishlist

Comments

@Lestropie
Copy link
Member

Lestropie commented Oct 9, 2024

There have been multiple potential enhancements to dwidenoise discussed. While there may be additional ideas for improving denoising that may be kept private as research developments, this list is items that are hopefully acceptable for public listing for the purpose of participant recruitment.

  • Evaluate demeaning: dwidenoise: Add option -demean #2363
    Use of single-precision floating-point with an imprecise decomposition algorithm can lead to artifacts in noise estimation & rank selection. One potential solution proposed some time ago was to explicitly demean the signal, storing that mean as a signal component to be included in the output series. Doing so however necessitates ensuring that the rank estimation does not become biased.

  • Alternative decomposition: dwidenoise: try using bidiagonal divide and conquer SVD #2906
    Simply changing the decomposition used from the Eigen library may improve precision, though at the cost of computation time. This should ideally be evaluated across multiple use cases.

  • Modify rank estimation: dwidenoise: Modified rank estimation #2591
    May be possible to directly translate the modified estimators from externally published work to the MRtrix3 implementation. Would need to contrast against the existing modification of @jelleveraart's estimator as "Exp2".

  • Facilitate two-pass approach: ENH dwidenoise: Two-pass approach #2274
    This could be used to stabilise against outliers in noise level estimation. It could also be used in pipelines that explicitly separate between the estimation of corrections to be applied vs. the application of those corrections.
    This would be expedited for higher-level workflows by New command dwi2noise #3035.

  • Spherical kernel: ENH dwidenoise: Spherical kernel #2742
    Already published; having implemented would reduce issues around kernel size selection, and could also be used to mitigate against issues of kernel size / independence at FoV extremities.

  • Handle >4D data: ENH dwidenoise: Support >4D data #3021
    Would make the method more amenable in particular to multi-echo fMRI data.

  • Soft component thresholding: ENH dwidenoise: Optimal shrinkage #3022
    Would mitigate quantisation effects due to a component being just above vs. just below the MP distribution cutoff. May improve denoising of datasets with a very small number of volumes.

  • Overcomplete local PCA: ENH dwidenoise: Overcomplete local PCA #3024
    Makes output reconstructed DWI volumes a weighted sum of the results of multiple decompositions, rather than being dependent on the single PCA rank reduction at that voxel.

  • Subsampling: ENH dwidenoise: Subsampling #3034
    Reduce the total number of SVDs to be performed by reconstructing the low-rank signal for multiple output image voxels from a single patch.

  • Linear phase ramp removal: dwidenoise: Low-frequency phase removal #3037
    Might be more crucial that originally recognised for complex data denoising.

  • Variance-stabilising transform: dwidenoise: Variance-stabilising transform #3041

  • Alternative noise level estimation: dwidenoise: Alternative noise level estimation #3040
    If there are potential IP issues around imposition of the MP distribution, this approach may serve as a suitable alternative.

Also:

  • Build dataset of exemplar series for denoising efficacy evaluation
    Sometimes we hear about a particular dataset where the denoising performs poorly. We're also now using this method for multi-echo fMRI data in addition to DWI data. So it would be good to start building a dataset of different acquisitions of different quality, so that methods and heuristics can be refined to try to make the implementation robust against such variation, or to provide instructions on recommended settings in different scenarios.
    Edit: New Issue: dwidenoise exemplar database #3036.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement meta Meta-issue grouping multiple issues / PRs wishlist
Projects
None yet
Development

No branches or pull requests

1 participant