VTK  9.3.20240328
vtkImageMathematics.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
125 #ifndef vtkImageMathematics_h
126 #define vtkImageMathematics_h
127 
128 // Operation options.
129 #define VTK_ADD 0
130 #define VTK_SUBTRACT 1
131 #define VTK_MULTIPLY 2
132 #define VTK_DIVIDE 3
133 #define VTK_INVERT 4
134 #define VTK_SIN 5
135 #define VTK_COS 6
136 #define VTK_EXP 7
137 #define VTK_LOG 8
138 #define VTK_ABS 9
139 #define VTK_SQR 10
140 #define VTK_SQRT 11
141 #define VTK_MIN 12
142 #define VTK_MAX 13
143 #define VTK_ATAN 14
144 #define VTK_ATAN2 15
145 #define VTK_MULTIPLYBYK 16
146 #define VTK_ADDC 17
147 #define VTK_CONJUGATE 18
148 #define VTK_COMPLEX_MULTIPLY 19
149 #define VTK_REPLACECBYK 20
150 
151 #include "vtkImagingMathModule.h" // For export macro
153 
154 VTK_ABI_NAMESPACE_BEGIN
155 class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
156 {
157 public:
160  void PrintSelf(ostream& os, vtkIndent indent) override;
161 
163 
166  vtkSetMacro(Operation, int);
167  vtkGetMacro(Operation, int);
169 
174  void SetOperationToAdd() { this->SetOperation(VTK_ADD); }
175 
180  void SetOperationToSubtract() { this->SetOperation(VTK_SUBTRACT); }
181 
186  void SetOperationToMultiply() { this->SetOperation(VTK_MULTIPLY); }
187 
192  void SetOperationToDivide() { this->SetOperation(VTK_DIVIDE); }
193 
194  void SetOperationToConjugate() { this->SetOperation(VTK_CONJUGATE); }
195 
196  void SetOperationToComplexMultiply() { this->SetOperation(VTK_COMPLEX_MULTIPLY); }
197 
202  void SetOperationToInvert() { this->SetOperation(VTK_INVERT); }
203 
208  void SetOperationToSin() { this->SetOperation(VTK_SIN); }
209 
214  void SetOperationToCos() { this->SetOperation(VTK_COS); }
215 
220  void SetOperationToExp() { this->SetOperation(VTK_EXP); }
221 
226  void SetOperationToLog() { this->SetOperation(VTK_LOG); }
227 
232  void SetOperationToAbsoluteValue() { this->SetOperation(VTK_ABS); }
233 
238  void SetOperationToSquare() { this->SetOperation(VTK_SQR); }
239 
244  void SetOperationToSquareRoot() { this->SetOperation(VTK_SQRT); }
245 
250  void SetOperationToMin() { this->SetOperation(VTK_MIN); }
251 
256  void SetOperationToMax() { this->SetOperation(VTK_MAX); }
257 
262  void SetOperationToATAN() { this->SetOperation(VTK_ATAN); }
263 
264  void SetOperationToATAN2() { this->SetOperation(VTK_ATAN2); }
265 
270  void SetOperationToMultiplyByK() { this->SetOperation(VTK_MULTIPLYBYK); }
271 
276  void SetOperationToAddConstant() { this->SetOperation(VTK_ADDC); }
277 
282  void SetOperationToReplaceCByK() { this->SetOperation(VTK_REPLACECBYK); }
283 
285 
288  vtkSetMacro(ConstantK, double);
289  vtkGetMacro(ConstantK, double);
291 
293 
296  vtkSetMacro(ConstantC, double);
297  vtkGetMacro(ConstantC, double);
299 
301 
304  vtkSetMacro(DivideByZeroToC, vtkTypeBool);
305  vtkGetMacro(DivideByZeroToC, vtkTypeBool);
306  vtkBooleanMacro(DivideByZeroToC, vtkTypeBool);
308 
310 
314  virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
315  virtual void SetInput2Data(vtkDataObject* in) { this->AddInputData(0, in); }
316  void SetInputConnection(int idx, vtkAlgorithmOutput* input) override;
318  {
319  this->SetInputConnection(0, input);
320  }
322 
329  virtual void ReplaceNthInputConnection(int idx, vtkAlgorithmOutput* input);
330 
332 
337  void SetInputData(int idx, vtkDataObject* input);
338  void SetInputData(vtkDataObject* input) { this->SetInputData(0, input); }
340 
342 
348  vtkDataObject* GetInput() { return this->GetInput(0); }
350 
357 
358 protected:
360  ~vtkImageMathematics() override = default;
361 
363  double ConstantK;
364  double ConstantC;
366 
368 
370  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
371  int outExt[6], int threadId) override;
372 
374 
375 private:
376  vtkImageMathematics(const vtkImageMathematics&) = delete;
377  void operator=(const vtkImageMathematics&) = delete;
378 };
379 
380 VTK_ABI_NAMESPACE_END
381 #endif
Proxy object to connect input/output ports.
virtual void SetInputConnection(int port, vtkAlgorithmOutput *input)
Set the connection for the given input port index.
int GetNumberOfInputConnections(int port)
Get the number of inputs currently connected to a port.
general representation of visualization data
void SetInputData(vtkDataObject *)
Assign a data object as input.
virtual void AddInputData(vtkDataObject *)
Assign a data object as input.
topologically and geometrically regular array of data
Definition: vtkImageData.h:155
Add, subtract, multiply, divide, invert, sin, cos, exp, log.
void SetOperationToMultiply()
Set each pixel in the output image to the product of the corresponding pixels in Input1 and Input2.
void SetOperationToATAN()
Set each pixel in the output image to the arctangent of the corresponding pixel in Input1.
void SetInputConnection(int idx, vtkAlgorithmOutput *input) override
Set the inputs to this filter.
virtual void SetInput1Data(vtkDataObject *in)
Set the inputs to this filter.
void SetOperationToMultiplyByK()
Set each pixel in the output image to the product of ConstantK with the corresponding pixel in Input1...
void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int outExt[6], int threadId) override
If the subclass does not define an Execute method, then the task will be broken up,...
~vtkImageMathematics() override=default
void SetOperationToSquareRoot()
Set each pixel in the output image to the square root of the corresponding pixel in Input1.
void SetOperationToMin()
Set each pixel in the output image to the minimum of the corresponding pixels in Input1 and Input2.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
void SetInputConnection(vtkAlgorithmOutput *input) override
Set the inputs to this filter.
virtual void ReplaceNthInputConnection(int idx, vtkAlgorithmOutput *input)
Replace one of the input connections with a new input.
void SetInputData(vtkDataObject *input)
Assign a data object as input.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetInput2Data(vtkDataObject *in)
Set the inputs to this filter.
void SetOperationToDivide()
Set each pixel in the output image to the quotient of the corresponding pixels in Input1 and Input2 (...
void SetOperationToExp()
Set each pixel in the output image to the exponential of the corresponding pixel in Input1.
void SetInputData(int idx, vtkDataObject *input)
Assign a data object as input.
void SetOperationToSubtract()
Set each pixel in the output image to the difference of the corresponding pixels in Input1 and Input2...
void SetOperationToLog()
Set each pixel in the output image to the log of the corresponding pixel in Input1.
void SetOperationToMax()
Set each pixel in the output image to the maximum of the corresponding pixels in Input1 and Input2.
void SetOperationToAdd()
Set each pixel in the output image to the sum of the corresponding pixels in Input1 and Input2.
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
int GetNumberOfInputs()
Get the number of inputs to this filter.
void SetOperationToReplaceCByK()
Find every pixel in Input1 that equals ConstantC and set the corresponding pixels in the Output to Co...
void SetOperationToSin()
Set each pixel in the output image to the sine of the corresponding pixel in Input1.
void SetOperationToAddConstant()
Set each pixel in the output image to the product of ConstantC with the corresponding pixel in Input1...
vtkDataObject * GetInput(int idx)
Get one input to this filter.
vtkDataObject * GetInput()
Get one input to this filter.
static vtkImageMathematics * New()
void SetOperationToAbsoluteValue()
Set each pixel in the output image to the absolute value of the corresponding pixel in Input1.
void SetOperationToSquare()
Set each pixel in the output image to the square of the corresponding pixel in Input1.
void SetOperationToInvert()
Set each pixel in the output image to 1 over the corresponding pixel in Input1 and Input2 (output = 1...
void SetOperationToCos()
Set each pixel in the output image to the cosine of the corresponding pixel in Input1.
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_SQRT
#define VTK_MULTIPLYBYK
#define VTK_LOG
#define VTK_ATAN
#define VTK_ATAN2
#define VTK_INVERT
#define VTK_SUBTRACT
#define VTK_EXP
#define VTK_MIN
#define VTK_MULTIPLY
#define VTK_COMPLEX_MULTIPLY
#define VTK_SIN
#define VTK_ABS
#define VTK_COS
#define VTK_ADD
#define VTK_SQR
#define VTK_MAX
#define VTK_REPLACECBYK
#define VTK_ADDC
#define VTK_CONJUGATE
#define VTK_DIVIDE