BandMath

Outputs a monoband image which is the result of a mathematical operation on several multi-band images.

Description

This application performs a mathematical operation on several multi-band images and outputs the result into a monoband image. The given expression is computed at each pixel position. Evaluation of the mathematical formula is done by the muParser library.

The formula can be written using:

  • numerical values ( 2.3, -5, 3.1e4, ...)
  • variables containing pixel values (e.g. im2b3 is the pixel value in 2nd image, 3rd band)
  • binary operators:
    • + addition, - subtraction, * multiplication, / division
    • ^ raise x to the power of y
    • < less than, > greater than, <= less or equal, >= greater or equal
    • == equal, != not equal
    • || logical or, && logical and
    • if-then-else operator: (condition ? value_true : value_false)
  • functions: exp(), log(), sin(), cos(), min(), max(), ...

The full list of features and operators is available on the muParser website [1].

Parameters

Input image list -il image1 image2... Mandatory
Image list of operands to the mathematical expression.

Output Image -out image [dtype] Mandatory
Output image which is the result of the mathematical expressions on input image list operands.

Expression -exp string Mandatory
The muParser mathematical expression to apply on input images.

Available RAM (MB) -ram int Default value: 256
Available memory for processing (in MB).

Load parameters from XML -inxml filename.xml
Load application parameters from an XML file.

Save parameters to XML -outxml filename.xml
Save application parameters to an XML file.

Examples

From the command-line:

otbcli_BandMath -il verySmallFSATSW_r.tif verySmallFSATSW_nir.tif verySmallFSATSW.tif -out apTvUtBandMathOutput.tif -exp "cos( im1b1 ) > cos( im2b1 ) ? im3b1 : im3b2"

From Python:

import otbApplication

app = otbApplication.Registry.CreateApplication("BandMath")

app.SetParameterStringList("il", ['verySmallFSATSW_r.tif', 'verySmallFSATSW_nir.tif', 'verySmallFSATSW.tif'])
app.SetParameterString("out", "apTvUtBandMathOutput.tif")
app.SetParameterString("exp", "cos( im1b1 ) > cos( im2b1 ) ? im3b1 : im3b2")

app.ExecuteAndWriteOutput()