diff --git a/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.txx b/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.txx index 85ad1a1075239cd38c4d2091584ef1bce82d0887..165667b6a0457c2dfeb596495b87513774a73734 100644 --- a/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.txx +++ b/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.txx @@ -120,53 +120,25 @@ BinaryImageMinimalBoundingRegionCalculator<TInputImage> rit.PreviousSlice(); } } - - // Compute size and index of the region + typename InputImageType::SizeType size; typename InputImageType::IndexType index; - RegionType maxRegion = image->GetLargestPossibleRegion(); - // If the pad option is activated - if(m_Pad>0) - { - for(int i=0;i<InputImageType::ImageDimension;i++) - { - // If we are not on boundary case, we can do what we want - if((int)(min[i]-m_Pad)> maxRegion.GetIndex()[i]) - { - index[i]= min[i]-m_Pad; - } - // else we are at beginning of the image, so don't pad - else - { - index[i]= maxRegion.GetIndex()[i]; - } - // If are not on boundary case, we can pad the size - if (index[i]+max[i]-min[i]+2*m_Pad+1<=maxRegion.GetIndex()[i]+maxRegion.GetSize()[i]) - { - size[i]=max[i]-min[i]+2*m_Pad+1; - } - // Else we must restrain ourselves to the image boundaries - else - { - size[i]=maxRegion.GetSize()[i]+maxRegion.GetIndex()[i] - -max[i]+min[i]-index[i]; - } - } - } - else - // If the pad option is not activated, the result is simple + + for(int i=0;i<InputImageType::ImageDimension;i++) { - for(int i=0;i<InputImageType::ImageDimension;i++) - { - size[i]=max[i]-min[i]+1; - index[i]=min[i]; - } + size[i]=max[i]-min[i]+1; + index[i]=min[i]; } - // otbMsgDebugMacro(<<"BinaryImageMinimalBoundingBoxCalculator: index "<<index); - // otbMsgDebugMacro(<<"BinaryImageMinimalBoundingBoxCalculator: size "<<size); - // Set the size and index of the output region + m_Region.SetIndex(index); m_Region.SetSize(size); + + if(m_Pad) + { + m_Region.PadByRadius(m_Pad); + } + + m_Region.Crop(image->GetLargestPossibleRegion()); } /** * PrintSelf method