Skip to content
Snippets Groups Projects
Commit 6880d809 authored by Emmanuel Christophe's avatar Emmanuel Christophe
Browse files

ENH: minor fix in tile streaming

parent 53081125
No related branches found
No related tags found
No related merge requests found
......@@ -35,9 +35,9 @@ namespace otb
*
* This region splitter tries to adapt to the tiling scheme of the
* input image using the TileHint parameter. It aims at
* synchronizing the streaming with the tiling scheme so as to avoid
* reading the same tile multiple times in the standard pixel-based
* processing scheme.
* synchronizing the streaming with the tiling scheme (in a JPEG
* 2000 situation for example) so as to avoid reading the same tile
* multiple times in the standard pixel-based processing scheme.
*
* If the requested number of splits is lower than the number of
* tiles in the image region, then the splitter will derive splits
......@@ -48,7 +48,7 @@ namespace otb
* changing to a new tile, ensuring the former tile will be only
* read once.
*
* If the TileHing is empty, or is VImageDimension is not 2, the
* If the TileHint is empty, or is VImageDimension is not 2, the
* splitter falls back to the behaviour of
* otb::ImageRegionSquareTileSplitter.
*
......@@ -63,7 +63,7 @@ class ITK_EXPORT ImageRegionAdaptativeSplitter : public itk::ImageRegionSplitter
{
public:
/** Standard class typedefs. */
typedef ImageRegionAdaptativeSplitter Self;
typedef ImageRegionAdaptativeSplitter Self;
typedef itk::ImageRegionSplitter<VImageDimension> Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
......@@ -82,7 +82,7 @@ public:
{
return VImageDimension;
}
/** Index typedef support. An index is used to access pixel values. */
typedef itk::Index<VImageDimension> IndexType;
typedef typename IndexType::IndexValueType IndexValueType;
......@@ -101,7 +101,7 @@ public:
/** Get the TileHint parameter */
itkGetConstReferenceMacro(TileHint, SizeType);
/** Set the ImageRegion parameter */
itkSetMacro(ImageRegion, RegionType);
......
......@@ -99,7 +99,7 @@ ImageRegionAdaptativeSplitter<VImageDimension>
m_IsUpToDate = true;
return;
}
// Now we can handle the case where we have a tile hint and a
// non-trivial requested number of splits
SizeType tilesPerDim, splitsPerDim;
......@@ -115,7 +115,7 @@ ImageRegionAdaptativeSplitter<VImageDimension>
// Try to group splits
SizeType groupTiles;
groupTiles.Fill(1);
unsigned int i=0;
// TODO: this should not fall in infinite loop, but add more
......@@ -170,7 +170,7 @@ ImageRegionAdaptativeSplitter<VImageDimension>
{
SizeType divideTiles;
divideTiles.Fill(1);
unsigned int i = 1;
while(totalTiles * (divideTiles[0] * divideTiles[1]) < m_RequestedNumberOfSplits)
......@@ -199,15 +199,15 @@ ImageRegionAdaptativeSplitter<VImageDimension>
// Build the split
RegionType newSplit;
IndexType newSplitIndex;
newSplitIndex[0] = tilex * m_TileHint[0] + divx * splitSize[0];
newSplitIndex[1] = tiley * m_TileHint[1] + divy * splitSize[1];
newSplit.SetIndex(newSplitIndex);
newSplit.SetSize(splitSize);
newSplit.Crop(m_ImageRegion);
m_StreamVector.push_back(newSplit);
}
}
......
......@@ -14,7 +14,7 @@
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
=========================================================================*/
#ifndef __otbRAMDrivenAdaptativeStreamingManager_txx
#define __otbRAMDrivenAdaptativeStreamingManager_txx
......@@ -60,12 +60,13 @@ RAMDrivenAdaptativeStreamingManager<TImage>::PrepareStreaming( itk::DataObject *
tileHint[0] = tileHintX;
tileHint[1] = tileHintY;
typename otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::Pointer splitter = otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::New();
typename otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::Pointer splitter =
otb::ImageRegionAdaptativeSplitter<itkGetStaticConstMacro(ImageDimension)>::New();
splitter->SetTileHint(tileHint);
this->m_Splitter = splitter;
this->m_ComputedNumberOfSplits = this->m_Splitter->GetNumberOfSplits(region, nbDivisions);
otbMsgDevMacro(<< "Number of split : " << this->m_ComputedNumberOfSplits)
this->m_Region = region;
......@@ -74,4 +75,3 @@ RAMDrivenAdaptativeStreamingManager<TImage>::PrepareStreaming( itk::DataObject *
} // End namespace otb
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment