Commit 01d93ed8 authored by remicres's avatar remicres
Browse files

ADD: improve application parameters

parent ff0c3a2c
......@@ -44,7 +44,8 @@ private:
"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");
SetDefaultOutputPixelType("out", ImagePixelType_uint32);
// AddParameter(ParameterType_Choice, "criterion", "Homogeneity criterion to use");
// AddChoice("criterion.bs", "Baatz & Schape");
......@@ -71,9 +72,13 @@ private:
// For large scale
AddParameter(ParameterType_Directory, "tmpdir", "temporary directory for tiles and graphs");
AddParameter(ParameterType_Int, "tsizex", "tile width");
AddParameter(ParameterType_Int, "tsizey", "tile height");
AddParameter(ParameterType_Int, "nfirstiter", "number of first iterations");
AddParameter(ParameterType_Choice, "tiling", "Tiling layout for the large scale segmentation");
AddChoice("tiling.auto", "Automatic tiling layout");
AddChoice("tiling.user", "User tiling layout");
AddParameter(ParameterType_Int, "tiling.user.sizex", "Tiles width");
AddParameter(ParameterType_Int, "tiling.user.sizey", "Tiles height");
AddParameter(ParameterType_Int, "tiling.user.nfirstiter", "Number of first iterations");
AddParameter(ParameterType_Int, "tiling.user.memory", "Available memory");
}
void DoUpdateParameters()
......@@ -95,18 +100,24 @@ private:
using SegmenterType = lsrm::BaatzSegmenter<ImageType>;
using ControllerType = lsgrm::Controller<SegmenterType>;
ImageType::Pointer inputImage = GetParameterFloatVectorImage("in");
ControllerType controller;
controller.SetInputImage(GetParameterFloatVectorImage("in"));
controller.SetTileDirectory(GetParameterAsString("tmpdir"));
controller.SetInputImage(inputImage);
controller.SetTemporaryDirectory(GetParameterAsString("tmpdir"));
controller.SetOutputGraphDirectory(GetParameterAsString("tmpdir"));
// Memory configuration
controller.SetInternalMemoryAvailable(0); // 0 = automatic
controller.SetTileWidth(GetParameterInt("tsizex"));
controller.SetTileHeight(GetParameterInt("tsizey"));
controller.SetNumberOfFirstIterations(GetParameterInt("nfirstiter"));
if (GetParameterInt("tiling") == 0)
{
controller.SetInternalMemoryAvailable(0); // 0 = automatic
}
else
{
controller.SetTileWidth(GetParameterInt("tiling.user.sizex"));
controller.SetTileHeight(GetParameterInt("tiling.user.sizey"));
controller.SetNumberOfFirstIterations(GetParameterInt("tiling.user.nfirstiter"));
controller.SetInternalMemoryAvailable(GetParameterInt("tiling.user.memory"));
}
// MPI configuration
#ifdef OTB_USE_MPI
......@@ -124,8 +135,18 @@ private:
float thres = GetParameterFloat("threshold");
controller.SetThreshold(thres*thres);
// Run the segmentation
controller.RunSegmentation();
// Output images
UInt32ImageType::Pointer labelImage = controller.GetLabeledClusteredOutput();;
// Set output image projection, origin and spacing for labelImage
labelImage->SetProjectionRef(inputImage->GetProjectionRef());
labelImage->SetOrigin(inputImage->GetOrigin());
labelImage->SetSpacing(inputImage->GetSpacing());
SetParameterOutputImage<UInt32ImageType>("out", labelImage);
}
void AfterExecuteAndWriteOutputs()
......
Markdown is supported
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