SoImageFormulaProcessing engine computes a new image combining one, two or three images using a given arithmetic formula. More...
#include <ImageViz/Engines/ArithmeticAndLogic/ArithmeticOperations/SoImageFormulaProcessing.h>
Public Types | |
enum | DataType { UNSIGNED_CHAR = 0, SIGNED_CHAR = 1, SHORT_INTEGER = 2, UNSIGNED_SHORT = 3, LABEL = 4, BINARY = 5, LONG_INTEGER = 6, FLOATING_POINT = 7 } |
Public Member Functions | |
SoImageFormulaProcessing () | |
Public Attributes | |
SoSFEnum | computeMode |
SoSFImageDataAdapter | inImage |
SoSFImageDataAdapter | inImage2 |
SoSFImageDataAdapter | inImage3 |
SoSFString | inFormula |
SoSFEnum | dataType |
SoImageVizEngineOutput < SoSFImageDataAdapter, SoImageDataAdapter * > | outImage |
The formula used by this engine must be written according to the custom formula syntax.
Some of the examples below can be implemented with an existing engine. In these cases using the appropriate native engine will be more efficient in term of performance.
For instance, the formula "if(I2==25, I1, 0)" allows to mask an input grey level image I1 with the blob of intensity 25 in a label image I2.
Figure 1: Extraction of a labeled blob in a greylevel image.
Kernels can be defined for these function with the following syntax: IN[x,y] in 2d case and IN[x,y,z] in 3d case. Where N references the used image (in [1,3]), and x,y and z corresponds to the expected kernel size.
For instance, the formula "mean(I1[7, 7])" allows to filter an image I1 by a box filter of size 7x7.
Figure 2: Box filter processing.
These offsets can be used to compute operations depending on pixels surrounding the current pixel to process.
For instance, a basic horizontal gradient operation can be written "I1(1, 0) - I1(-1, 0)"
Figure 3: Basic horizontal gradient operation.
For instance, these coordinates can be used to generate synthetic images. A basic line separation can be written as "if (3*x-100<y, 100, 0)":
Figure 4: Generation of a synthetic image.
Coordinates can also be used to handle more complex case such as "if ((x- (ox+gx)/2)*(x-(ox+gx)/2)+(y-(oy+gy)/2)*(y-(oy+gy)/2)<=50*50, I1, I2)"
Figure 5: Custom combination of 2 images.
computeMode | MODE_AUTO |
inImage | NULL |
inImage2 | NULL |
inImage3 | NULL |
inFormula | "" |
dataType | UNSIGNED_CHAR |
SoImageFormulaProcessing::SoImageFormulaProcessing | ( | ) |
Constructor.
Select the compute Mode (2D or 3D or AUTO) Use enum ComputeMode.
Default is MODE_AUTO
Arithmetic format.
Use enum DataType. Default is UNSIGNED_CHAR
Formula to apply on image(s).
See Custom formula syntax for how to use a formula. Default value is "".
The input image.
Default value is NULL. Supported types include: grayscale binary label color image.
Optional image : enter image or let field empty.
This parameter is optional. Default value is NULL. Supported types include: grayscale binary label color image.
Optional image : enter image or let field empty.
This parameter is optional. Default value is NULL. Supported types include: grayscale binary label color image.
The output image.
Default value is NULL. Supported types include: grayscale binary label color image.