Perform a geodesic morphology based image analysis on an input image channel


This application recursively apply geodesic decomposition.

This algorithm is derived from the following publication:

Martino Pesaresi and Jon Alti Benediktsson, Member, IEEE: A new approach for the morphological segmentation of high resolution satellite imagery. IEEE Transactions on geoscience and remote sensing, vol. 39, NO. 2, February 2001, p. 309-320.

It provides a geodesic decomposition of the input image, with the following scheme. Let f_0 denote the input image, \stackrel{\smile}{\mu}_{N}(f) denote the convex membership function, \stackrel{\frown}{\mu}_{N}(f) denote the concave membership function and \psi_{N}(f) denote the leveling function, for a given radius N as defined in the documentation of the GeodesicMorphologyDecompositionImageFilter. Let [N_{1},\ldots, N_{n}] denote a range of increasing radius (or scales). The iterative decomposition is defined as follows:

f_i = \psi_{N_i}(f_{i-1})

\stackrel{\frown}{f}_i = \stackrel{\frown}{\mu}_{N_i}(f_i)

\stackrel{\smile}{f}_i = \stackrel{\smile}{\mu}_{N_i}(f_i)

The \stackrel{\smile}{f}_{i} and \stackrel{\frown}{f}_{i} are membership function for the convex (resp. concave) objects whose size is comprised between N_{i-1} and N_i

Output convex, concave and leveling images with B bands, where n is the number of levels.

This application has several output images and supports “multi-writing”. Instead of computing and writing each image independently, the streamed image blocks are written in a synchronous way for each output. The output images will be computed strip by strip, using the available RAM to compute the strip size, and a user defined streaming mode can be specified using the streaming extended filenames (type, mode and value). Note that multi-writing can be disabled using the multi-write extended filename option: &multiwrite=false, in this case the output images will be written one by one. Note that multi-writing is not supported for MPI writers.


Input Image -in image Mandatory
The input image to be classified.

Output Convex Image -outconvex image [dtype] Mandatory
The output convex image with N bands

Output Concave Image -outconcave image [dtype] Mandatory
The output concave concave with N bands

Output Image -outleveling image [dtype] Mandatory
The output leveling image with N bands

Selected Channel -channel int Default value: 1
The selected channel index for input image

Structuring Element Type -structype [ball|cross] Default value: ball
Choice of the structuring element type

  • Ball

  • Cross

Initial radius -radius int Default value: 5
Initial radius of the structuring element (in pixels)

Radius step -step int Default value: 1
Radius step along the profile (in pixels)

Number of levels use for multi scale -levels int Default value: 1
Number of levels use for multi scale

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


From the command-line:

otbcli_MorphologicalMultiScaleDecomposition -in ROI_IKO_PAN_LesHalles.tif -structype ball -channel 1 -radius 2 -levels 2 -step 3 -outconvex convex.tif -outconcave concave.tif -outleveling leveling.tif

From Python:

import otbApplication

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

app.SetParameterString("in", "ROI_IKO_PAN_LesHalles.tif")
app.SetParameterInt("channel", 1)
app.SetParameterInt("radius", 2)
app.SetParameterInt("levels", 2)
app.SetParameterInt("step", 3)
app.SetParameterString("outconvex", "convex.tif")
app.SetParameterString("outconcave", "concave.tif")
app.SetParameterString("outleveling", "leveling.tif")



Generation of the multi scale decomposition is not streamable, pay attention to this fact when setting the number of iterating levels.

See also

otbGeodesicMorphologyDecompositionImageFilter class