VTK  9.3.0
vtkImageConvolve.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
27 #ifndef vtkImageConvolve_h
28 #define vtkImageConvolve_h
29 
30 #include "vtkImagingGeneralModule.h" // For export macro
32 
33 VTK_ABI_NAMESPACE_BEGIN
34 class VTKIMAGINGGENERAL_EXPORT vtkImageConvolve : public vtkThreadedImageAlgorithm
35 {
36 public:
38 
41  static vtkImageConvolve* New();
43  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
47 
50  vtkGetVector3Macro(KernelSize, int);
52 
54 
57  void SetKernel3x3(const double kernel[9]);
58  void SetKernel5x5(const double kernel[25]);
60 
61  void SetKernel7x7(const double kernel[49]);
62 
64 
67  double* GetKernel3x3() VTK_SIZEHINT(9);
68  void GetKernel3x3(double kernel[9]);
69  double* GetKernel5x5() VTK_SIZEHINT(25);
70  void GetKernel5x5(double kernel[25]);
72 
73  double* GetKernel7x7() VTK_SIZEHINT(49);
74  void GetKernel7x7(double kernel[49]);
75 
79  void SetKernel3x3x3(const double kernel[27]);
80 
81  void SetKernel5x5x5(const double kernel[125]);
82  void SetKernel7x7x7(const double kernel[343]);
83 
85 
88  double* GetKernel3x3x3() VTK_SIZEHINT(27);
89  void GetKernel3x3x3(double kernel[27]);
91 
92  double* GetKernel5x5x5() VTK_SIZEHINT(125);
93  void GetKernel5x5x5(double kernel[125]);
94  double* GetKernel7x7x7() VTK_SIZEHINT(343);
95  void GetKernel7x7x7(double kernel[343]);
96 
97 protected:
99  ~vtkImageConvolve() override;
100 
101  void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
102  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
103  int outExt[6], int id) override;
104 
105  void GetKernel(double* kernel);
106  double* GetKernel();
107  void SetKernel(const double* kernel, int sizeX, int sizeY, int sizeZ);
108 
109  int KernelSize[3];
110  double Kernel[343];
111 
112 private:
113  vtkImageConvolve(const vtkImageConvolve&) = delete;
114  void operator=(const vtkImageConvolve&) = delete;
115 };
116 
117 VTK_ABI_NAMESPACE_END
118 #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])
Set the kernel to be a given 3x3 or 5x5 or 7x7 kernel.
static vtkImageConvolve * New()
Construct an instance of vtkImageConvolve filter.
void PrintSelf(ostream &os, vtkIndent indent) override
Construct an instance of vtkImageConvolve filter.
topologically and geometrically regular array of data
Definition: vtkImageData.h:52
a simple class to control print indentation
Definition: vtkIndent.h:38
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
#define VTK_SIZEHINT(...)