VTK  9.0.1
vtkImageConnectivityFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageConnectivityFilter.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*=========================================================================
16  Copyright (c) 2014 David Gobbi
17  All rights reserved.
18 
19  Redistribution and use in source and binary forms, with or without
20  modification, are permitted provided that the following conditions
21  are met:
22 
23  * Redistributions of source code must retain the above copyright
24  notice, this list of conditions and the following disclaimer.
25 
26  * Redistributions in binary form must reproduce the above copyright
27  notice, this list of conditions and the following disclaimer in the
28  documentation and/or other materials provided with the distribution.
29 
30  * Neither the name of David Gobbi nor the names of any contributors
31  may be used to endorse or promote products derived from this software
32  without specific prior written permission.
33 
34  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
37  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
38  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
39  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
41  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
42  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
43  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 =========================================================================*/
93 #ifndef vtkImageConnectivityFilter_h
94 #define vtkImageConnectivityFilter_h
95 
96 #include "vtkImageAlgorithm.h"
97 #include "vtkImagingMorphologicalModule.h" // For export macro
98 
99 class vtkIdTypeArray;
100 class vtkIntArray;
101 class vtkDataSet;
102 class vtkImageData;
103 class vtkImageStencilData;
104 
105 class VTKIMAGINGMORPHOLOGICAL_EXPORT vtkImageConnectivityFilter : public vtkImageAlgorithm
106 {
107 public:
110  void PrintSelf(ostream& os, vtkIndent indent) override;
111 
116  {
117  SeedScalar = 0,
118  ConstantValue = 1,
119  SizeRank = 2
120  };
121 
126  {
127  SeededRegions = 0,
128  AllRegions = 1,
129  LargestRegion = 2
130  };
131 
133 
139  void SetSeedConnection(vtkAlgorithmOutput* port);
140  vtkAlgorithmOutput* GetSeedConnection();
141  void SetSeedData(vtkDataSet* data);
143 
145 
151  void SetStencilConnection(vtkAlgorithmOutput* port);
152  vtkAlgorithmOutput* GetStencilConnection();
153  void SetStencilData(vtkImageStencilData* data);
155 
157 
165  void SetLabelScalarTypeToUnsignedChar() { this->SetLabelScalarType(VTK_UNSIGNED_CHAR); }
166  void SetLabelScalarTypeToShort() { this->SetLabelScalarType(VTK_SHORT); }
167  void SetLabelScalarTypeToUnsignedShort() { this->SetLabelScalarType(VTK_UNSIGNED_SHORT); }
168  void SetLabelScalarTypeToInt() { this->SetLabelScalarType(VTK_INT); }
169  const char* GetLabelScalarTypeAsString();
170  vtkSetMacro(LabelScalarType, int);
171  vtkGetMacro(LabelScalarType, int);
173 
175 
187  void SetLabelModeToSeedScalar() { this->SetLabelMode(SeedScalar); }
188  void SetLabelModeToConstantValue() { this->SetLabelMode(ConstantValue); }
189  void SetLabelModeToSizeRank() { this->SetLabelMode(SizeRank); }
190  const char* GetLabelModeAsString();
191  vtkSetMacro(LabelMode, int);
192  vtkGetMacro(LabelMode, int);
194 
196 
203  void SetExtractionModeToSeededRegions() { this->SetExtractionMode(SeededRegions); }
204  void SetExtractionModeToAllRegions() { this->SetExtractionMode(AllRegions); }
205  void SetExtractionModeToLargestRegion() { this->SetExtractionMode(LargestRegion); }
206  const char* GetExtractionModeAsString();
207  vtkSetMacro(ExtractionMode, int);
208  vtkGetMacro(ExtractionMode, int);
210 
212 
216  vtkSetMacro(LabelConstantValue, int);
217  vtkGetMacro(LabelConstantValue, int);
219 
223  vtkIdType GetNumberOfExtractedRegions();
224 
228  vtkIdTypeArray* GetExtractedRegionLabels() { return this->ExtractedRegionLabels; }
229 
230  // Description:
231  // Get the size of each extracted region, as a voxel count.
232  vtkIdTypeArray* GetExtractedRegionSizes() { return this->ExtractedRegionSizes; }
233 
238  vtkIdTypeArray* GetExtractedRegionSeedIds() { return this->ExtractedRegionSeedIds; }
239 
245  vtkIntArray* GetExtractedRegionExtents() { return this->ExtractedRegionExtents; }
246 
248 
251  vtkSetMacro(GenerateRegionExtents, vtkTypeBool);
252  vtkBooleanMacro(GenerateRegionExtents, vtkTypeBool);
253  vtkGetMacro(GenerateRegionExtents, vtkTypeBool);
255 
257 
262  vtkSetVector2Macro(SizeRange, vtkIdType);
263  vtkGetVector2Macro(SizeRange, vtkIdType);
265 
267 
274  vtkSetVector2Macro(ScalarRange, double);
275  vtkGetVector2Macro(ScalarRange, double);
277 
279 
282  vtkSetMacro(ActiveComponent, int);
283  vtkGetMacro(ActiveComponent, int);
285 
286 protected:
288  ~vtkImageConnectivityFilter() override;
289 
292 
293  double ScalarRange[2];
294  vtkIdType SizeRange[2];
299 
304 
305  void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
306 
307  int FillInputPortInformation(int port, vtkInformation* info) override;
311 
312 private:
314  void operator=(const vtkImageConnectivityFilter&) = delete;
315 };
316 
317 #endif
vtkImageAlgorithm::RequestData
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.
vtkImageConnectivityFilter::GetExtractedRegionSizes
vtkIdTypeArray * GetExtractedRegionSizes()
Definition: vtkImageConnectivityFilter.h:232
vtkImageConnectivityFilter::LabelModeEnum
LabelModeEnum
Enum constants for SetLabelMode().
Definition: vtkImageConnectivityFilter.h:115
vtkImageConnectivityFilter::GetExtractedRegionExtents
vtkIntArray * GetExtractedRegionExtents()
Get the extent (a 6-tuples) for each output region.
Definition: vtkImageConnectivityFilter.h:245
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkX3D::data
@ data
Definition: vtkX3D.h:321
vtkImageConnectivityFilter::ExtractedRegionSizes
vtkIdTypeArray * ExtractedRegionSizes
Definition: vtkImageConnectivityFilter.h:301
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
VTK_UNSIGNED_SHORT
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:47
vtkImageConnectivityFilter::SetLabelScalarTypeToUnsignedShort
void SetLabelScalarTypeToUnsignedShort()
Definition: vtkImageConnectivityFilter.h:167
vtkImageConnectivityFilter::ExtractionModeEnum
ExtractionModeEnum
Enum constants for SetExtractionMode().
Definition: vtkImageConnectivityFilter.h:125
vtkImageConnectivityFilter::SetLabelModeToSeedScalar
void SetLabelModeToSeedScalar()
Set the mode for applying labels to the output.
Definition: vtkImageConnectivityFilter.h:187
vtkImageAlgorithm.h
vtkImageConnectivityFilter::SetLabelModeToSizeRank
void SetLabelModeToSizeRank()
Definition: vtkImageConnectivityFilter.h:189
vtkImageConnectivityFilter::ExtractedRegionExtents
vtkIntArray * ExtractedRegionExtents
Definition: vtkImageConnectivityFilter.h:303
vtkImageAlgorithm
Generic algorithm superclass for image algs.
Definition: vtkImageAlgorithm.h:37
vtkImageConnectivityFilter::SetExtractionModeToSeededRegions
void SetExtractionModeToSeededRegions()
Set which regions to output from this filter.
Definition: vtkImageConnectivityFilter.h:203
vtkImageConnectivityFilter
Label an image by connectivity.
Definition: vtkImageConnectivityFilter.h:105
vtkImageConnectivityFilter::ExtractedRegionLabels
vtkIdTypeArray * ExtractedRegionLabels
Definition: vtkImageConnectivityFilter.h:300
vtkImageConnectivityFilter::SetExtractionModeToAllRegions
void SetExtractionModeToAllRegions()
Definition: vtkImageConnectivityFilter.h:204
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkImageConnectivityFilter::LabelConstantValue
int LabelConstantValue
Definition: vtkImageConnectivityFilter.h:295
vtkImageAlgorithm::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Subclasses can reimplement this method to translate the update extent requests from each output port ...
vtkImageAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
vtkImageConnectivityFilter::SetLabelModeToConstantValue
void SetLabelModeToConstantValue()
Definition: vtkImageConnectivityFilter.h:188
vtkImageConnectivityFilter::SetLabelScalarTypeToShort
void SetLabelScalarTypeToShort()
Definition: vtkImageConnectivityFilter.h:166
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:39
VTK_UNSIGNED_CHAR
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:45
vtkImageConnectivityFilter::ActiveComponent
int ActiveComponent
Definition: vtkImageConnectivityFilter.h:296
vtkImageConnectivityFilter::GenerateRegionExtents
vtkTypeBool GenerateRegionExtents
Definition: vtkImageConnectivityFilter.h:298
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkImageAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAlgorithm::New
static vtkAlgorithm * New()
vtkImageConnectivityFilter::LabelMode
int LabelMode
Definition: vtkImageConnectivityFilter.h:290
VTK_SHORT
#define VTK_SHORT
Definition: vtkType.h:46
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkImageConnectivityFilter::SetExtractionModeToLargestRegion
void SetExtractionModeToLargestRegion()
Definition: vtkImageConnectivityFilter.h:205
vtkAlgorithmOutput
Proxy object to connect input/output ports.
Definition: vtkAlgorithmOutput.h:36
vtkImageConnectivityFilter::ExtractedRegionSeedIds
vtkIdTypeArray * ExtractedRegionSeedIds
Definition: vtkImageConnectivityFilter.h:302
vtkImageStencilData
efficient description of an image stencil
Definition: vtkImageStencilData.h:33
vtkImageConnectivityFilter::GetExtractedRegionSeedIds
vtkIdTypeArray * GetExtractedRegionSeedIds()
Get the PointId of the seed for each region.
Definition: vtkImageConnectivityFilter.h:238
vtkImageConnectivityFilter::ExtractionMode
int ExtractionMode
Definition: vtkImageConnectivityFilter.h:291
VTK_INT
#define VTK_INT
Definition: vtkType.h:48
vtkImageConnectivityFilter::SetLabelScalarTypeToInt
void SetLabelScalarTypeToInt()
Definition: vtkImageConnectivityFilter.h:168
vtkImageAlgorithm::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkImageConnectivityFilter::GetExtractedRegionLabels
vtkIdTypeArray * GetExtractedRegionLabels()
Get the label used for each extracted region.
Definition: vtkImageConnectivityFilter.h:228
vtkImageConnectivityFilter::SetLabelScalarTypeToUnsignedChar
void SetLabelScalarTypeToUnsignedChar()
Set the scalar type for the output label image.
Definition: vtkImageConnectivityFilter.h:165
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkImageConnectivityFilter::LabelScalarType
int LabelScalarType
Definition: vtkImageConnectivityFilter.h:297