Commit fd887393 authored by Victor Poughon's avatar Victor Poughon
Browse files

DOC: improve doc of EndmemberNumberEstimation

No related merge requests found
Showing with 26 additions and 22 deletions
+26 -22
...@@ -44,36 +44,40 @@ public: ...@@ -44,36 +44,40 @@ public:
itkTypeMacro(EndmemberNumberEstimation, otb::Application); itkTypeMacro(EndmemberNumberEstimation, otb::Application);
typedef otb::StreamingStatisticsVectorImageFilter<FloatVectorImageType, float> typedef otb::StreamingStatisticsVectorImageFilter<FloatVectorImageType, float> StreamingStatisticsVectorImageFilterType;
StreamingStatisticsVectorImageFilterType; typedef otb::VirtualDimensionality<float> VirtualDimensionalityType;
typedef otb::VirtualDimensionality<float> VirtualDimensionalityType; typedef otb::EigenvalueLikelihoodMaximisation<float> EigenvalueLikelihoodMaximisationType;
typedef otb::EigenvalueLikelihoodMaximisation<float> EigenvalueLikelihoodMaximisationType;
private: private:
void DoInit() override void DoInit() override
{ {
SetName("EndmemberNumberEstimation"); SetName("EndmemberNumberEstimation");
SetDescription("Estimates the number of endmembers in a hyperspectral image"); SetDescription("Estimate the number of endmembers in a hyperspectral image");
// Documentation // Documentation
SetDocName("Endmember Number Estimation"); SetDocName("Endmember Number Estimation");
SetDocLongDescription("This application estimates the number of endmembers " SetDocLongDescription("Estimate the number of endmembers "
"in a hyperspectral image. It first computes statistics on the image and then " "in a hyperspectral image. First, compute statistics on the image and then "
"apply an endmember number estimation algorithm using these statistics. Two " "apply an endmember number estimation algorithm using these statistics. Two "
"algorithms are available: \n\n " "algorithms are available:\n\n"
" 1) Virtual Dimensionality (VD) [1] [2] \n "
" 2) Eigenvalue Likelihood Maximization (ELM) [3][4] \n" "1. Virtual Dimensionality (VD) [1][2]\n"
"The application then returns the estimated number of endmembers. \n\n " "2. Eigenvalue Likelihood Maximization (ELM) [3][4]\n\n"
"References : \n\n "
"The application then returns the estimated number of endmembers.\n\n"
"[1] C.-I. Chang and Q. Du, Estimation of number of spectrally distinct signal " "[1] C.-I. Chang and Q. Du, Estimation of number of spectrally distinct signal "
"sources in hyperspectral imagery, IEEE Transactions on Geoscience and Remote " "sources in hyperspectral imagery, IEEE Transactions on Geoscience and Remote "
"Sensing, vol. 43, no. 3, mar 2004. \n " "Sensing, vol. 43, no. 3, mar 2004.\n\n"
"[2] J. Wang and C.-I. Chang, Applications of independent component analysis " "[2] J. Wang and C.-I. Chang, Applications of independent component analysis "
"in endmember extraction and abundance quantification for hyperspectral imagery" "in endmember extraction and abundance quantification for hyperspectral imagery"
", IEEE Transactions on Geoscience and Remote Sensing, vol. 44, no. 9, pp. " ", IEEE Transactions on Geoscience and Remote Sensing, vol. 44, no. 9, pp. "
"2601-1616, sep 2006. \n " "2601-1616, sep 2006.\n\n"
"[3] Unsupervised Endmember Extraction of Martian Hyperspectral Images, B.Luo, " "[3] Unsupervised Endmember Extraction of Martian Hyperspectral Images, B.Luo, "
"J. Chanussot, S. Dout\'e and X. Ceamanos, IEEE Whispers 2009, Grenoble France, 2009 \n " "J. Chanussot, S. Dout\'e and X. Ceamanos, IEEE Whispers 2009, Grenoble France, 2009\n\n"
"[4] Unsupervised classification of hyperspectral images by using " "[4] Unsupervised classification of hyperspectral images by using "
"linear unmixing algorithm Luo, B. and Chanussot, J., IEEE Int. Conf. On Image" "linear unmixing algorithm Luo, B. and Chanussot, J., IEEE Int. Conf. On Image"
"Processing(ICIP) 2009, Cairo, Egypte, 2009" "Processing(ICIP) 2009, Cairo, Egypte, 2009"
...@@ -90,10 +94,10 @@ private: ...@@ -90,10 +94,10 @@ private:
AddParameter(ParameterType_Choice, "algo", "Unmixing algorithm"); AddParameter(ParameterType_Choice, "algo", "Unmixing algorithm");
SetParameterDescription("algo", "The algorithm to use for the estimation"); SetParameterDescription("algo", "The algorithm to use for the estimation");
AddChoice("algo.elm", "elm"); AddChoice("algo.elm", "Eigenvalue Likelihood Maximization");
SetParameterDescription("algo.elm", "Eigenvalue Likelihood Maximization algorithm"); SetParameterDescription("algo.elm", "");
AddChoice("algo.vd", "vd"); AddChoice("algo.vd", "Virtual Dimensionality");
SetParameterDescription("algo.vd", "Virtual Dimensionality algorithm"); SetParameterDescription("algo.vd", "");
AddParameter( ParameterType_Float , "algo.vd.far" , "False alarm rate"); AddParameter( ParameterType_Float , "algo.vd.far" , "False alarm rate");
SetMinimumParameterFloatValue("algo.vd.far", 0); SetMinimumParameterFloatValue("algo.vd.far", 0);
...@@ -126,7 +130,7 @@ private: ...@@ -126,7 +130,7 @@ private:
// Load input image // Load input image
auto inputImage = GetParameterImage("in"); auto inputImage = GetParameterImage("in");
otbAppLogINFO("Computing statistics on input image ..."); otbAppLogINFO("Computing statistics on input image...");
auto statisticsFilter = StreamingStatisticsVectorImageFilterType::New(); auto statisticsFilter = StreamingStatisticsVectorImageFilterType::New();
statisticsFilter->SetInput(inputImage); statisticsFilter->SetInput(inputImage);
...@@ -140,7 +144,7 @@ private: ...@@ -140,7 +144,7 @@ private:
const std::string algorithm = GetParameterString("algo"); const std::string algorithm = GetParameterString("algo");
if (algorithm=="elm") if (algorithm=="elm")
{ {
otbAppLogINFO("Estimation algorithm : Eigenvalue Likelihood Maximization."); otbAppLogINFO("Estimation algorithm: Eigenvalue Likelihood Maximization.");
auto elm = EigenvalueLikelihoodMaximisationType::New(); auto elm = EigenvalueLikelihoodMaximisationType::New();
elm->SetCovariance(covarianceMatrix); elm->SetCovariance(covarianceMatrix);
elm->SetCorrelation(correlationMatrix); elm->SetCorrelation(correlationMatrix);
...@@ -150,7 +154,7 @@ private: ...@@ -150,7 +154,7 @@ private:
} }
else if (algorithm=="vd") else if (algorithm=="vd")
{ {
otbAppLogINFO("Estimation algorithm : Virtual Dimensionality."); otbAppLogINFO("Estimation algorithm: Virtual Dimensionality.");
auto vd = VirtualDimensionalityType::New(); auto vd = VirtualDimensionalityType::New();
vd->SetCovariance(covarianceMatrix); vd->SetCovariance(covarianceMatrix);
vd->SetCorrelation(correlationMatrix); vd->SetCorrelation(correlationMatrix);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment