diff --git a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx index 6be11377009ec2085cf3f211d76696b4a75c578a..0dbd9d2a55b08e9462f8519ec7c2c12d611a47c1 100644 --- a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx +++ b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx @@ -18,6 +18,7 @@ // Validation #include "otbConfusionMatrixCalculator.h" +#include "otbContingencyTableCalculator.h" namespace otb { @@ -81,11 +82,27 @@ private: } else { - // TODO Compute Contingency Table + WriteContingencyTable(); } } + void WriteContingencyTable() + { + // Compute contingency table + typedef ContingencyTableCalculator<ClassLabelType> ContigencyTableCalcutaltorType; + ContigencyTableCalcutaltorType::Pointer contingencyTableCalculator = ContigencyTableCalcutaltorType::New(); + contingencyTableCalculator->Compute(predictedList->Begin(), predictedList->End(), + classificationListSamples.labeledListSample->Begin(), + classificationListSamples.labeledListSample->End()); + ContingencyTable<ClassLabelType> contingencyTable = contingencyTableCalculator->GetContingencyTable(); + + // Write contingency table + std::ofstream outFile; + outFile.open( this->GetParameterString( "io.confmatout" ).c_str() ); + outFile << contingencyTable.to_csv(); + } + ConfusionMatrixCalculatorType::Pointer ComputeConfusionMatrix(const TargetListSampleType::Pointer &predictedListSample,