From 671d758ac3bd54574b997032d8f72d8467e0dcea Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 6 Feb 2024 19:44:16 +0100 Subject: [PATCH] PERF: ImageMaskSpatialObject use image regions from its base class A significant performance improvement appears to be achieved by using the buffered region and the requested region as cached in its base class, instead of calling the virtual functions `GetBufferedRegion()` and `GetRequestedRegion()` from its image. A performance improvement of more than 8 percent was observed, from more than 0.80 sec. (before this commit) to less than 0.73 sec. (after this commit), when calling `ImageMaskSpatialObject::IsInsideInObjectSpace` 2^27 times, using a Visual Studio 2022 Release build. --- .../Core/SpatialObjects/include/itkImageMaskSpatialObject.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/Core/SpatialObjects/include/itkImageMaskSpatialObject.hxx b/Modules/Core/SpatialObjects/include/itkImageMaskSpatialObject.hxx index 23d006a37dc..5b944321efd 100644 --- a/Modules/Core/SpatialObjects/include/itkImageMaskSpatialObject.hxx +++ b/Modules/Core/SpatialObjects/include/itkImageMaskSpatialObject.hxx @@ -39,7 +39,7 @@ ImageMaskSpatialObject::IsInsideInObjectSpace(const PointTyp const IndexType index = image->TransformPhysicalPointToIndex(point); - return image->GetBufferedRegion().IsInside(index) && + return Superclass::GetBufferedRegion().IsInside(index) && Math::NotExactlyEquals(image->GetPixel(index), NumericTraits::ZeroValue()); } @@ -163,7 +163,7 @@ ImageMaskSpatialObject::ComputeMyBoundingBoxInIndexSpace() c return RegionType{ minIndex, regionSize }; }; - const RegionType requestedRegion = image.GetRequestedRegion(); + const RegionType requestedRegion = Superclass::GetRequestedRegion(); if (requestedRegion.GetNumberOfPixels() == 0) {