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) VTK_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,int);
206  vtkGetMacro(DivideByZeroToC,int);
207  vtkBooleanMacro(DivideByZeroToC,int);
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() VTK_OVERRIDE {}
220 
222  double ConstantK;
223  double ConstantC;
225 
228  vtkInformationVector *) VTK_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) VTK_OVERRIDE;
236 
237  int FillInputPortInformation(int port, vtkInformation* info) VTK_OVERRIDE;
238 
239 private:
240  vtkImageMathematics(const vtkImageMathematics&) VTK_DELETE_FUNCTION;
241  void operator=(const vtkImageMathematics&) VTK_DELETE_FUNCTION;
242 };
243 
244 #endif
245 
void SetOperationToATAN()
Set each pixel in the output image to the arctangent of the corresponding pixel in Input1...
void SetOperationToAdd()
Set each pixel in the output image to the sum of the corresponding pixels in Input1 and Input2...
void SetOperationToSquareRoot()
Set each pixel in the output image to the square root of the corresponding pixel in Input1...
void SetOperationToSin()
Set each pixel in the output image to the sine of the corresponding pixel in Input1.
#define VTK_SQR
void SetOperationToLog()
Set each pixel in the output image to the log of the corresponding pixel in Input1.
Store vtkAlgorithm input/output information.
#define VTK_SQRT
virtual void SetInput2Data(vtkDataObject *in)
#define VTK_ADDC
#define VTK_ADD
void SetOperationToMin()
Set each pixel in the output image to the minimum of the corresponding pixels in Input1 and Input2...
void SetOperationToDivide()
Set each pixel in the output image to the quotient of the corresponding pixels in Input1 and Input2 (...
#define VTK_MAX
#define VTK_COS
#define VTK_MULTIPLY
void SetInputData(vtkDataObject *)
Assign a data object as input.
#define VTK_ABS
void SetOperationToAbsoluteValue()
Set each pixel in the output image to the absolute value of the corresponding pixel in Input1...
#define VTK_DIVIDE
Generic filter that has one input.
#define VTK_CONJUGATE
#define VTK_INVERT
#define VTK_SUBTRACT
#define VTK_MULTIPLYBYK
a simple class to control print indentation
Definition: vtkIndent.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:39
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
void SetOperationToSubtract()
Set each pixel in the output image to the difference of the corresponding pixels in Input1 and Input2...
void SetOperationToReplaceCByK()
Find every pixel in Input1 that equals ConstantC and set the corresponding pixels in the Output to Co...
void SetOperationToExp()
Set each pixel in the output image to the exponential of the corresponding pixel in Input1...
#define VTK_ATAN
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, multiple threads will be spawned, and each thread will call this method.
void SetOperationToMultiplyByK()
Set each pixel in the output image to the product of ConstantK with the corresponding pixel in Input1...
#define VTK_REPLACECBYK
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
void SetOperationToSquare()
Set each pixel in the output image to the square of the corresponding pixel in Input1.
Add, subtract, multiply, divide, invert, sin, cos, exp, log.
void SetOperationToMax()
Set each pixel in the output image to the maximum of the corresponding pixels in Input1 and Input2...
#define VTK_MIN
int FillInputPortInformation(int port, vtkInformation *info) override
These method should be reimplemented by subclasses that have more than a single input or single outpu...
#define VTK_LOG
#define VTK_EXP
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
#define VTK_SIN
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
void SetOperationToInvert()
Set each pixel in the output image to 1 over the corresponding pixel in Input1 and Input2 (output = 1...
void SetOperationToMultiply()
Set each pixel in the output image to the product of the corresponding pixels in Input1 and Input2...
#define VTK_ATAN2
general representation of visualization data
Definition: vtkDataObject.h:58
void SetOperationToCos()
Set each pixel in the output image to the cosine of the corresponding pixel in Input1.
virtual void SetInput1Data(vtkDataObject *in)
Set the two inputs to this filter.
#define VTK_COMPLEX_MULTIPLY
void SetOperationToAddConstant()
Set each pixel in the output image to the product of ConstantC with the corresponding pixel in Input1...