VTK  9.0.3
vtkImageConvolve.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageConvolve.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 =========================================================================*/
24 #ifndef vtkImageConvolve_h
25 #define vtkImageConvolve_h
26 
27 #include "vtkImagingGeneralModule.h" // For export macro
29 
30 class VTKIMAGINGGENERAL_EXPORT vtkImageConvolve : public vtkThreadedImageAlgorithm
31 {
32 public:
34 
37  static vtkImageConvolve* New();
39  void PrintSelf(ostream& os, vtkIndent indent) override;
41 
43 
46  vtkGetVector3Macro(KernelSize, int);
48 
50 
53  void SetKernel3x3(const double kernel[9]);
54  void SetKernel5x5(const double kernel[25]);
56 
57  void SetKernel7x7(const double kernel[49]);
58 
60 
63  double* GetKernel3x3() VTK_SIZEHINT(9);
64  void GetKernel3x3(double kernel[9]);
65  double* GetKernel5x5() VTK_SIZEHINT(25);
66  void GetKernel5x5(double kernel[25]);
68 
69  double* GetKernel7x7() VTK_SIZEHINT(49);
70  void GetKernel7x7(double kernel[49]);
71 
75  void SetKernel3x3x3(const double kernel[27]);
76 
77  void SetKernel5x5x5(const double kernel[125]);
78  void SetKernel7x7x7(const double kernel[343]);
79 
81 
84  double* GetKernel3x3x3() VTK_SIZEHINT(27);
85  void GetKernel3x3x3(double kernel[27]);
87 
88  double* GetKernel5x5x5() VTK_SIZEHINT(125);
89  void GetKernel5x5x5(double kernel[125]);
90  double* GetKernel7x7x7() VTK_SIZEHINT(343);
91  void GetKernel7x7x7(double kernel[343]);
92 
93 protected:
95  ~vtkImageConvolve() override;
96 
97  void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
98  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
99  int outExt[6], int id) override;
100 
101  void GetKernel(double* kernel);
102  double* GetKernel();
103  void SetKernel(const double* kernel, int sizeX, int sizeY, int sizeZ);
104 
105  int KernelSize[3];
106  double Kernel[343];
107 
108 private:
109  vtkImageConvolve(const vtkImageConvolve&) = delete;
110  void operator=(const vtkImageConvolve&) = delete;
111 };
112 
113 #endif
Convolution of an image with a kernel.
double * GetKernel3x3()
Return an array that contains the kernel.
void SetKernel3x3(const double kernel[9])
Set the kernel to be a given 3x3 or 5x5 or 7x7 kernel.
void SetKernel7x7(const double kernel[49])
void SetKernel5x5(const double kernel[25])
static vtkImageConvolve * New()
Construct an instance of vtkImageConvolve filter.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
#define VTK_SIZEHINT(...)