/*========================================================================= Program: Visualization Toolkit Module: vtkImageSeedConnectivity.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkImageSeedConnectivity * @brief SeedConnectivity with user defined seeds. * * vtkImageSeedConnectivity marks pixels connected to user supplied seeds. * The input must be unsigned char, and the output is also unsigned char. If * a seed supplied by the user does not have pixel value "InputTrueValue", * then the image is scanned +x, +y, +z until a pixel is encountered with * value "InputTrueValue". This new pixel is used as the seed . Any pixel * with out value "InputTrueValue" is consider off. The output pixels values * are 0 for any off pixel in input, "OutputTrueValue" for any pixels * connected to seeds, and "OutputUnconnectedValue" for any on pixels not * connected to seeds. The same seeds are used for all images in the image * set. */ #ifndef vtkImageSeedConnectivity_h #define vtkImageSeedConnectivity_h #include "vtkImageAlgorithm.h" #include "vtkImagingMorphologicalModule.h" // For export macro class vtkImageConnector; class vtkImageConnectorSeed; class VTKIMAGINGMORPHOLOGICAL_EXPORT vtkImageSeedConnectivity : public vtkImageAlgorithm { public: static vtkImageSeedConnectivity* New(); vtkTypeMacro(vtkImageSeedConnectivity, vtkImageAlgorithm); void PrintSelf(ostream& os, vtkIndent indent) override; //@{ /** * Methods for manipulating the seed pixels. */ void RemoveAllSeeds(); void AddSeed(int num, int* index); void AddSeed(int i0, int i1, int i2); void AddSeed(int i0, int i1); //@} //@{ /** * Set/Get what value is considered as connecting pixels. */ vtkSetMacro(InputConnectValue, unsigned char); vtkGetMacro(InputConnectValue, unsigned char); //@} //@{ /** * Set/Get the value to set connected pixels to. */ vtkSetMacro(OutputConnectedValue, unsigned char); vtkGetMacro(OutputConnectedValue, unsigned char); //@} //@{ /** * Set/Get the value to set unconnected pixels to. */ vtkSetMacro(OutputUnconnectedValue, unsigned char); vtkGetMacro(OutputUnconnectedValue, unsigned char); //@} //@{ /** * Get the vtkImageCOnnector used by this filter. */ vtkGetObjectMacro(Connector, vtkImageConnector); //@} //@{ /** * Set the number of axes to use in connectivity. */ vtkSetMacro(Dimensionality, int); vtkGetMacro(Dimensionality, int); //@} protected: vtkImageSeedConnectivity(); ~vtkImageSeedConnectivity() override; unsigned char InputConnectValue; unsigned char OutputConnectedValue; unsigned char OutputUnconnectedValue; vtkImageConnectorSeed* Seeds; vtkImageConnector* Connector; int Dimensionality; int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override; int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override; private: vtkImageSeedConnectivity(const vtkImageSeedConnectivity&) = delete; void operator=(const vtkImageSeedConnectivity&) = delete; }; #endif