Change detection MultivariateAlterationDetector


I’ve applied this application to an aoi of a pair of Sentinel-2 in uint16.
Although the documentation states:

  • Change Map : Multiband image containing change maps. Each map will be in the range [-1,1], so a floating point output type is advised.

the change map I get is not in that range, the results go well beyond the [-1,1] interval.

Am I doing something wrong or there’s a small bug?



I might be wrong because I don’t know this algorithm well, but looking at the paper and the code I don’t see why the resulting map should be in the range [-1,1]. The computed value for each pixel v1 * X1 - v2 X2. With X1 being the centered pixel from image 1, X2 the centered pixel from image 2 , and v1 and v2 are linear transformations such that var(v1X1) = var(v2* X2) = 1, but there is constraint on the output range.

So I think the problem comes from the documentation.

This application is a c++ port of the Matlab code associated with the MAD paper (see, maybe we should compare the results between the two versions to check if there is a problem on OTB side, of it is just the doc that is wrong). I’ll open an issue on OTB’s gitlab,