Commit 34875726 authored by Cedric's avatar Cedric
Browse files

ENH: code factorization

No related merge requests found
Showing with 18 additions and 10 deletions
+18 -10
...@@ -122,30 +122,38 @@ private: ...@@ -122,30 +122,38 @@ private:
void DoExecute() override void DoExecute() override
{ {
otbAppLogINFO("Computing statistics on input image"); // Load input image
auto inputImage = GetParameterImage("in");
otbAppLogINFO("Computing statistics on input image ...");
auto statisticsFilter = StreamingStatisticsVectorImageFilterType::New(); auto statisticsFilter = StreamingStatisticsVectorImageFilterType::New();
statisticsFilter->SetInput(GetParameterImage("in")); statisticsFilter->SetInput(inputImage);
statisticsFilter->Update(); statisticsFilter->Update();
auto correlationMatrix = statisticsFilter->GetCorrelation().GetVnlMatrix();
auto covarianceMatrix = statisticsFilter->GetCovariance().GetVnlMatrix();
auto numberOfPixels = inputImage->GetLargestPossibleRegion().GetNumberOfPixels();
int numberOfEndmembers = 0; int numberOfEndmembers = 0;
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(statisticsFilter->GetCovariance().GetVnlMatrix()); elm->SetCovariance(covarianceMatrix);
elm->SetCorrelation(statisticsFilter->GetCorrelation().GetVnlMatrix()); elm->SetCorrelation(correlationMatrix);
elm->SetNumberOfPixels(GetParameterImage("in")->GetLargestPossibleRegion().GetNumberOfPixels()); elm->SetNumberOfPixels(numberOfPixels);
elm->Compute(); elm->Compute();
numberOfEndmembers = elm->GetNumberOfEndmembers(); numberOfEndmembers = elm->GetNumberOfEndmembers();
} }
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(statisticsFilter->GetCovariance().GetVnlMatrix()); vd->SetCovariance(covarianceMatrix);
vd->SetCorrelation(statisticsFilter->GetCorrelation().GetVnlMatrix()); vd->SetCorrelation(correlationMatrix);
vd->SetNumberOfPixels(GetParameterImage("in")->GetLargestPossibleRegion().GetNumberOfPixels()); vd->SetNumberOfPixels(numberOfPixels);
vd->SetFAR(GetParameterFloat("algo.vd.far")); vd->SetFAR(GetParameterFloat("algo.vd.far"));
vd->Compute(); vd->Compute();
numberOfEndmembers = vd->GetNumberOfEndmembers(); numberOfEndmembers = vd->GetNumberOfEndmembers();
......
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