ENH: add 3d image support to StreamingManager and PipelineMemoryPrint…
…Calculator
Summary
Add nD image support to otbStreamingManager and 3D image support to PipelineMemoryPrintCalculator
Rationale
The StreamingManager class defines a small, i.e. 100 pixel, region around the image centre that is used to estimate the memory footprint of the processing pipeline. The current implementation only explicitly sets the index for dimensions 0 and 1 respectively. Since the index value assignment does not account for the actual number of dimensions of the image, a 1D image would produce a segmentation fault when the value of index[1] is assigned.
The PipelineMemoryPrintCalculator currently only supports 2D images. The number of image dimensions is currently hard coded in ::EvaluateDataObjectPrint in macro OTB_IMAGE_SIZE_BLOCK.
Implementation Details
otbStreamingManager.hxx
- The assignment of index and size values of the test region is done considering the actual number of image dimensions.
-
smallRegion.Crop(region)is removed because it is superfluous with the new implementation.
otbPipelineMemoryPrintCalculator.cxx
- I added a set of image memory print calculation statements for 3-dimensional images to the
OTB_IMAGE_SIZE_BLOCKmacro - Note: This revision will be performance neutral for 2D images but enables use of this class for 3D images. A future improvement of this class would be to template it over the image type to enable nD support.
Copyright
The copyright owner is Manaaki Whenua - Landcare Research (MWLR). MWLR has signed the ORFEO ToolBox Contributor License Agreement.
Dear @heralex, thank you for your contribution!
I copied your Pull Request in our forge, the unit tests are now running.
Sincerely. Julien.