VTK  9.2.6
vtkImageMathematics.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageMathematics.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 =========================================================================*/
137 #ifndef vtkImageMathematics_h
138 #define vtkImageMathematics_h
139 
140 // Operation options.
141 #define VTK_ADD 0
142 #define VTK_SUBTRACT 1
143 #define VTK_MULTIPLY 2
144 #define VTK_DIVIDE 3
145 #define VTK_INVERT 4
146 #define VTK_SIN 5
147 #define VTK_COS 6
148 #define VTK_EXP 7
149 #define VTK_LOG 8
150 #define VTK_ABS 9
151 #define VTK_SQR 10
152 #define VTK_SQRT 11
153 #define VTK_MIN 12
154 #define VTK_MAX 13
155 #define VTK_ATAN 14
156 #define VTK_ATAN2 15
157 #define VTK_MULTIPLYBYK 16
158 #define VTK_ADDC 17
159 #define VTK_CONJUGATE 18
160 #define VTK_COMPLEX_MULTIPLY 19
161 #define VTK_REPLACECBYK 20
162 
163 #include "vtkImagingMathModule.h" // For export macro
165 
166 class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
167 {
168 public:
171  void PrintSelf(ostream& os, vtkIndent indent) override;
172 
174 
177  vtkSetMacro(Operation, int);
178  vtkGetMacro(Operation, int);
180 
185  void SetOperationToAdd() { this->SetOperation(VTK_ADD); }
186 
191  void SetOperationToSubtract() { this->SetOperation(VTK_SUBTRACT); }
192 
197  void SetOperationToMultiply() { this->SetOperation(VTK_MULTIPLY); }
198 
203  void SetOperationToDivide() { this->SetOperation(VTK_DIVIDE); }
204 
205  void SetOperationToConjugate() { this->SetOperation(VTK_CONJUGATE); }
206 
207  void SetOperationToComplexMultiply() { this->SetOperation(VTK_COMPLEX_MULTIPLY); }
208 
213  void SetOperationToInvert() { this->SetOperation(VTK_INVERT); }
214 
219  void SetOperationToSin() { this->SetOperation(VTK_SIN); }
220 
225  void SetOperationToCos() { this->SetOperation(VTK_COS); }
226 
231  void SetOperationToExp() { this->SetOperation(VTK_EXP); }
232 
237  void SetOperationToLog() { this->SetOperation(VTK_LOG); }
238 
243  void SetOperationToAbsoluteValue() { this->SetOperation(VTK_ABS); }
244 
249  void SetOperationToSquare() { this->SetOperation(VTK_SQR); }
250 
255  void SetOperationToSquareRoot() { this->SetOperation(VTK_SQRT); }
256 
261  void SetOperationToMin() { this->SetOperation(VTK_MIN); }
262 
267  void SetOperationToMax() { this->SetOperation(VTK_MAX); }
268 
273  void SetOperationToATAN() { this->SetOperation(VTK_ATAN); }
274 
275  void SetOperationToATAN2() { this->SetOperation(VTK_ATAN2); }
276 
281  void SetOperationToMultiplyByK() { this->SetOperation(VTK_MULTIPLYBYK); }
282 
287  void SetOperationToAddConstant() { this->SetOperation(VTK_ADDC); }
288 
293  void SetOperationToReplaceCByK() { this->SetOperation(VTK_REPLACECBYK); }
294 
296 
299  vtkSetMacro(ConstantK, double);
300  vtkGetMacro(ConstantK, double);
302 
304 
307  vtkSetMacro(ConstantC, double);
308  vtkGetMacro(ConstantC, double);
310 
312 
315  vtkSetMacro(DivideByZeroToC, vtkTypeBool);
316  vtkGetMacro(DivideByZeroToC, vtkTypeBool);
317  vtkBooleanMacro(DivideByZeroToC, vtkTypeBool);
319 
321 
325  virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
326  virtual void SetInput2Data(vtkDataObject* in) { this->AddInputData(0, in); }
327  virtual void SetInputConnection(int idx, vtkAlgorithmOutput* input) override;
328  virtual void SetInputConnection(vtkAlgorithmOutput* input) override
329  {
330  this->SetInputConnection(0, input);
331  }
333 
340  virtual void ReplaceNthInputConnection(int idx, vtkAlgorithmOutput* input);
341 
343 
348  void SetInputData(int idx, vtkDataObject* input);
349  void SetInputData(vtkDataObject* input) { this->SetInputData(0, input); }
351 
353 
359  vtkDataObject* GetInput() { return this->GetInput(0); }
361 
368 
369 protected:
371  ~vtkImageMathematics() override = default;
372 
374  double ConstantK;
375  double ConstantC;
377 
379 
381  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
382  int outExt[6], int threadId) override;
383 
385 
386 private:
387  vtkImageMathematics(const vtkImageMathematics&) = delete;
388  void operator=(const vtkImageMathematics&) = delete;
389 };
390 
391 #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:163
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.
virtual void SetInputConnection(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...
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.
virtual void SetInputConnection(int idx, vtkAlgorithmOutput *input) override
Set the inputs to this filter.
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:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
@ info
Definition: vtkX3D.h:382
@ port
Definition: vtkX3D.h:453
int vtkTypeBool
Definition: vtkABI.h:69
#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