Skip to content
Snippets Groups Projects
Commit 3f1903fa authored by Julien Michel's avatar Julien Michel
Browse files

BUG: Fixing bug #983 (Split map was not correctly estimated when ImageRegion...

BUG: Fixing bug #983 (Split map was not correctly estimated when ImageRegion did not start at [0,0]). Added two tests for this case as well.
parent 861ed67a
No related branches found
No related tags found
No related merge requests found
......@@ -107,10 +107,14 @@ ImageRegionAdaptativeSplitter<VImageDimension>
// Now we can handle the case where we have a tile hint and a
// non-trivial requested number of splits
SizeType tilesPerDim, splitsPerDim;
tilesPerDim[0] = (m_ImageRegion.GetSize()[0] + m_TileHint[0] -1) / m_TileHint[0];
tilesPerDim[1] = (m_ImageRegion.GetSize()[1] + m_TileHint[1] -1) / m_TileHint[1];
IndexType firstTileCovered;
// First, we need to get which tiles are covered by ROI
firstTileCovered[0] = m_ImageRegion.GetIndex()[0] / m_TileHint[0];
firstTileCovered[1] = m_ImageRegion.GetIndex()[1] / m_TileHint[1];
tilesPerDim[0] = (m_ImageRegion.GetIndex()[0] + m_ImageRegion.GetSize()[0] -1 + m_TileHint[0] -1) / m_TileHint[0] - firstTileCovered[0];
tilesPerDim[1] = (m_ImageRegion.GetIndex()[1] + m_ImageRegion.GetSize()[1] -1 + m_TileHint[1] -1) / m_TileHint[1] - firstTileCovered[1];
unsigned int totalTiles = tilesPerDim[0] * tilesPerDim[1];
// In this case, we have to group input tiles
......@@ -134,13 +138,14 @@ ImageRegionAdaptativeSplitter<VImageDimension>
i = (i+1)%2;
}
splitsPerDim[0] = tilesPerDim[0] / groupTiles[0];
splitsPerDim[1] = tilesPerDim[1] / groupTiles[1];
// Handle the last small tile if any
if(tilesPerDim[0] % groupTiles[0] > 0)
splitsPerDim[0]++;
splitsPerDim[1] = tilesPerDim[1] / groupTiles[1];
if(tilesPerDim[1] % groupTiles[1] > 0)
splitsPerDim[1]++;
......@@ -157,8 +162,8 @@ ImageRegionAdaptativeSplitter<VImageDimension>
newSplitSize[0] = groupTiles[0] * m_TileHint[0];
newSplitSize[1] = groupTiles[1] * m_TileHint[1];
newSplitIndex[0] = splitx * newSplitSize[0];
newSplitIndex[1] = splity * newSplitSize[1];
newSplitIndex[0] = firstTileCovered[0] * m_TileHint[0] + splitx * newSplitSize[0];
newSplitIndex[1] = firstTileCovered[1] * m_TileHint[1] + splity * newSplitSize[1];
newSplit.SetIndex(newSplitIndex);
newSplit.SetSize(newSplitSize);
......@@ -208,8 +213,8 @@ ImageRegionAdaptativeSplitter<VImageDimension>
RegionType newSplit;
IndexType newSplitIndex;
newSplitIndex[0] = tilex * m_TileHint[0] + divx * splitSize[0];
newSplitIndex[1] = tiley * m_TileHint[1] + divy * splitSize[1];
newSplitIndex[0] = (tilex + firstTileCovered[0]) * m_TileHint[0] + divx * splitSize[0];
newSplitIndex[1] = (tiley + firstTileCovered[1]) * m_TileHint[1] + divy * splitSize[1];
newSplit.SetIndex(newSplitIndex);
newSplit.SetSize(splitSize);
......
......@@ -78,6 +78,24 @@ otb_add_test(NAME coTvImageRegionAdaptativeSplitterStripLargeStream COMMAND otbC
${TEMP}/coTvImageRegionAdaptativeSplitterStripLargeStreamOutput.txt
)
otb_add_test(NAME coTvImageRegionAdaptativeSplitterShiftedROILargeStream COMMAND otbCommonTestDriver
--compare-ascii ${NOTOL}
${BASELINE_FILES}/coTvImageRegionAdaptativeSplitterShiftedROILargeStreamOutput.txt
${TEMP}/coTvImageRegionAdaptativeSplitterShiftedROILargeStreamOutput.txt
otbImageRegionAdaptativeSplitter
1000 1000 4000 4000 2000 2000 5
${TEMP}/coTvImageRegionAdaptativeSplitterShiftedROILargeStreamOutput.txt
)
otb_add_test(NAME coTvImageRegionAdaptativeSplitterShiftedROISmallStream COMMAND otbCommonTestDriver
--compare-ascii ${NOTOL}
${BASELINE_FILES}/coTvImageRegionAdaptativeSplitterShiftedROISmallStreamOutput.txt
${TEMP}/coTvImageRegionAdaptativeSplitterShiftedROISmallStreamOutput.txt
otbImageRegionAdaptativeSplitter
1000 1000 4000 4000 2000 2000 5
${TEMP}/coTvImageRegionAdaptativeSplitterShiftedROISmallStreamOutput.txt
)
otb_add_test(NAME coTuRGBAPixelConverter COMMAND otbCommonTestDriver
otbRGBAPixelConverterNew
)
......
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