18#ifndef itkWatershedSegmenter_h
19#define itkWatershedSegmenter_h
88template <
typename TInputImage>
246 itkSetMacro(DoBoundaryAnalysis,
bool);
247 itkGetConstMacro(DoBoundaryAnalysis,
bool);
254 itkGetConstMacro(SortEdgeLists,
bool);
255 itkSetMacro(SortEdgeLists,
bool);
409#ifndef ITK_MANUAL_INSTANTIATION
410# include "itkWatershedSegmenter.hxx"
SmartPointer< Self > Pointer
SmartPointer< Self > Pointer
Templated n-dimensional image class.
ImageRegion< VImageDimension > RegionType
SmartPointer< Self > Pointer
Control indentation during Print() invocation.
virtual void Modified() const
DataObject * GetOutput(const DataObjectIdentifierType &key)
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
virtual void SetNthInput(DataObjectPointerArraySizeType idx, DataObject *input)
DataObject * GetInput(const DataObjectIdentifierType &key)
Return an input.
virtual void SetNthOutput(DataObjectPointerArraySizeType idx, DataObject *output)
virtual DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx)
Make a DataObject of the correct type to used as the specified output.
Implements transparent reference counting.
SmartPointer< Self > Pointer
std::pair< unsigned int, unsigned int > IndexType
typename flat_hash_t::value_type FlatHashValueType
SmartPointer< Self > Pointer
static void MinMax(InputImageTypePointer img, ImageRegionType region, InputPixelType &min, InputPixelType &max)
void DescendFlatRegions(flat_region_table_t &, ImageRegionType)
connectivity_t m_Connectivity
void PrintSelf(std::ostream &os, Indent indent) const override
DataObject::Pointer DataObjectPointer
typename OutputImageType::Pointer OutputImageTypePointer
SegmentTableType * GetSegmentTable()
void GradientDescent(InputImageTypePointer, ImageRegionType)
std::unordered_map< IdentifierType, edge_table_t > edge_table_hash_t
Image< IdentifierType, Self::ImageDimension > OutputImageType
typename BoundaryType::Pointer BoundaryTypePointer
Boundary< InputPixelType, Self::ImageDimension > BoundaryType
void SetBoundary(BoundaryType *b)
ImageRegionType GetLargestPossibleRegion() const
static void SetInputImageValues(InputImageTypePointer img, const ImageRegionType region, InputPixelType value)
static constexpr IdentifierType NULL_LABEL
void SetInputImage(InputImageType *img)
void SetLargestPossibleRegion(ImageRegionType reg)
void LabelMinima(InputImageTypePointer, ImageRegionType, flat_region_table_t &, InputPixelType)
std::map< IdentifierType, InputPixelType > edge_table_t
BoundaryType * GetBoundary()
SmartPointer< const Self > ConstPointer
typename InputImageType::RegionType ImageRegionType
static void Threshold(InputImageTypePointer destination, InputImageTypePointer source, const ImageRegionType source_region, const ImageRegionType destination_region, InputPixelType threshold)
static constexpr unsigned int ImageDimension
typename InputImageType::PixelType InputPixelType
void UpdateOutputInformation() override
Update the information describing the output data.
OutputImageType * GetOutputImage()
typename BoundaryType::IndexType BoundaryIndexType
static void SetOutputImageValues(OutputImageTypePointer img, const ImageRegionType region, IdentifierType value)
void UpdateSegmentTable(InputImageTypePointer, ImageRegionType)
static constexpr short NULL_FLOW
bool m_DoBoundaryAnalysis
IdentifierType m_CurrentLabel
void operator=(const Self &)
void InitializeBoundary()
std::unordered_map< IdentifierType, flat_region_t > flat_region_table_t
typename InputImageType::Pointer InputImageTypePointer
void BuildRetainingWall(InputImageTypePointer, ImageRegionType, InputPixelType)
ImageRegionType m_LargestPossibleRegion
DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx) override
Make a DataObject of the correct type to used as the specified output.
virtual void GenerateConnectivity()
SmartPointer< Self > Pointer
static void RelabelImage(OutputImageTypePointer, ImageRegionType, EquivalencyTable::Pointer)
Image< TPixelType, TDimension > InputImageType
void GenerateOutputRequestedRegion(DataObject *output) override
typename BoundaryType::FlatHashValueType BoundaryFlatHashValueType
void CollectBoundaryInformation(flat_region_table_t &)
void AnalyzeBoundaryFlow(InputImageTypePointer, flat_region_table_t &, InputPixelType)
void SetSegmentTable(SegmentTableType *s)
void GenerateInputRequestedRegion() override
InputImageType * GetInputImage()
ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
static void MergeFlatRegions(flat_region_table_t &, EquivalencyTable::Pointer)
void SetOutputImage(OutputImageType *img)
typename SegmentTableType::Pointer SegmentTableTypePointer
double m_MaximumFloodLevel
SegmentTable< InputPixelType > SegmentTableType
void GenerateData() override
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
SizeValueType IdentifierType
TTarget itkDynamicCastInDebugMode(TSource x)
InputImageType::OffsetType * direction
InputPixelType bounds_min
IdentifierType * min_label_ptr