mmcfilters
Public API documentation
Loading...
Searching...
No Matches
SaturatedResidualTreeBuilder.hpp
Go to the documentation of this file.
1#pragma once
2
10#include "detail/SynchronizedResidualTreeEvolution.hpp"
11
12#include <span>
13#include <utility>
14
15namespace mmcfilters::sdrt {
16
26template <AltitudeValue T> class SaturatedResidualTreeBuilder {
27 public:
28 using Altitude = T;
31
41
48 void build(const ImagePointer& image, Tree&& minTree, Tree&& maxTree) {
49 implementation_.build(image, std::move(minTree), std::move(maxTree));
50 }
51
53 [[nodiscard]] int rows() const { return implementation_.rows(); }
55 [[nodiscard]] int columns() const { return implementation_.columns(); }
57 [[nodiscard]] NodeId root() const { return implementation_.root(); }
59 [[nodiscard]] PixelId infinityPixel() const noexcept { return implementation_.infinityPixel(); }
61 [[nodiscard]] const RegularGridAdjacency2D& adjacency() const noexcept { return implementation_.adjacency(); }
63 [[nodiscard]] const SpatialOrder& spatialOrder() const noexcept { return implementation_.spatialOrder(); }
65 [[nodiscard]] SaturatedMinMaxLcaPolicy lcaPolicy() const noexcept { return implementation_.lcaPolicy(); }
67 [[nodiscard]] SaturatedMinMaxFallbackPolicy fallbackPolicy() const noexcept { return implementation_.fallbackPolicy(); }
69 [[nodiscard]] std::span<const NodeId> parents() const { return implementation_.parents(); }
71 [[nodiscard]] std::span<const NodeId> smallestNodeMap() const { return implementation_.smallestNodeMap(); }
73 [[nodiscard]] std::span<const Altitude> nodeAltitudes() const { return implementation_.nodeAltitudes(); }
75 [[nodiscard]] const ResidualTreeBuildStatistics& statistics() const { return implementation_.statistics(); }
76
82 [[nodiscard]] mmcfilters::detail::ValidatedNativeHierarchy<Altitude> takeValidatedHierarchy(MorphologicalTreeSemantics semantics) && {
83 return std::move(implementation_).takeValidatedHierarchy(std::move(semantics));
84 }
85
86 private:
87 detail::SynchronizedResidualTreeEvolution<Altitude, true> implementation_;
88};
89
90} // namespace mmcfilters::sdrt
Minimal correctness-oriented diagnostics for residual-tree construction.
Public construction policies and option objects for residual trees.
SaturatedMinMaxFallbackPolicy
Exact complement-connectivity fallback after an inconclusive certificate.
SaturatedMinMaxLcaPolicy
Lowest-common-ancestor strategy used by saturated certification.
Immutable regular-grid 2D adjacency with allocation-free traversal.
Builds the saturated residual tree from synchronized component trees.
SaturatedMinMaxFallbackPolicy fallbackPolicy() const noexcept
SaturatedResidualTreeBuilder(RegularGridAdjacency2D adjacency, PixelId infinityPixel, SaturatedResidualTreeOptions options={})
Creates a reusable saturated builder from an extensible option object.
SaturatedMinMaxLcaPolicy lcaPolicy() const noexcept
const RegularGridAdjacency2D & adjacency() const noexcept
mmcfilters::detail::ValidatedNativeHierarchy< Altitude > takeValidatedHierarchy(MorphologicalTreeSemantics semantics) &&
Transfers the completed result into validated native storage.
const ResidualTreeBuildStatistics & statistics() const
void build(const ImagePointer &image, Tree &&minTree, Tree &&maxTree)
Consumes synchronized min-tree and max-tree seeds.
Total order over the pixels of one construction domain.
Owning result for one computed scalar attribute layout and buffer.
Immutable scientific interpretation attached to one morphological tree.
Diagnostics retained by the synchronized min-tree/max-tree builders.
Options that affect saturated residual-tree construction.