Number of endmember estimation application
Summary
Application for number of endmembers estimation in hyperspectral images.
Rationale
There are two classes in OTB for estimating the number of endmembers in hyperspectral images, one implementing the virtual dimensionality algorithm and the other using the Eigenvalue Likelihood Maximization algorithm, but there are no application corresponding to these algorithm.
This MR adds an application for the endmember number estimation. The application
will first compute the covariance and correlation matrices of the input image using a
otb::StreamingStatisticsVectorImageFilter
and then use a EigenvalueLikelihoodMaximisation
or a VirtualDimensionality
object with the computed statistics to output an estimation
of the number of endmembers.
Implementation Details
Classes and files
New file otbEndmemberNumberEstimation.cxx
where the new application is implemented.
Applications
A new application has been created : EndmemberNumberEstimation
, it has the following parameters :
-
in
: input multi-channel image -
number
: number of endmembers -
algo
: chosen algorithm-
elm
: eigenvalue likelihood maximization -
vd
: virtual dimensionality
-
-
algo.vd.far
: false alarm rate for the virtual dimensionality algorithm. -
ram
: ram parameter
Tests
New validation tests for both algorithms.
Copyright
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
votes from core developers, no vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
Merge request reports
Activity
Suggestions:
-
Better explain that the output is made with the parameter "number" in the documentation.
-
Display the "number" value in the log. (Otherwise the application is unusable from the command line).
-
Move the "number" parameter to be the second parameter (so it shows up on top in otbgui).
-
I agree with @poughov. You have my +1.
added 1 commit
- fd887393 - DOC: improve doc of EndmemberNumberEstimation
added 50 commits
-
fd887393...734a0d16 - 47 commits from branch
develop
- 59cd64eb - Merge branch 'develop' into number_of_endmember_estimation
- 43a93438 - ENH: added progress reporting to the statistic estimation step
- fa5f216a - DOC: updated doc for output number parameter
Toggle commit list-
fd887393...734a0d16 - 47 commits from branch
added 1 commit
- c4ff6702 - DOC: moved the output parameter up in the app so it shows up on top in otbgui
I added progress reporting for the stat computation step.
@poughov I don't think we need to print the output number of endmembers, as it is done automatically when we declare a parameter as "output" (
SetParameterRole("number", Role_Output)
), this is the log from the application :cedric@PO16088LX:~/Documents/OTB/develop_build$ bin/otbcli_EndmemberNumberEstimation -in ../otb-data/Input/Hyperspectral/synthetic/hsi_cube.tif 2019-01-14 15:12:29 (INFO): Default RAM limit for OTB is 128 MB 2019-01-14 15:12:29 (INFO): GDAL maximum cache size is 794 MB 2019-01-14 15:12:29 (INFO): OTB will use at most 12 threads 2019-01-14 15:12:29 (INFO): No kwl metadata found in file ../otb-data/Input/Hyperspectral/synthetic/hsi_cube.tif 2019-01-14 15:12:29 (INFO): Computing statistics on input image... 2019-01-14 15:12:29 (INFO): Estimated memory for full processing: 17.0898MB (avail.: 128 MB), optimal image partitioning: 1 blocks 2019-01-14 15:12:29 (INFO): Estimation will be performed in 1 blocks of 100x100 pixels Statistic estimation step: 100% [**************************************************] (1s) 2019-01-14 15:12:31 (INFO): Estimation algorithm: Eigenvalue Likelihood Maximization. Output parameters value: number: 5
This can be merged because:
- Cookbuild error is fixed by !346 (merged)
- SIFTKeyPoint test is irrelevant !345 (merged)
mentioned in commit 73406694