Struct TransformBuilder

Source
pub struct TransformBuilder<T = ()> { /* private fields */ }
Expand description

Builder for configuring a watershed transform.

Use the new_segmenting() associated function to start configuring a segmenting watershed transform. Use the default() method to start configuring a watershed transform. Once you have enabled the desired functionality, a watershed transform struct can be generated with the build_segmenting() and build_merging() associated functions. These return a struct of the type SegmentingWatershed and MergingWatershed respectively, which can be shared between threads.

§default() vs new() and custom hooks

tl;dr: Use new() if you want to run a custom hook each time a the water level is raised during the watershed transform. Otherwise, use default().

A TransformBuilder struct can be obtained with both the default() and new() functions implemented for both. The main difference between the two is the resulting type:

  • default() results in a TransformBuilder<()>
  • new() results in a TransformBuilder<T> The default type for T is (). T is only used when specifying a custom function run by the watershed transform each time the water level is raised. This “hook” has the type fn(HookCtx) -> T.

Sadly, Rust is not able to determine that T should take the default () type if no hook is configured during the builder phase (which can be done with the set_wlvl_hook function). Therefore, Default is only implemented for TransformBuilder<()> (so not for all T) and can be used to circumvent this limitation of the type inference engine.

§plots feature

Enabling the plots feature gate adds two new methods to the TransformBuilder struct: set_plot_colour_map, which can be used to set the colour map that will be used by plotters to generate the images and set_plot_folder, which can be used to specify folder where the generated images should be placed. If no output folder is specified when the plots feature is enabled, no plots will be generated (code will still compile).

§enable_edge_correction

Calling the enable_edge_correction method on the builder signals the watershed implementations that they should make sure that the edges of the image are properly included in the watershed transform. This option is disabled by default since performing this “edge correction” can incur a significant performance/memory usage hit.

Implementations§

Source§

impl<T> TransformBuilder<T>

Source

pub const fn new() -> Self

Creates a new instance of TransformBuilder<T> which can be used to construct a watershed transform that runs custom code each time the water level is raised. If you do not use this functionality, use default() instead.

Source

pub const fn set_max_water_lvl(self, max_water_lvl: u8) -> Self

Set the maximum water level that the transform will reach. Note that the maximum water level may not be set higher than u8::MAX - 1 (254).

Source

pub const fn enable_edge_correction(self) -> Self

Enables edge correction. Turning this setting on properly colours the edges of the input image at the cost of increased memory consumption and two full-image copies.

Source

pub const fn set_wlvl_hook(self, hook: fn(HookCtx<'_>) -> T) -> Self

Sets the water level hook. This function pointer is called every time the water level is raised and may be used to implement custom statistics. Implementations of the watershed algorithm that do no visit all water levels are not guaranteed to call this hook at all.

Source

pub fn build_merging(self) -> Result<MergingWatershed<T>, BuildErr>

Build a MergingWatershed<T> from the current builder configuration.

Source

pub fn build_segmenting(self) -> Result<SegmentingWatershed<T>, BuildErr>

Build a SegmentingWatershed<T> from the current builder configuration.

Trait Implementations§

Source§

impl<T: Clone> Clone for TransformBuilder<T>

Source§

fn clone(&self) -> TransformBuilder<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for TransformBuilder<()>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V