Request for Changes-81: New applications for morphological profiles
Contents
[Request for Changes - 81] New applications for morphological profiles
Status
- Author: Ludovic Hussonnois
- Submitted on 16.01.2017
- Adopted (+4), merged on 23.02.2017
- Branch : https://git.orfeo-toolbox.org/otb.git/shortlog/refs/heads/app_morphological
Summary
Adding Applications to use MorphologicalProfiles Filters.
Rationale
This RFC introduce 3 new applications and expose 7 existing filters. (ConvexOrConcaveClassificationFilter, GeodesicMorphologyDecompositionImageFilter, MorphologicalOpeningProfileFilter, MorphologicalClosingProfileFilter, ProfileToProfileDerivativeFilter, ProfileDerivativeToMultiScaleCharacteristicsFilter, MultiScaleConvexOrConcaveClassificationFilter)
Implementation details
Here is the output of 3 new applications to use morphological profiles (launch without parameters).
MorphologicalMultiScaleDecomposition:
Parameters: -progress <boolean> Report progress MISSING -in <string> Input Image (mandatory) MISSING -outconvex <string> [pixel] Output Convex Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory) MISSING -outconcave <string> [pixel] Output Concave Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory) MISSING -outleveling <string> [pixel] Output Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory) -channel <int32> Selected Channel (mandatory, default value is 1) -ram <int32> Available RAM (Mb) (optional, off by default, default value is 128) -structype <string> Structuring Element Type [ball/cross] (mandatory, default value is ball) -radius <int32> Initial radius (mandatory, default value is 5) -step <int32> Radius step. (mandatory, default value is 1) -levels <int32> Number of levels use for multi scale (mandatory, default value is 1) -inxml <string> Load otb application from xml file (optional, off by default) Examples: 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
MorphologicalClassification :
Parameters: -progress <boolean> Report progress MISSING -in <string> Input Image (mandatory) MISSING -out <string> [pixel] Output Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory) -channel <int32> Selected Channel (mandatory, default value is 1) -ram <int32> Available RAM (Mb) (optional, off by default, default value is 128) -structype <string> Structuring Element Type [ball/cross] (mandatory, default value is ball) -radius <int32> Radius (mandatory, default value is 5) -sigma <float> Sigma value for leveling tolerance (mandatory, default value is 0.5) -inxml <string> Load otb application from xml file (optional, off by default) Examples: otbcli_MorphologicalClassification -in ROI_IKO_PAN_LesHalles.tif -channel 1 -structype ball -radius 5 -sigma 0.5 -out output.tif
MorphologicalProfilesAnalysis :
Parameters: -progress <boolean> Report progress MISSING -in <string> Input Image (mandatory) MISSING -out <string> [pixel] Output Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory) -channel <int32> Selected Channel (mandatory, default value is 1) -ram <int32> Available RAM (Mb) (optional, off by default, default value is 128) -structype <string> Structuring Element Type [ball/cross] (mandatory, default value is ball) -size <int32> Profile Size (mandatory, default value is 5) -radius <int32> Initial radius (mandatory, default value is 5) -step <int32> Radius step. (mandatory, default value is 1) -profile <string> Profile [opening/closing/derivativeopening/derivativeclosing/openingcharacteristics/closingcharacteristics/classification] (mandatory, default value is opening) -profile.classification.sigma <float> Sigma value for leveling tolerance (mandatory, default value is 1) -inxml <string> Load otb application from xml file (optional, off by default) Examples: otbcli_MorphologicalProfilesAnalysis -in ROI_IKO_PAN_LesHalles.tif -channel 1 -structype ball -profile classification -size 5 -radius 1 -step 1 -profile.classification.sigma 1 -out output.tif
Classes and files
Correct a BUG where concave and convex outputs were inversed.
M Modules/Segmentation/MorphologicalProfiles/include/otbGeodesicMorphologyIterativeDecompositionImageFilter.txx
Applications
Adding 3 new applications in Modules/applications/AppMorphology :
- MorphologicalMultiScaleDecomposition.
- MorphologicalClassification.
- MorphologicalProfilesAnalysis.
M Modules/Applications/AppMorphology/app/CMakeLists.txt A Modules/Applications/AppMorphology/app/otbMorphologicalMultiScaleDecomposition.cxx A Modules/Applications/AppMorphology/app/otbMorphologicalProfilesAnalysis.cxx A Modules/Applications/AppMorphology/app/otbMorphologicalClassification.cxx M Modules/Applications/AppMorphology/otb-module.cmake
MorphologicalMultiScaleDecomposition use BUG corrected version of GeodesicMorphologyIterativeDecompositionImageFilter. MorphologicalClassification use otbConvexOrConcaveClassificationFilter. MorphologicalProfilesAnalysis apply different filter depending on the input parameter 'profil' :
Profile | OTB Filter | Output |
---|---|---|
Opening | otbMorphologicalOpeningProfileFilter | 1 image with N bands |
Closing | otbMorphologicalClosingProfileFilter | 1 image with N bands |
Derivative Opening/Closing | otbProfileToProfileDerivativeFilter | 1 image with N bands |
Multi Scale Characteristics | otbProfileDerivativeToMultiScaleCharacteristicsFilter | 1 image with 1 band |
Multi Scale Classification | otbProfileDerivativeToMultiScaleCharacteristicsFilter | 1 labeled image with 1 band |
With N the number of iterations.
Tests
Change baseline images for otbGeodesicMorphologyIterativeDecompositionImageFilter BUG correction (just inverting convMap and concMap).
M Baseline/OTB/Images/msGeodesicMorphologyIterativeDecompositionImageFilter_concMap_1.tif M Baseline/OTB/Images/msGeodesicMorphologyIterativeDecompositionImageFilter_concMap_2.tif M Baseline/OTB/Images/msGeodesicMorphologyIterativeDecompositionImageFilter_convMap_1.tif M Baseline/OTB/Images/msGeodesicMorphologyIterativeDecompositionImageFilter_convMap_2.tif
Adding test for all three applications.
M Modules/Applications/AppMorphology/test/CMakeLists.txt
MorphologicalMultiScaleDecomposition and MorphologicalProfilesAnalysis use the same baseline images of filter's tests but with one multi-band image instead of multiple output images.
For MorphologicalClassification a new baseline image have been created.
A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_convexIteration_1.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_concaveIteration_2.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_levelingIteration_1.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_convexIteration_2.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_concaveIteration_2.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_levelingIteration_2.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_Iteration_1.tif A Baseline/OTB/Images/apTvFEMorphologicalMultiScaleDecomposition_Iteration_2.tif A Baseline/OTB/Images/apTvFEMorphologicalProfilesClassification.tif A Baseline/OTB/Images/apTvFEMorphologicalProfilesClosingAnalysis.tif A Baseline/OTB/Images/apTvFEMorphologicalProfilesOpeningAnalysis.tif
Documentation
Application's documentation come form filter's documentation.