VTK  9.1.0
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=========================================================================*/
134#ifndef vtkImageMathematics_h
135#define vtkImageMathematics_h
136
137// Operation options.
138#define VTK_ADD 0
139#define VTK_SUBTRACT 1
140#define VTK_MULTIPLY 2
141#define VTK_DIVIDE 3
142#define VTK_INVERT 4
143#define VTK_SIN 5
144#define VTK_COS 6
145#define VTK_EXP 7
146#define VTK_LOG 8
147#define VTK_ABS 9
148#define VTK_SQR 10
149#define VTK_SQRT 11
150#define VTK_MIN 12
151#define VTK_MAX 13
152#define VTK_ATAN 14
153#define VTK_ATAN2 15
154#define VTK_MULTIPLYBYK 16
155#define VTK_ADDC 17
156#define VTK_CONJUGATE 18
157#define VTK_COMPLEX_MULTIPLY 19
158#define VTK_REPLACECBYK 20
159
160#include "vtkImagingMathModule.h" // For export macro
162
163class VTKIMAGINGMATH_EXPORT vtkImageMathematics : public vtkThreadedImageAlgorithm
164{
165public:
168 void PrintSelf(ostream& os, vtkIndent indent) override;
169
171
174 vtkSetMacro(Operation, int);
175 vtkGetMacro(Operation, int);
177
182 void SetOperationToAdd() { this->SetOperation(VTK_ADD); }
183
188 void SetOperationToSubtract() { this->SetOperation(VTK_SUBTRACT); }
189
194 void SetOperationToMultiply() { this->SetOperation(VTK_MULTIPLY); }
195
200 void SetOperationToDivide() { this->SetOperation(VTK_DIVIDE); }
201
202 void SetOperationToConjugate() { this->SetOperation(VTK_CONJUGATE); }
203
205
210 void SetOperationToInvert() { this->SetOperation(VTK_INVERT); }
211
216 void SetOperationToSin() { this->SetOperation(VTK_SIN); }
217
222 void SetOperationToCos() { this->SetOperation(VTK_COS); }
223
228 void SetOperationToExp() { this->SetOperation(VTK_EXP); }
229
234 void SetOperationToLog() { this->SetOperation(VTK_LOG); }
235
240 void SetOperationToAbsoluteValue() { this->SetOperation(VTK_ABS); }
241
246 void SetOperationToSquare() { this->SetOperation(VTK_SQR); }
247
252 void SetOperationToSquareRoot() { this->SetOperation(VTK_SQRT); }
253
258 void SetOperationToMin() { this->SetOperation(VTK_MIN); }
259
264 void SetOperationToMax() { this->SetOperation(VTK_MAX); }
265
270 void SetOperationToATAN() { this->SetOperation(VTK_ATAN); }
271
272 void SetOperationToATAN2() { this->SetOperation(VTK_ATAN2); }
273
278 void SetOperationToMultiplyByK() { this->SetOperation(VTK_MULTIPLYBYK); }
279
284 void SetOperationToAddConstant() { this->SetOperation(VTK_ADDC); }
285
290 void SetOperationToReplaceCByK() { this->SetOperation(VTK_REPLACECBYK); }
291
293
296 vtkSetMacro(ConstantK, double);
297 vtkGetMacro(ConstantK, double);
299
301
304 vtkSetMacro(ConstantC, double);
305 vtkGetMacro(ConstantC, double);
307
309
312 vtkSetMacro(DivideByZeroToC, vtkTypeBool);
313 vtkGetMacro(DivideByZeroToC, vtkTypeBool);
314 vtkBooleanMacro(DivideByZeroToC, vtkTypeBool);
316
321 virtual void SetInput1Data(vtkDataObject* in) { this->SetInputData(0, in); }
322 virtual void SetInput2Data(vtkDataObject* in) { this->SetInputData(1, in); }
323
324protected:
326 ~vtkImageMathematics() override = default;
327
329 double ConstantK;
330 double ConstantC;
332
334
336 vtkInformationVector* outputVector, vtkImageData*** inData, vtkImageData** outData,
337 int outExt[6], int threadId) override;
338
339 int FillInputPortInformation(int port, vtkInformation* info) override;
340
341private:
343 void operator=(const vtkImageMathematics&) = delete;
344};
345
346#endif
general representation of visualization data
void SetInputData(vtkDataObject *)
Assign a data object as input.
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
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 SetInput1Data(vtkDataObject *in)
Set the two 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 PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetInput2Data(vtkDataObject *in)
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 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...
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...
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:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Generic filter that has one input.
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