pub enum UnwrappingAlgorithm {
Romeo,
Laplacian,
Prelude,
MediRegionGrowing,
}Expand description
Phase unwrapping algorithm
Variants§
Romeo
Laplacian
Prelude
PRELUDE (crate::unwrap::unwrap_prelude, with
FieldMappingConfig::prelude_params): each echo unwrapped spatially on its own, as
FSL’s prelude unwraps one volume, then whole turns aligned between echoes
(crate::unwrap::correct_multi_echo_wraps). The magnitude is not used: FSL’s prelude
uses it only to make a mask when none is given, and here the mask is always given.
MediRegionGrowing
MEDI’s region growing (crate::unwrap::unwrap_medi_region_growing, MEDI toolbox
unwrapPhase / mexUnwrap.c), bit-identical to the original. As in MEDI it takes no
mask: it grows over the whole array from the middle of the field of view, through voxels
above 0.5 % of the largest magnitude, and the brain mask is applied only after. It needs
the magnitude (a run without one is PipelineError::InvalidInput),
as its quality map:
- with
B0EstimationMethod::ComplexFit, MEDI’siMag, the root-sum-of-squares of the echo magnitudes, unwrapping the fit per echo spacing: MEDI’s field map (README.m:80-95); - on the multi-echo paths, each echo is unwrapped on its own with that same
iMag, then whole turns are aligned between echoes (crate::unwrap::correct_multi_echo_wraps), as for PRELUDE. MEDI never unwraps echoes one by one, so this use is QSM.rs’s own;iMagis used because it is what MEDI orders its growth by; - for a single echo, and per echo
(
super::per_echo::run_field_mapping_per_echo), that echo’s magnitude (itsiMag).
Implementations§
Trait Implementations§
Source§impl Clone for UnwrappingAlgorithm
impl Clone for UnwrappingAlgorithm
Source§fn clone(&self) -> UnwrappingAlgorithm
fn clone(&self) -> UnwrappingAlgorithm
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for UnwrappingAlgorithm
Source§impl Debug for UnwrappingAlgorithm
impl Debug for UnwrappingAlgorithm
Source§impl PartialEq for UnwrappingAlgorithm
impl PartialEq for UnwrappingAlgorithm
impl StructuralPartialEq for UnwrappingAlgorithm
Auto Trait Implementations§
impl Freeze for UnwrappingAlgorithm
impl RefUnwindSafe for UnwrappingAlgorithm
impl Send for UnwrappingAlgorithm
impl Sync for UnwrappingAlgorithm
impl Unpin for UnwrappingAlgorithm
impl UnsafeUnpin for UnwrappingAlgorithm
impl UnwindSafe for UnwrappingAlgorithm
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneAny for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more