VTK  9.0.1
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 =========================================================================*/
25 #ifndef vtkImageMathematics_h
26 #define vtkImageMathematics_h
27 
28 // Operation options.
29 #define VTK_ADD 0
30 #define VTK_SUBTRACT 1
31 #define VTK_MULTIPLY 2
32 #define VTK_DIVIDE 3
33 #define VTK_INVERT 4
34 #define VTK_SIN 5
35 #define VTK_COS 6
36 #define VTK_EXP 7
37 #define VTK_LOG 8
38 #define VTK_ABS 9
39 #define VTK_SQR 10
40 #define VTK_SQRT 11
41 #define VTK_MIN 12
42 #define VTK_MAX 13
43 #define VTK_ATAN 14
44 #define VTK_ATAN2 15
45 #define VTK_MULTIPLYBYK 16
46 #define VTK_ADDC 17
47 #define VTK_CONJUGATE 18
48 #define VTK_COMPLEX_MULTIPLY 19
49 #define VTK_REPLACECBYK 20
50 
51 #include "vtkImagingMathModule.h" // For export macro
53 
54 class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
55 {
56 public:
57  static vtkImageMathematics* New();
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
62 
65  vtkSetMacro(Operation, int);
66  vtkGetMacro(Operation, int);
68 
73  void SetOperationToAdd() { this->SetOperation(VTK_ADD); }
74 
79  void SetOperationToSubtract() { this->SetOperation(VTK_SUBTRACT); }
80 
85  void SetOperationToMultiply() { this->SetOperation(VTK_MULTIPLY); }
86 
91  void SetOperationToDivide() { this->SetOperation(VTK_DIVIDE); }
92 
93  void SetOperationToConjugate() { this->SetOperation(VTK_CONJUGATE); }
94 
95  void SetOperationToComplexMultiply() { this->SetOperation(VTK_COMPLEX_MULTIPLY); }
96 
101  void SetOperationToInvert() { this->SetOperation(VTK_INVERT); }
102 
107  void SetOperationToSin() { this->SetOperation(VTK_SIN); }
108 
113  void SetOperationToCos() { this->SetOperation(VTK_COS); }
114 
119  void SetOperationToExp() { this->SetOperation(VTK_EXP); }
120 
125  void SetOperationToLog() { this->SetOperation(VTK_LOG); }
126 
131  void SetOperationToAbsoluteValue() { this->SetOperation(VTK_ABS); }
132 
137  void SetOperationToSquare() { this->SetOperation(VTK_SQR); }
138 
143  void SetOperationToSquareRoot() { this->SetOperation(VTK_SQRT); }
144 
149  void SetOperationToMin() { this->SetOperation(VTK_MIN); }
150 
155  void SetOperationToMax() { this->SetOperation(VTK_MAX); }
156 
161  void SetOperationToATAN() { this->SetOperation(VTK_ATAN); }
162 
163  void SetOperationToATAN2() { this->SetOperation(VTK_ATAN2); }
164 
169  void SetOperationToMultiplyByK() { this->SetOperation(VTK_MULTIPLYBYK); }
170 
175  void SetOperationToAddConstant() { this->SetOperation(VTK_ADDC); }
176 
181  void SetOperationToReplaceCByK() { this->SetOperation(VTK_REPLACECBYK); }
182 
184 
187  vtkSetMacro(ConstantK, double);
188  vtkGetMacro(ConstantK, double);
190 
192 
195  vtkSetMacro(ConstantC, double);
196  vtkGetMacro(ConstantC, double);
198 
200 
203  vtkSetMacro(DivideByZeroToC, vtkTypeBool);
204  vtkGetMacro(DivideByZeroToC, vtkTypeBool);
205  vtkBooleanMacro(DivideByZeroToC, vtkTypeBool);
207 
212  virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
213  virtual void SetInput2Data(vtkDataObject* in) { this->SetInputData(1, in); }
214 
215 protected:
217  ~vtkImageMathematics() override {}
218 
220  double ConstantK;
221  double ConstantC;
223 
225 
226  void ThreadedRequestData(vtkInformation* request, vtkInformationVector** inputVector,
227  vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
228  int extent[6], int threadId) override;
229 
230  int FillInputPortInformation(int port, vtkInformation* info) override;
231 
232 private:
233  vtkImageMathematics(const vtkImageMathematics&) = delete;
234  void operator=(const vtkImageMathematics&) = delete;
235 };
236 
237 #endif
vtkThreadedImageAlgorithm::ThreadedRequestData
virtual void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int threadId)
If the subclass does not define an Execute method, then the task will be broken up,...
vtkImageMathematics::SetOperationToSubtract
void SetOperationToSubtract()
Set each pixel in the output image to the difference of the corresponding pixels in Input1 and Input2...
Definition: vtkImageMathematics.h:79
VTK_COS
#define VTK_COS
Definition: vtkImageMathematics.h:35
VTK_SQRT
#define VTK_SQRT
Definition: vtkImageMathematics.h:40
vtkImageMathematics::SetOperationToAddConstant
void SetOperationToAddConstant()
Set each pixel in the output image to the product of ConstantC with the corresponding pixel in Input1...
Definition: vtkImageMathematics.h:175
vtkImageMathematics::SetOperationToMin
void SetOperationToMin()
Set each pixel in the output image to the minimum of the corresponding pixels in Input1 and Input2.
Definition: vtkImageMathematics.h:149
VTK_ADDC
#define VTK_ADDC
Definition: vtkImageMathematics.h:46
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkImageMathematics::Operation
int Operation
Definition: vtkImageMathematics.h:219
vtkImageMathematics::SetOperationToInvert
void SetOperationToInvert()
Set each pixel in the output image to 1 over the corresponding pixel in Input1 and Input2 (output = 1...
Definition: vtkImageMathematics.h:101
vtkThreadedImageAlgorithm
Generic filter that has one input.
Definition: vtkThreadedImageAlgorithm.h:37
vtkImageMathematics
Add, subtract, multiply, divide, invert, sin, cos, exp, log.
Definition: vtkImageMathematics.h:54
vtkImageMathematics::SetOperationToLog
void SetOperationToLog()
Set each pixel in the output image to the log of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:125
vtkImageMathematics::SetOperationToMax
void SetOperationToMax()
Set each pixel in the output image to the maximum of the corresponding pixels in Input1 and Input2.
Definition: vtkImageMathematics.h:155
vtkImageMathematics::SetOperationToExp
void SetOperationToExp()
Set each pixel in the output image to the exponential of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:119
VTK_ADD
#define VTK_ADD
Definition: vtkImageMathematics.h:29
VTK_MULTIPLY
#define VTK_MULTIPLY
Definition: vtkImageMathematics.h:31
vtkThreadedImageAlgorithm.h
VTK_MAX
#define VTK_MAX
Definition: vtkImageMathematics.h:42
vtkImageAlgorithm::SetInputData
void SetInputData(vtkDataObject *)
Assign a data object as input.
VTK_ABS
#define VTK_ABS
Definition: vtkImageMathematics.h:38
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkImageMathematics::SetOperationToAdd
void SetOperationToAdd()
Set each pixel in the output image to the sum of the corresponding pixels in Input1 and Input2.
Definition: vtkImageMathematics.h:73
vtkImageMathematics::DivideByZeroToC
vtkTypeBool DivideByZeroToC
Definition: vtkImageMathematics.h:222
VTK_MULTIPLYBYK
#define VTK_MULTIPLYBYK
Definition: vtkImageMathematics.h:45
vtkImageMathematics::SetOperationToSquare
void SetOperationToSquare()
Set each pixel in the output image to the square of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:137
vtkImageAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
VTK_DIVIDE
#define VTK_DIVIDE
Definition: vtkImageMathematics.h:32
VTK_INVERT
#define VTK_INVERT
Definition: vtkImageMathematics.h:33
VTK_SUBTRACT
#define VTK_SUBTRACT
Definition: vtkImageMathematics.h:30
vtkThreadedImageAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
VTK_CONJUGATE
#define VTK_CONJUGATE
Definition: vtkImageMathematics.h:47
VTK_ATAN
#define VTK_ATAN
Definition: vtkImageMathematics.h:43
vtkImageMathematics::SetOperationToDivide
void SetOperationToDivide()
Set each pixel in the output image to the quotient of the corresponding pixels in Input1 and Input2 (...
Definition: vtkImageMathematics.h:91
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkImageMathematics::SetOperationToMultiply
void SetOperationToMultiply()
Set each pixel in the output image to the product of the corresponding pixels in Input1 and Input2.
Definition: vtkImageMathematics.h:85
vtkImageMathematics::SetOperationToComplexMultiply
void SetOperationToComplexMultiply()
Definition: vtkImageMathematics.h:95
vtkImageMathematics::SetOperationToSin
void SetOperationToSin()
Set each pixel in the output image to the sine of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:107
vtkImageMathematics::SetOperationToCos
void SetOperationToCos()
Set each pixel in the output image to the cosine of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:113
vtkImageMathematics::SetInput2Data
virtual void SetInput2Data(vtkDataObject *in)
Definition: vtkImageMathematics.h:213
vtkImageMathematics::ConstantC
double ConstantC
Definition: vtkImageMathematics.h:221
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkAlgorithm::New
static vtkAlgorithm * New()
VTK_REPLACECBYK
#define VTK_REPLACECBYK
Definition: vtkImageMathematics.h:49
VTK_MIN
#define VTK_MIN
Definition: vtkImageMathematics.h:41
VTK_ATAN2
#define VTK_ATAN2
Definition: vtkImageMathematics.h:44
vtkImageMathematics::SetOperationToATAN
void SetOperationToATAN()
Set each pixel in the output image to the arctangent of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:161
VTK_COMPLEX_MULTIPLY
#define VTK_COMPLEX_MULTIPLY
Definition: vtkImageMathematics.h:48
vtkImageMathematics::SetOperationToSquareRoot
void SetOperationToSquareRoot()
Set each pixel in the output image to the square root of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:143
vtkImageMathematics::SetInput1Data
virtual void SetInput1Data(vtkDataObject *in)
Set the two inputs to this filter.
Definition: vtkImageMathematics.h:212
vtkImageMathematics::SetOperationToATAN2
void SetOperationToATAN2()
Definition: vtkImageMathematics.h:163
vtkImageMathematics::SetOperationToReplaceCByK
void SetOperationToReplaceCByK()
Find every pixel in Input1 that equals ConstantC and set the corresponding pixels in the Output to Co...
Definition: vtkImageMathematics.h:181
vtkX3D::extent
@ extent
Definition: vtkX3D.h:351
VTK_LOG
#define VTK_LOG
Definition: vtkImageMathematics.h:37
VTK_EXP
#define VTK_EXP
Definition: vtkImageMathematics.h:36
vtkImageAlgorithm::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkImageMathematics::SetOperationToAbsoluteValue
void SetOperationToAbsoluteValue()
Set each pixel in the output image to the absolute value of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:131
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:59
vtkImageMathematics::~vtkImageMathematics
~vtkImageMathematics() override
Definition: vtkImageMathematics.h:217
vtkImageMathematics::ConstantK
double ConstantK
Definition: vtkImageMathematics.h:220
vtkImageMathematics::SetOperationToMultiplyByK
void SetOperationToMultiplyByK()
Set each pixel in the output image to the product of ConstantK with the corresponding pixel in Input1...
Definition: vtkImageMathematics.h:169
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkImageMathematics::SetOperationToConjugate
void SetOperationToConjugate()
Definition: vtkImageMathematics.h:93
VTK_SIN
#define VTK_SIN
Definition: vtkImageMathematics.h:34
VTK_SQR
#define VTK_SQR
Definition: vtkImageMathematics.h:39