From b7c81c6372afa0e5f9aa9934aa523267e44bfd7b Mon Sep 17 00:00:00 2001 From: Julien Malik <julien.malik@c-s.fr> Date: Fri, 6 May 2011 16:18:27 +0200 Subject: [PATCH] ENH: replace direct use of MemoryPrintEstimator by integrated functionnality in StreamingFileWriter --- Projections/otbBundleToPerfectSensor.cxx | 57 ++---------------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/Projections/otbBundleToPerfectSensor.cxx b/Projections/otbBundleToPerfectSensor.cxx index b2e51bc865..d0f32dd390 100644 --- a/Projections/otbBundleToPerfectSensor.cxx +++ b/Projections/otbBundleToPerfectSensor.cxx @@ -34,9 +34,6 @@ #include "itkFixedArray.h" -#include "otbPipelineMemoryPrintCalculator.h" -#include "itkExtractImageFilter.h" - namespace otb { int BundleToPerfectSensor::Describe(ApplicationDescriptor* descriptor) @@ -142,61 +139,15 @@ int BundleToPerfectSensor::Execute(otb::ApplicationOptionsResult* parseResult) writer->SetFileName(parseResult->GetOutputImage()); writer->SetInput(fusionFilter->GetOutput()); writer->SetWriteGeomFile(true); - - otb::StandardWriterWatcher w4(writer, resampler,"Perfect sensor fusion"); - - // Estimate memory print - otb::PipelineMemoryPrintCalculator::Pointer memoryPrintCalculator = otb::PipelineMemoryPrintCalculator::New(); - const double byteToMegabyte = 1./vcl_pow(2.0, 20); - - // Trick to avoid having the resampler compute the whole - // deformation field - ExtractFilterType::Pointer extractFilter = ExtractFilterType::New(); - extractFilter->SetInput(fusionFilter->GetOutput()); - XsImageType::RegionType smallRegion; - XsImageType::SizeType smallSize; - smallSize.Fill(100); - XsImageType::IndexType index; - index[0] = fusionFilter->GetOutput()->GetLargestPossibleRegion().GetIndex()[0] - + fusionFilter->GetOutput()->GetLargestPossibleRegion().GetSize()[0]/2 - 50; - index[1] = fusionFilter->GetOutput()->GetLargestPossibleRegion().GetIndex()[1] - + fusionFilter->GetOutput()->GetLargestPossibleRegion().GetSize()[1]/2 - 50; - smallRegion.SetSize(smallSize); - smallRegion.SetIndex(index); - - extractFilter->SetExtractionRegion(smallRegion); - - bool smallRegionSuccess = smallRegion.Crop(fusionFilter->GetOutput()->GetLargestPossibleRegion()); - - if( smallRegionSuccess) - { - memoryPrintCalculator->SetDataToWrite(extractFilter->GetOutput()); - double regionTrickFactor = (double)fusionFilter->GetOutput()->GetLargestPossibleRegion().GetNumberOfPixels() - /(double)(smallRegion.GetNumberOfPixels()); - memoryPrintCalculator->SetBiasCorrectionFactor(1.27 * regionTrickFactor); - } - else - { - memoryPrintCalculator->SetDataToWrite(fusionFilter->GetOutput()); - memoryPrintCalculator->SetBiasCorrectionFactor(1.27); - } - - memoryPrintCalculator->SetAvailableMemory(256 / byteToMegabyte); + unsigned int ram = 256; if (parseResult->IsOptionPresent("AvailableMemory")) { - long long int memory = static_cast <long long int> (parseResult->GetParameterUInt("AvailableMemory")); - memoryPrintCalculator->SetAvailableMemory(memory / byteToMegabyte); + ram = parseResult->GetParameterUInt("AvailableMemory"); } + writer->SetAutomaticTiledStreaming(ram); - memoryPrintCalculator->Compute(); - - std::cout<<"Total memory usage: "<<memoryPrintCalculator->GetMemoryPrint()*byteToMegabyte<<" Mb"<<std::endl; - std::cout<<"Optimal stream division: "<<memoryPrintCalculator->GetOptimalNumberOfStreamDivisions()<<std::endl; - - - writer->SetTilingStreamDivisions(memoryPrintCalculator->GetOptimalNumberOfStreamDivisions()); - + otb::StandardWriterWatcher w4(writer, resampler,"Perfect sensor fusion"); writer->Update(); } catch ( itk::ExceptionObject & err ) -- GitLab