MultivariateAlterationDetector - Multivariate alteration detector

Multivariate Alteration Detector

Detailed description

This application detects change between two given images.


This section describes in details the parameters available for this application. Table [1] presents a summary of these parameters and the parameters keys to be used in command-line and programming languages. Application key is MultivariateAlterationDetector .

[1]Table: Parameters table for Multivariate alteration detector.
Parameter Key Parameter Name Parameter Type
in1 Input Image 1 Input image
in2 Input Image 2 Input image
out Change Map Output image
ram Available RAM (Mb) Int
inxml Load otb application from xml file XML input parameters file
outxml Save otb application to xml file XML output parameters file
  • Input Image 1: Image which describe initial state of the scene.
  • Input Image 2: Image which describe scene after perturbations.
  • Change Map: Image of detected changes.
  • Available RAM (Mb): Available memory for processing (in MB).
  • Load otb application from xml file: Load otb application from xml file.
  • Save otb application to xml file: Save otb application to xml file.


To run this example in command-line, use the following:

otbcli_MultivariateAlterationDetector -in1 Spot5-Gloucester-before.tif -in2 Spot5-Gloucester-after.tif -out detectedChangeImage.tif

To run this example from Python, use the following code snippet:


# Import the otb applications package
import otbApplication

# The following line creates an instance of the MultivariateAlterationDetector application
MultivariateAlterationDetector = otbApplication.Registry.CreateApplication("MultivariateAlterationDetector")

# The following lines set all the application parameters:
MultivariateAlterationDetector.SetParameterString("in1", "Spot5-Gloucester-before.tif")

MultivariateAlterationDetector.SetParameterString("in2", "Spot5-Gloucester-after.tif")

MultivariateAlterationDetector.SetParameterString("out", "detectedChangeImage.tif")

# The following line execute the application




This application has been written by OTB-Team.

See Also

These additional resources can be useful for further information:

This filter implements the Multivariate Alteration Detector, based on the following work:
    1. Nielsen and K. Conradsen, Multivariate alteration detection (mad) in multispectral, bi-temporal image data: a new approach to change detection studies, Remote Sens. Environ., vol. 64, pp. 1-19, (1998)

Multivariate Alteration Detector takes two images as inputs and produce a set of N change maps as a VectorImage (where N is the maximum of number of bands in first and second image) with the following properties: - Change maps are differences of a pair of linear combinations of bands from image 1 and bands from image 2 chosen to maximize the correlation. - Each change map is orthogonal to the others.

This is a statistical method which can handle different modalities and even different bands and number of bands between images.

If numbers of bands in image 1 and 2 are equal, then change maps are sorted by increasing correlation. If number of bands is different, the change maps are sorted by decreasing correlation.

The GetV1() and GetV2() methods allow retrieving the linear combinations used to generate the Mad change maps as a vnl_matrix of double, and the GetRho() method allows retrieving the correlation associated to each Mad change maps as a vnl_vector.

This filter has been implemented from the Matlab code kindly made available by the authors here:

Both cases (same and different number of bands) have been validated by comparing the output image to the output produced by the Matlab code, and the reference images for testing have been generated from the Matlab code using Octave.