VTK
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 
29 // Operation options.
30 #define VTK_ADD 0
31 #define VTK_SUBTRACT 1
32 #define VTK_MULTIPLY 2
33 #define VTK_DIVIDE 3
34 #define VTK_INVERT 4
35 #define VTK_SIN 5
36 #define VTK_COS 6
37 #define VTK_EXP 7
38 #define VTK_LOG 8
39 #define VTK_ABS 9
40 #define VTK_SQR 10
41 #define VTK_SQRT 11
42 #define VTK_MIN 12
43 #define VTK_MAX 13
44 #define VTK_ATAN 14
45 #define VTK_ATAN2 15
46 #define VTK_MULTIPLYBYK 16
47 #define VTK_ADDC 17
48 #define VTK_CONJUGATE 18
49 #define VTK_COMPLEX_MULTIPLY 19
50 #define VTK_REPLACECBYK 20
51 
52 #include "vtkImagingMathModule.h" // For export macro
54 
55 class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
56 {
57 public:
58  static vtkImageMathematics *New();
60  void PrintSelf(ostream& os, vtkIndent indent) override;
61 
63 
66  vtkSetMacro(Operation,int);
67  vtkGetMacro(Operation,int);
69 
74  void SetOperationToAdd() {this->SetOperation(VTK_ADD);};
75 
80  void SetOperationToSubtract() {this->SetOperation(VTK_SUBTRACT);};
81 
86  void SetOperationToMultiply() {this->SetOperation(VTK_MULTIPLY);};
87 
92  void SetOperationToDivide() {this->SetOperation(VTK_DIVIDE);};
93 
94  void SetOperationToConjugate() {this->SetOperation(VTK_CONJUGATE);};
95 
97  {this->SetOperation(VTK_COMPLEX_MULTIPLY);};
98 
103  void SetOperationToInvert() {this->SetOperation(VTK_INVERT);};
104 
109  void SetOperationToSin() {this->SetOperation(VTK_SIN);};
110 
115  void SetOperationToCos() {this->SetOperation(VTK_COS);};
116 
121  void SetOperationToExp() {this->SetOperation(VTK_EXP);};
122 
127  void SetOperationToLog() {this->SetOperation(VTK_LOG);};
128 
133  void SetOperationToAbsoluteValue() {this->SetOperation(VTK_ABS);};
134 
139  void SetOperationToSquare() {this->SetOperation(VTK_SQR);};
140 
145  void SetOperationToSquareRoot() {this->SetOperation(VTK_SQRT);};
146 
151  void SetOperationToMin() {this->SetOperation(VTK_MIN);};
152 
157  void SetOperationToMax() {this->SetOperation(VTK_MAX);};
158 
163  void SetOperationToATAN() {this->SetOperation(VTK_ATAN);};
164 
165  void SetOperationToATAN2() {this->SetOperation(VTK_ATAN2);};
166 
171  void SetOperationToMultiplyByK() {this->SetOperation(VTK_MULTIPLYBYK);};
172 
177  void SetOperationToAddConstant() {this->SetOperation(VTK_ADDC);};
178 
183  void SetOperationToReplaceCByK() {this->SetOperation(VTK_REPLACECBYK);};
184 
186 
189  vtkSetMacro(ConstantK,double);
190  vtkGetMacro(ConstantK,double);
192 
194 
197  vtkSetMacro(ConstantC,double);
198  vtkGetMacro(ConstantC,double);
200 
202 
205  vtkSetMacro(DivideByZeroToC,vtkTypeBool);
206  vtkGetMacro(DivideByZeroToC,vtkTypeBool);
207  vtkBooleanMacro(DivideByZeroToC,vtkTypeBool);
209 
214  virtual void SetInput1Data(vtkDataObject *in) { this->SetInputData(0,in); }
215  virtual void SetInput2Data(vtkDataObject *in) { this->SetInputData(1,in); }
216 
217 protected:
219  ~vtkImageMathematics() override {}
220 
222  double ConstantK;
223  double ConstantC;
225 
228  vtkInformationVector *) override;
229 
230  void ThreadedRequestData(vtkInformation *request,
231  vtkInformationVector **inputVector,
232  vtkInformationVector *outputVector,
233  vtkImageData ***inData,
234  vtkImageData **outData,
235  int extent[6], int threadId) override;
236 
237  int FillInputPortInformation(int port, vtkInformation* info) override;
238 
239 private:
240  vtkImageMathematics(const vtkImageMathematics&) = delete;
241  void operator=(const vtkImageMathematics&) = delete;
242 };
243 
244 #endif
245 
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:80
VTK_COS
#define VTK_COS
Definition: vtkImageMathematics.h:36
VTK_SQRT
#define VTK_SQRT
Definition: vtkImageMathematics.h:41
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:177
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:151
VTK_ADDC
#define VTK_ADDC
Definition: vtkImageMathematics.h:47
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkImageMathematics::Operation
int Operation
Definition: vtkImageMathematics.h:221
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:103
vtkThreadedImageAlgorithm
Generic filter that has one input.
Definition: vtkThreadedImageAlgorithm.h:37
vtkImageMathematics
Add, subtract, multiply, divide, invert, sin, cos, exp, log.
Definition: vtkImageMathematics.h:55
vtkImageMathematics::SetOperationToLog
void SetOperationToLog()
Set each pixel in the output image to the log of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:127
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:157
vtkImageMathematics::SetOperationToExp
void SetOperationToExp()
Set each pixel in the output image to the exponential of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:121
VTK_ADD
#define VTK_ADD
Definition: vtkImageMathematics.h:30
VTK_MULTIPLY
#define VTK_MULTIPLY
Definition: vtkImageMathematics.h:32
vtkThreadedImageAlgorithm.h
VTK_MAX
#define VTK_MAX
Definition: vtkImageMathematics.h:43
vtkImageAlgorithm::SetInputData
void SetInputData(vtkDataObject *)
Assign a data object as input.
VTK_ABS
#define VTK_ABS
Definition: vtkImageMathematics.h:39
vtkX3D::port
Definition: vtkX3D.h:447
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:74
vtkImageMathematics::DivideByZeroToC
vtkTypeBool DivideByZeroToC
Definition: vtkImageMathematics.h:224
VTK_MULTIPLYBYK
#define VTK_MULTIPLYBYK
Definition: vtkImageMathematics.h:46
vtkImageMathematics::SetOperationToSquare
void SetOperationToSquare()
Set each pixel in the output image to the square of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:139
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:33
VTK_INVERT
#define VTK_INVERT
Definition: vtkImageMathematics.h:34
VTK_SUBTRACT
#define VTK_SUBTRACT
Definition: vtkImageMathematics.h:31
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:48
VTK_ATAN
#define VTK_ATAN
Definition: vtkImageMathematics.h:44
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:92
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:39
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:86
vtkImageMathematics::SetOperationToComplexMultiply
void SetOperationToComplexMultiply()
Definition: vtkImageMathematics.h:96
vtkImageMathematics::SetOperationToSin
void SetOperationToSin()
Set each pixel in the output image to the sine of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:109
vtkImageMathematics::SetOperationToCos
void SetOperationToCos()
Set each pixel in the output image to the cosine of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:115
vtkImageMathematics::SetInput2Data
virtual void SetInput2Data(vtkDataObject *in)
Definition: vtkImageMathematics.h:215
vtkImageMathematics::ConstantC
double ConstantC
Definition: vtkImageMathematics.h:223
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:80
vtkX3D::info
Definition: vtkX3D.h:376
vtkAlgorithm::New
static vtkAlgorithm * New()
VTK_REPLACECBYK
#define VTK_REPLACECBYK
Definition: vtkImageMathematics.h:50
VTK_MIN
#define VTK_MIN
Definition: vtkImageMathematics.h:42
VTK_ATAN2
#define VTK_ATAN2
Definition: vtkImageMathematics.h:45
vtkImageMathematics::SetOperationToATAN
void SetOperationToATAN()
Set each pixel in the output image to the arctangent of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:163
VTK_COMPLEX_MULTIPLY
#define VTK_COMPLEX_MULTIPLY
Definition: vtkImageMathematics.h:49
vtkImageMathematics::SetOperationToSquareRoot
void SetOperationToSquareRoot()
Set each pixel in the output image to the square root of the corresponding pixel in Input1.
Definition: vtkImageMathematics.h:145
vtkImageMathematics::SetInput1Data
virtual void SetInput1Data(vtkDataObject *in)
Set the two inputs to this filter.
Definition: vtkImageMathematics.h:214
vtkImageMathematics::SetOperationToATAN2
void SetOperationToATAN2()
Definition: vtkImageMathematics.h:165
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:183
vtkX3D::extent
Definition: vtkX3D.h:345
VTK_LOG
#define VTK_LOG
Definition: vtkImageMathematics.h:38
VTK_EXP
#define VTK_EXP
Definition: vtkImageMathematics.h:37
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:133
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:58
vtkImageMathematics::~vtkImageMathematics
~vtkImageMathematics() override
Definition: vtkImageMathematics.h:219
vtkImageMathematics::ConstantK
double ConstantK
Definition: vtkImageMathematics.h:222
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:171
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkImageMathematics::SetOperationToConjugate
void SetOperationToConjugate()
Definition: vtkImageMathematics.h:94
VTK_SIN
#define VTK_SIN
Definition: vtkImageMathematics.h:35
VTK_SQR
#define VTK_SQR
Definition: vtkImageMathematics.h:40