You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.6 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkImageDilateErode3D.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 vtkImageDilateErode3D
* @brief Dilates one value and erodes another.
*
* vtkImageDilateErode3D will dilate one value and erode another.
* It uses an elliptical foot print, and only erodes/dilates on the
* boundary of the two values. The filter is restricted to the
* X, Y, and Z axes for now. It can degenerate to a 2 or 1 dimensional
* filter by setting the kernel size to 1 for a specific axis.
*/
#ifndef vtkImageDilateErode3D_h
#define vtkImageDilateErode3D_h
#include "vtkImageSpatialAlgorithm.h"
#include "vtkImagingMorphologicalModule.h" // For export macro
class vtkImageEllipsoidSource;
class VTKIMAGINGMORPHOLOGICAL_EXPORT vtkImageDilateErode3D : public vtkImageSpatialAlgorithm
{
public:
//@{
/**
* Construct an instance of vtkImageDilateErode3D filter.
* By default zero values are dilated.
*/
static vtkImageDilateErode3D* New();
vtkTypeMacro(vtkImageDilateErode3D, vtkImageSpatialAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
/**
* This method sets the size of the neighborhood. It also sets the
* default middle of the neighborhood and computes the elliptical foot print.
*/
void SetKernelSize(int size0, int size1, int size2);
//@{
/**
* Set/Get the Dilate and Erode values to be used by this filter.
*/
vtkSetMacro(DilateValue, double);
vtkGetMacro(DilateValue, double);
vtkSetMacro(ErodeValue, double);
vtkGetMacro(ErodeValue, double);
//@}
protected:
vtkImageDilateErode3D();
~vtkImageDilateErode3D() override;
vtkImageEllipsoidSource* Ellipse;
double DilateValue;
double ErodeValue;
void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
int extent[6], int id) override;
int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector) override;
private:
vtkImageDilateErode3D(const vtkImageDilateErode3D&) = delete;
void operator=(const vtkImageDilateErode3D&) = delete;
};
#endif