Skip to content
Snippets Groups Projects
Commit 60758dde authored by Guillaume Pasero's avatar Guillaume Pasero
Browse files

REFAC: use an ImageToListSampleAdaptor

parent e101a5af
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "otbLibSVMMachineLearningModel.h" #include "otbLibSVMMachineLearningModel.h"
#include "otbImageClassificationFilter.h" #include "otbImageClassificationFilter.h"
#include "otbImageFileReader.h" #include "otbImageFileReader.h"
#include "itkImageToListSampleAdaptor.h"
int otbImageSimulationMethodSVMClassif(int itkNotUsed(argc), char * argv[]) int otbImageSimulationMethodSVMClassif(int itkNotUsed(argc), char * argv[])
{ {
...@@ -138,38 +139,18 @@ int otbImageSimulationMethodSVMClassif(int itkNotUsed(argc), char * argv[]) ...@@ -138,38 +139,18 @@ int otbImageSimulationMethodSVMClassif(int itkNotUsed(argc), char * argv[])
//~ svmEstimator->DoProbabilityEstimates(true); //~ svmEstimator->DoProbabilityEstimates(true);
//~ svmEstimator->Update(); //~ svmEstimator->Update();
OutputImageType::Pointer outReflectance = imageSimulation->GetOutputReflectanceImage(); typedef itk::Statistics::ImageToListSampleAdaptor<OutputImageType> ListSampleAdaptorType;
LabelImageType::Pointer outLabels = imageSimulation->GetOutputLabelImage(); typedef itk::Statistics::ImageToListSampleAdaptor<LabelImageType> TargetListSampleAdaptorType;
typedef SVMType::InputListSampleType InputListSampleType; ListSampleAdaptorType::Pointer listSample = ListSampleAdaptorType::New();
typedef SVMType::TargetListSampleType TargetListSampleType; listSample->SetImage(imageSimulation->GetOutputReflectanceImage());
InputListSampleType::Pointer inputSamples = InputListSampleType::New();
TargetListSampleType::Pointer trainSamples = TargetListSampleType::New(); TargetListSampleAdaptorType::Pointer targetListSample = TargetListSampleAdaptorType::New();
inputSamples->SetMeasurementVectorSize(nbBands); targetListSample->SetImage(imageSimulation->GetOutputLabelImage());
trainSamples->SetMeasurementVectorSize(1);
itk::ImageRegionConstIterator<OutputImageType> itIn(outReflectance,outReflectance->GetLargestPossibleRegion() ); model->SetInputListSample(listSample);
itk::ImageRegionConstIterator<LabelImageType> itLabel(outLabels, outLabels->GetLargestPossibleRegion()); model->SetTargetListSample(targetListSample);
itIn.GoToBegin(); model->SetDoProbabilityEstimates(true);
itLabel.GoToBegin();
while (!itIn.IsAtEnd())
{
SVMType::InputSampleType sample;
SVMType::TargetSampleType target;
sample.SetSize(nbBands);
for (unsigned int i=0 ; i<nbBands ; i++)
{
sample[i] = itIn.Get()[i];
}
target[0] = itLabel.Value();
inputSamples->PushBack(sample);
trainSamples->PushBack(target);
++itIn;
++itLabel;
}
model->SetInputListSample(inputSamples);
model->SetTargetListSample(trainSamples);
model->DoProbabilityEstimates(true);
model->Train(); model->Train();
classifier->SetModel(model); classifier->SetModel(model);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment