Performs morphological convex, concave and flat classification on an input image channel


This algorithm is based on 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.

This application perform the following decision rule to classify a pixel between the three classes Convex, Concave and Flat. Let f denote the input image and \psi_{N}(f) the geodesic leveling of f with a structuring element of size N. One can derive the following decision rule to classify f into Convex (label \stackrel{\smile}{k}), Concave (label \stackrel{\frown}{k}) and Flat (label \bar{k}): f(n) = \begin{cases} \stackrel{\smile}{k} & : f-\psi_{N}(f)>\sigma \\ \stackrel{\frown}{k} & : \psi_{N}(f)-f>\sigma \\ \bar{k} & : \mid f - \psi_{N}(f) \mid \leq \sigma \end{cases}

The output is a labeled image (0: Flat, 1: Convex, 2: Concave)


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

Output Image -out image [dtype] Mandatory
The output classified image with 3 different values (0: Flat, 1: Convex, 2: Concave)

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

Radius -radius int Default value: 5
Radius of the structuring element (in pixels), default value is 5.

Sigma value for leveling tolerance -sigma float Default value: 0.5
Sigma value for leveling tolerance, default value is 0.5.

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


From the command-line:

otbcli_MorphologicalClassification -in ROI_IKO_PAN_LesHalles.tif -channel 1 -structype ball -radius 5 -sigma 0.5 -out output.tif

From Python:

import otbApplication

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

app.SetParameterString("in", "ROI_IKO_PAN_LesHalles.tif")
app.SetParameterInt("channel", 1)
app.SetParameterInt("radius", 5)
app.SetParameterFloat("sigma", 0.5)
app.SetParameterString("out", "output.tif")



Generation of the morphological classification is not streamable, pay attention to this fact when setting the radius size of the structuring element.

See also

otbConvexOrConcaveClassificationFilter class