From f6119e774dc6d5087abbf9202bbd878c238501c5 Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@orfeo-toolbox.org> Date: Thu, 12 Sep 2019 09:16:05 +0000 Subject: [PATCH] BUG: Fix bug #1963 by changing default requested region when completely outside of input largest possible region --- .../include/otbStreamingWarpImageFilter.hxx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Modules/Core/Transform/include/otbStreamingWarpImageFilter.hxx b/Modules/Core/Transform/include/otbStreamingWarpImageFilter.hxx index dcd43c075f..fffcf6346f 100644 --- a/Modules/Core/Transform/include/otbStreamingWarpImageFilter.hxx +++ b/Modules/Core/Transform/include/otbStreamingWarpImageFilter.hxx @@ -232,21 +232,27 @@ StreamingWarpImageFilter<TInputImage, TOutputImage, TDisplacementField> } else { + // In this case we need to generate an empty region compatible + // with cropping by input largest possible region. - inputFinalSize.Fill(0); - inputRequestedRegion.SetSize(inputFinalSize); - inputFinalIndex.Fill(0); - inputRequestedRegion.SetIndex(inputFinalIndex); - // store what we tried to request (prior to trying to crop) - inputPtr->SetRequestedRegion(inputRequestedRegion); + for(auto dim = 0U; dim < InputImageType::ImageDimension; ++dim) + { + if(inputPtr->GetLargestPossibleRegion().GetSize()[dim]>1) + { + inputFinalIndex[dim] = inputPtr->GetLargestPossibleRegion().GetIndex()[dim]+1; + inputFinalSize[dim] = 0; + } + else + { + inputFinalIndex[dim] = inputPtr->GetLargestPossibleRegion().GetIndex()[dim]; + inputFinalSize[dim] = inputPtr->GetLargestPossibleRegion().GetSize()[dim]; + } + } -// // build an exception -// itk::InvalidRequestedRegionError e(__FILE__, __LINE__); -// e.SetLocation(ITK_LOCATION); -// e.SetDescription("Requested region is (at least partially) outside the largest possible region."); -// e.SetDataObject(inputPtr); -// throw e; + inputRequestedRegion.SetSize(inputFinalSize); + inputRequestedRegion.SetIndex(inputFinalIndex); + inputPtr->SetRequestedRegion(inputRequestedRegion); } } -- GitLab