diff --git a/Modules/Core/Common/include/itkImageAlgorithm.hxx b/Modules/Core/Common/include/itkImageAlgorithm.hxx index ec7e6fc4569..fd82b299f36 100644 --- a/Modules/Core/Common/include/itkImageAlgorithm.hxx +++ b/Modules/Core/Common/include/itkImageAlgorithm.hxx @@ -19,8 +19,7 @@ #define itkImageAlgorithm_hxx #include "itkArray.h" -#include "itkImageRegionIterator.h" -#include "itkImageScanlineIterator.h" +#include "itkImageRegionRange.h" #include @@ -35,33 +34,17 @@ ImageAlgorithm::DispatchedCopy(const InputImageType * inIm const typename OutputImageType::RegionType & outRegion, FalseType) { - if (inRegion.GetSize()[0] == outRegion.GetSize()[0]) - { - itk::ImageScanlineConstIterator it(inImage, inRegion); - itk::ImageScanlineIterator ot(outImage, outRegion); + ImageRegionRange outputRange(*outImage, outRegion); - while (!it.IsAtEnd()) - { - while (!it.IsAtEndOfLine()) - { - ot.Set(static_cast(it.Get())); - ++ot; - ++it; - } - ot.NextLine(); - it.NextLine(); - } - return; - } + using InputPixelType = typename InputImageType::PixelType; + using OutputPixelType = typename OutputImageType::PixelType; - itk::ImageRegionConstIterator it(inImage, inRegion); - itk::ImageRegionIterator ot(outImage, outRegion); + auto outputIt = outputRange.begin(); - while (!it.IsAtEnd()) + for (const InputPixelType & inputPixel : ImageRegionRange(*inImage, inRegion)) { - ot.Set(static_cast(it.Get())); - ++ot; - ++it; + *outputIt = static_cast(inputPixel); + ++outputIt; } } diff --git a/Modules/Filtering/ImageGrid/include/itkPasteImageFilter.hxx b/Modules/Filtering/ImageGrid/include/itkPasteImageFilter.hxx index d6d1dc839af..8f24428552c 100644 --- a/Modules/Filtering/ImageGrid/include/itkPasteImageFilter.hxx +++ b/Modules/Filtering/ImageGrid/include/itkPasteImageFilter.hxx @@ -21,6 +21,7 @@ #include "itkObjectFactory.h" #include "itkTotalProgressReporter.h" #include "itkImageAlgorithm.h" +#include "itkImageScanlineIterator.h" namespace itk {