VTK  9.3.20240329
vtkImageConnectivityFilter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright (c) 2014 David Gobbi
3 // SPDX-License-Identifier: BSD-3-Clause
54 #ifndef vtkImageConnectivityFilter_h
55 #define vtkImageConnectivityFilter_h
56 
57 #include "vtkImageAlgorithm.h"
58 #include "vtkImagingMorphologicalModule.h" // For export macro
59 
60 VTK_ABI_NAMESPACE_BEGIN
61 class vtkIdTypeArray;
62 class vtkIntArray;
63 class vtkDataSet;
64 class vtkImageData;
66 
67 class VTKIMAGINGMORPHOLOGICAL_EXPORT vtkImageConnectivityFilter : public vtkImageAlgorithm
68 {
69 public:
72  void PrintSelf(ostream& os, vtkIndent indent) override;
73 
78  {
79  SeedScalar = 0,
80  ConstantValue = 1,
81  SizeRank = 2
82  };
83 
88  {
89  SeededRegions = 0,
90  AllRegions = 1,
91  LargestRegion = 2
92  };
93 
95 
105 
107 
117 
119 
127  void SetLabelScalarTypeToUnsignedChar() { this->SetLabelScalarType(VTK_UNSIGNED_CHAR); }
128  void SetLabelScalarTypeToShort() { this->SetLabelScalarType(VTK_SHORT); }
129  void SetLabelScalarTypeToUnsignedShort() { this->SetLabelScalarType(VTK_UNSIGNED_SHORT); }
130  void SetLabelScalarTypeToInt() { this->SetLabelScalarType(VTK_INT); }
132  vtkSetMacro(LabelScalarType, int);
133  vtkGetMacro(LabelScalarType, int);
135 
137 
149  void SetLabelModeToSeedScalar() { this->SetLabelMode(SeedScalar); }
150  void SetLabelModeToConstantValue() { this->SetLabelMode(ConstantValue); }
151  void SetLabelModeToSizeRank() { this->SetLabelMode(SizeRank); }
152  const char* GetLabelModeAsString();
153  vtkSetMacro(LabelMode, int);
154  vtkGetMacro(LabelMode, int);
156 
158 
165  void SetExtractionModeToSeededRegions() { this->SetExtractionMode(SeededRegions); }
166  void SetExtractionModeToAllRegions() { this->SetExtractionMode(AllRegions); }
167  void SetExtractionModeToLargestRegion() { this->SetExtractionMode(LargestRegion); }
169  vtkSetMacro(ExtractionMode, int);
170  vtkGetMacro(ExtractionMode, int);
172 
174 
178  vtkSetMacro(LabelConstantValue, int);
179  vtkGetMacro(LabelConstantValue, int);
181 
186 
190  vtkIdTypeArray* GetExtractedRegionLabels() { return this->ExtractedRegionLabels; }
191 
192  // Description:
193  // Get the size of each extracted region, as a voxel count.
194  vtkIdTypeArray* GetExtractedRegionSizes() { return this->ExtractedRegionSizes; }
195 
200  vtkIdTypeArray* GetExtractedRegionSeedIds() { return this->ExtractedRegionSeedIds; }
201 
207  vtkIntArray* GetExtractedRegionExtents() { return this->ExtractedRegionExtents; }
208 
210 
213  vtkSetMacro(GenerateRegionExtents, vtkTypeBool);
214  vtkBooleanMacro(GenerateRegionExtents, vtkTypeBool);
215  vtkGetMacro(GenerateRegionExtents, vtkTypeBool);
217 
219 
224  vtkSetVector2Macro(SizeRange, vtkIdType);
225  vtkGetVector2Macro(SizeRange, vtkIdType);
227 
229 
236  vtkSetVector2Macro(ScalarRange, double);
237  vtkGetVector2Macro(ScalarRange, double);
239 
241 
244  vtkSetMacro(ActiveComponent, int);
245  vtkGetMacro(ActiveComponent, int);
247 
248 protected:
251 
254 
255  double ScalarRange[2];
256  vtkIdType SizeRange[2];
261 
266 
267  void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
268 
273 
274 private:
276  void operator=(const vtkImageConnectivityFilter&) = delete;
277 };
278 
279 VTK_ABI_NAMESPACE_END
280 #endif
Proxy object to connect input/output ports.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
dynamic, self-adjusting array of vtkIdType
Generic algorithm superclass for image algs.
Label an image by connectivity.
void SetExtractionModeToAllRegions()
Set which regions to output from this filter.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
void SetExtractionModeToLargestRegion()
Set which regions to output from this filter.
~vtkImageConnectivityFilter() override
const char * GetLabelScalarTypeAsString()
Set the scalar type for the output label image.
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
vtkAlgorithmOutput * GetSeedConnection()
The input for seed locations (input port 1).
void SetLabelScalarTypeToShort()
Set the scalar type for the output label image.
vtkIdType GetNumberOfExtractedRegions()
Get the number of extracted regions.
void SetStencilData(vtkImageStencilData *data)
The input for a stencil (input port 2).
const char * GetExtractionModeAsString()
Set which regions to output from this filter.
void SetSeedData(vtkDataSet *data)
The input for seed locations (input port 1).
const char * GetLabelModeAsString()
Set the mode for applying labels to the output.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called in response to a REQUEST_DATA request from the executive.
vtkIdTypeArray * GetExtractedRegionLabels()
Get the label used for each extracted region.
ExtractionModeEnum
Enum constants for SetExtractionMode().
vtkAlgorithmOutput * GetStencilConnection()
The input for a stencil (input port 2).
void SetLabelScalarTypeToInt()
Set the scalar type for the output label image.
void SetSeedConnection(vtkAlgorithmOutput *port)
The input for seed locations (input port 1).
vtkIntArray * GetExtractedRegionExtents()
Get the extent (a 6-tuples) for each output region.
void SetLabelScalarTypeToUnsignedChar()
Set the scalar type for the output label image.
void SetLabelModeToConstantValue()
Set the mode for applying labels to the output.
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to translate the update extent requests from each output port ...
LabelModeEnum
Enum constants for SetLabelMode().
static vtkImageConnectivityFilter * New()
void SetLabelScalarTypeToUnsignedShort()
Set the scalar type for the output label image.
vtkIdTypeArray * GetExtractedRegionSeedIds()
Get the PointId of the seed for each region.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ComputeInputUpdateExtent(int inExt[6], int outExt[6])
void SetExtractionModeToSeededRegions()
Set which regions to output from this filter.
void SetLabelModeToSeedScalar()
Set the mode for applying labels to the output.
void SetStencilConnection(vtkAlgorithmOutput *port)
The input for a stencil (input port 2).
void SetLabelModeToSizeRank()
Set the mode for applying labels to the output.
topologically and geometrically regular array of data
Definition: vtkImageData.h:156
efficient description of an image stencil
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:144
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
@ data
Definition: vtkX3D.h:315
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_SHORT
Definition: vtkType.h:36
int vtkIdType
Definition: vtkType.h:315
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:35
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:37
#define VTK_INT
Definition: vtkType.h:38