Skip to content

Commit 4379b75

Browse files
blowekamphjmjohnson
authored andcommitted
ENH: Use InPlaceImageFilter for base class, run in-place by default
Enable not copying the input image's bulk pixel data by default.
1 parent 374940a commit 4379b75

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

Modules/Core/Transform/include/itkTransformGeometryImageFilter.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#ifndef itkTransformGeometryImageFilter_h
2020
#define itkTransformGeometryImageFilter_h
2121

22-
#include "itkImageToImageFilter.h"
22+
#include "itkInPlaceImageFilter.h"
2323
#include "itkVersorRigid3DTransform.h"
2424
#include "itkDataObjectDecorator.h"
2525

@@ -100,22 +100,22 @@ namespace itk
100100
* \ingroup ITKTransform
101101
*/
102102
template <typename TInputImage, typename TOutputImage>
103-
class ITK_TEMPLATE_EXPORT TransformGeometryImageFilter : public ImageToImageFilter<TInputImage, TOutputImage>
103+
class ITK_TEMPLATE_EXPORT TransformGeometryImageFilter : public InPlaceImageFilter<TInputImage, TOutputImage>
104104
{
105105
public:
106106
ITK_DISALLOW_COPY_AND_MOVE(TransformGeometryImageFilter);
107107

108108
/** Standard class type alias */
109109
using Self = TransformGeometryImageFilter;
110-
using Superclass = ImageToImageFilter<TInputImage, TOutputImage>;
110+
using Superclass = InPlaceImageFilter<TInputImage, TOutputImage>;
111111
using Pointer = SmartPointer<Self>;
112112
using ConstPointer = SmartPointer<const Self>;
113113

114114
/** Method for creation through the object factory */
115115
itkNewMacro(Self);
116116

117117
/** Run-time type information (and related methods) */
118-
itkTypeMacro(TransformGeometryImageFilter, ImageToImageFilter);
118+
itkTypeMacro(TransformGeometryImageFilter, InPlaceImageFilter);
119119

120120
/** input/output image type alias */
121121
using InputImageType = TInputImage;

Modules/Core/Transform/include/itkTransformGeometryImageFilter.hxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ template <typename TInputImage, typename TOutputImage>
6969
void
7070
TransformGeometryImageFilter<TInputImage, TOutputImage>::GenerateData()
7171
{
72+
if (this->GetRunningInPlace())
73+
{
74+
// No need to copy the bulk data
75+
return;
76+
}
7277
OutputImageType * output = this->GetOutput();
7378

7479
auto input = InputImageType::New();
@@ -87,6 +92,7 @@ TransformGeometryImageFilter<TInputImage, TOutputImage>::GenerateData()
8792

8893
// Can't use graft as it will overwrite the new meta-data
8994
output->SetPixelContainer(castFilter->GetOutput()->GetPixelContainer());
95+
output->SetBufferedRegion(castFilter->GetOutput()->GetBufferedRegion());
9096
}
9197

9298
} // end namespace itk

Modules/Core/Transform/test/itkTransformGeometryImageFilterTest.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ itkTransformGeometryImageFilterTest(int argc, char * argv[])
127127

128128
// Set up the transform filter
129129
FilterType::Pointer filter = FilterType::New();
130-
ITK_EXERCISE_BASIC_OBJECT_METHODS(filter, TransformGeometryImageFilter, ImageToImageFilter);
130+
ITK_EXERCISE_BASIC_OBJECT_METHODS(filter, TransformGeometryImageFilter, InPlaceImageFilter);
131131

132132
// Test the exceptions
133133
ITK_TRY_EXPECT_EXCEPTION(filter->Update());

0 commit comments

Comments
 (0)