VTK  9.3.0
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
16#ifndef vtkImageMathematics_h
17#define vtkImageMathematics_h
18
19// Operation options.
20#define VTK_ADD 0
21#define VTK_SUBTRACT 1
22#define VTK_MULTIPLY 2
23#define VTK_DIVIDE 3
24#define VTK_INVERT 4
25#define VTK_SIN 5
26#define VTK_COS 6
27#define VTK_EXP 7
28#define VTK_LOG 8
29#define VTK_ABS 9
30#define VTK_SQR 10
31#define VTK_SQRT 11
32#define VTK_MIN 12
33#define VTK_MAX 13
34#define VTK_ATAN 14
35#define VTK_ATAN2 15
36#define VTK_MULTIPLYBYK 16
37#define VTK_ADDC 17
38#define VTK_CONJUGATE 18
39#define VTK_COMPLEX_MULTIPLY 19
40#define VTK_REPLACECBYK 20
41
42#include "vtkImagingMathModule.h" // For export macro
44
45VTK_ABI_NAMESPACE_BEGIN
46class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
47{
48public:
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
54
57 vtkSetMacro(Operation, int);
58 vtkGetMacro(Operation, int);
60
65 void SetOperationToAdd() { this->SetOperation(VTK_ADD); }
66
71 void SetOperationToSubtract() { this->SetOperation(VTK_SUBTRACT); }
72
77 void SetOperationToMultiply() { this->SetOperation(VTK_MULTIPLY); }
78
83 void SetOperationToDivide() { this->SetOperation(VTK_DIVIDE); }
84
85 void SetOperationToConjugate() { this->SetOperation(VTK_CONJUGATE); }
86
88
93 void SetOperationToInvert() { this->SetOperation(VTK_INVERT); }
94
99 void SetOperationToSin() { this->SetOperation(VTK_SIN); }
100
105 void SetOperationToCos() { this->SetOperation(VTK_COS); }
106
111 void SetOperationToExp() { this->SetOperation(VTK_EXP); }
112
117 void SetOperationToLog() { this->SetOperation(VTK_LOG); }
118
123 void SetOperationToAbsoluteValue() { this->SetOperation(VTK_ABS); }
124
129 void SetOperationToSquare() { this->SetOperation(VTK_SQR); }
130
135 void SetOperationToSquareRoot() { this->SetOperation(VTK_SQRT); }
136
141 void SetOperationToMin() { this->SetOperation(VTK_MIN); }
142
147 void SetOperationToMax() { this->SetOperation(VTK_MAX); }
148
153 void SetOperationToATAN() { this->SetOperation(VTK_ATAN); }
154
155 void SetOperationToATAN2() { this->SetOperation(VTK_ATAN2); }
156
161 void SetOperationToMultiplyByK() { this->SetOperation(VTK_MULTIPLYBYK); }
162
167 void SetOperationToAddConstant() { this->SetOperation(VTK_ADDC); }
168
173 void SetOperationToReplaceCByK() { this->SetOperation(VTK_REPLACECBYK); }
174
176
179 vtkSetMacro(ConstantK, double);
180 vtkGetMacro(ConstantK, double);
182
184
187 vtkSetMacro(ConstantC, double);
188 vtkGetMacro(ConstantC, double);
190
192
195 vtkSetMacro(DivideByZeroToC, vtkTypeBool);
196 vtkGetMacro(DivideByZeroToC, vtkTypeBool);
197 vtkBooleanMacro(DivideByZeroToC, vtkTypeBool);
199
201
205 virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
206 virtual void SetInput2Data(vtkDataObject* in) { this->AddInputData(0, in); }
207 void SetInputConnection(int idx, vtkAlgorithmOutput* input) override;
209 {
210 this->SetInputConnection(0, input);
211 }
213
220 virtual void ReplaceNthInputConnection(int idx, vtkAlgorithmOutput* input);
221
223
228 void SetInputData(int idx, vtkDataObject* input);
229 void SetInputData(vtkDataObject* input) { this->SetInputData(0, input); }
231
233
239 vtkDataObject* GetInput() { return this->GetInput(0); }
241
248
249protected:
251 ~vtkImageMathematics() override = default;
252
254 double ConstantK;
255 double ConstantC;
257
259
261 vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
262 int outExt[6], int threadId) override;
263
264 int FillInputPortInformation(int port, vtkInformation* info) override;
265
266private:
268 void operator=(const vtkImageMathematics&) = delete;
269};
270
271VTK_ABI_NAMESPACE_END
272#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
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.
vtkDataObject * GetInput(int idx)
Get one input 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...
void SetOperationToAbsoluteValue()
Set each pixel in the output image to the absolute value of the corresponding pixel in Input1.
static vtkImageMathematics * New()
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...
vtkDataObject * GetInput()
Get one input to this filter.
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:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
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