diff --git a/app/GenericRegionMerging.cxx b/app/GenericRegionMerging.cxx index f73cf0878b3b60c5059d2bdb3e48e50004376141..ca7cc4413c38e0bce586759d37534a2c872169bf 100644 --- a/app/GenericRegionMerging.cxx +++ b/app/GenericRegionMerging.cxx @@ -51,7 +51,8 @@ namespace otb SetDescription("This application allows to use the Generic Region Merging library (GRM) and provides currently 3 homogeneity criteria: Euclidean Distance, Full Lambda Schedule and Baatz & Schape criterion."); AddParameter(ParameterType_InputImage, "in", "Input Image"); - AddParameter(ParameterType_OutputImage, "out", "Ouput Label Image"); + AddParameter(ParameterType_OutputImage, "out", "Ouput Label Image"); +// AddParameter(ParameterType_OutputImage, "outrvb", "Ouput Label Image (RVB 8bits)"); AddParameter(ParameterType_Choice, "criterion", "Homogeneity criterion to use"); AddChoice("criterion.bs", "Baatz & Schape"); @@ -98,6 +99,11 @@ namespace otb const unsigned int niter = GetParameterInt("niter"); const int speed = GetParameterInt("speed"); + // Output images + LabelImageType::Pointer labelImage = LabelImageType::New(); + typedef otb::VectorImage<unsigned char, 2> RGBLabelImageType; + RGBLabelImageType::Pointer rvbLabelImage = RGBLabelImageType::New(); + if(selectedCriterion == "bs") { const float cw = GetParameterFloat("cw"); @@ -120,7 +126,8 @@ namespace otb segmenter.Update(); - SetParameterOutputImage<LabelImageType>("out", segmenter.GetLabeledClusteredOutput()); + labelImage = segmenter.GetLabeledClusteredOutput(); +// rvbLabelImage = segmenter.GetClusteredImageOutput(); } else if(selectedCriterion == "ed") { @@ -135,7 +142,8 @@ namespace otb segmenter.Update(); - SetParameterOutputImage<LabelImageType>("out", segmenter.GetLabeledClusteredOutput()); + labelImage = segmenter.GetLabeledClusteredOutput(); +// rvbLabelImage = segmenter.GetClusteredImageOutput(); } else if(selectedCriterion == "fls") { @@ -150,8 +158,22 @@ namespace otb segmenter.Update(); - SetParameterOutputImage<LabelImageType>("out", segmenter.GetLabeledClusteredOutput()); + labelImage = segmenter.GetLabeledClusteredOutput(); + rvbLabelImage = segmenter.GetClusteredImageOutput(); } + + // Set output image projection, origin and spacing for labelImage + labelImage->SetProjectionRef(image->GetProjectionRef()); + labelImage->SetOrigin(image->GetOrigin()); + labelImage->SetSpacing(image->GetSpacing()); + SetParameterOutputImage<LabelImageType>("out", labelImage); + +// // Set output image projection, origin and spacing for RVB labelImage +// rvbLabelImage->SetProjectionRef(image->GetProjectionRef()); +// rvbLabelImage->SetOrigin(image->GetOrigin()); +// rvbLabelImage->SetSpacing(image->GetSpacing()); +// SetParameterOutputImage<RGBLabelImageType>("outrvb", rvbLabelImage); + } }; } // end of namespace Wrapper