diff --git a/include/lsgrmController.txx b/include/lsgrmController.txx index 487c834022c61d4989f3ec0ec95d41400de02b41..33fd537af4c6d93a02c9b9c09d335b4488e3232c 100644 --- a/include/lsgrmController.txx +++ b/include/lsgrmController.txx @@ -96,9 +96,6 @@ void Controller<TSegmenter>::RunSegmentation() m_TileHeight, isFusion); - // Update the given number of iterations - numberOfIterationsRemaining -= m_NumberOfFirstIterations; - #ifdef OTB_USE_MPI // Gathering useful variables GatherUsefulVariables(accumulatedMemory, isFusion); @@ -107,20 +104,9 @@ void Controller<TSegmenter>::RunSegmentation() // Time monitoring ShowTime(t); - std::cout << "accumulatedMemory=" << accumulatedMemory << std::endl; while(accumulatedMemory > m_Memory && isFusion) { - if (numberOfIterationsRemaining < numberOfIterationsForPartialSegmentations) - { - numberOfIterationsForPartialSegmentations = numberOfIterationsRemaining; - numberOfIterationsRemaining = 0; - } - else - { - numberOfIterationsRemaining -= numberOfIterationsForPartialSegmentations; - } - isFusion = false; accumulatedMemory = RunPartialSegmentation<TSegmenter>( m_SpecificParameters, @@ -134,6 +120,9 @@ void Controller<TSegmenter>::RunSegmentation() m_InputImage->GetNumberOfComponentsPerPixel(), isFusion); + std::cout << "accumulatedMemory=" << accumulatedMemory << std::endl; + + #ifdef OTB_USE_MPI // Gathering useful variables GatherUsefulVariables(accumulatedMemory, isFusion); @@ -142,8 +131,15 @@ void Controller<TSegmenter>::RunSegmentation() // Time monitoring ShowTime(t); - if (numberOfIterationsRemaining == 0) + // Update number of remaining iterations + if (numberOfIterationsRemaining < numberOfIterationsForPartialSegmentations) + { break; + } + else + { + numberOfIterationsRemaining -= numberOfIterationsForPartialSegmentations; + } } #ifdef OTB_USE_MPI @@ -196,7 +192,7 @@ void Controller<TSegmenter>::RunSegmentation() TSegmenter segmenter; segmenter.SetParam(m_SpecificParameters); segmenter.SetThreshold(m_Threshold); - segmenter.SetDoFastSegmentation(true); + segmenter.SetDoFastSegmentation(false); segmenter.SetNumberOfIterations(m_NumberOfIterations); segmenter.SetInput(m_InputImage); segmenter.Update();