From e00416f870a8f7a36a9b393aca664737dc6cb02e Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@cnes.fr> Date: Wed, 4 Nov 2015 11:13:06 +0100 Subject: [PATCH] PERF: Optimize WarpImageFilter by avoiding refcount bouncing --- Modules/ThirdParty/ITK/include/otbWarpImageFilter.h | 2 +- Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h index 0a2041d60b..19f46d9a65 100644 --- a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h +++ b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h @@ -257,7 +257,7 @@ private: /** This function should be in an interpolator but none of the ITK * interpolators at this point handle edge conditions properly */ - DisplacementType EvaluateDisplacementAtPhysicalPoint(const PointType &p); + DisplacementType EvaluateDisplacementAtPhysicalPoint(const PointType &p, const DisplacementFieldType *fieldPtr); PixelType m_EdgePaddingValue; SpacingType m_OutputSpacing; diff --git a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx index a57a72f045..7f0719b187 100644 --- a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx +++ b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx @@ -214,9 +214,8 @@ typename WarpImageFilter<TInputImage, TOutputImage, TDisplacementField>::DisplacementType WarpImageFilter<TInputImage,TOutputImage,TDisplacementField> -::EvaluateDisplacementAtPhysicalPoint(const PointType &point) +::EvaluateDisplacementAtPhysicalPoint(const PointType &point, const DisplacementFieldType *fieldPtr) { - DisplacementFieldPointer fieldPtr = this->GetDisplacementField(); itk::ContinuousIndex<double,ImageDimension> index; fieldPtr->TransformPhysicalPointToContinuousIndex(point,index); unsigned int dim; // index over dimension @@ -377,7 +376,7 @@ WarpImageFilter<TInputImage,TOutputImage,TDisplacementField> index = outputIt.GetIndex(); outputPtr->TransformIndexToPhysicalPoint( index, point ); - displacement = this->EvaluateDisplacementAtPhysicalPoint(point); + displacement = this->EvaluateDisplacementAtPhysicalPoint( point, fieldPtr ); // compute the required input image point for(unsigned int j = 0; j < ImageDimension; j++ ) { -- GitLab