Skip to content

Commit

Permalink
Merge pull request #1684 from dzenanz/refactorAvgAffine
Browse files Browse the repository at this point in the history
Refactor AverageAffineTransformFunction
  • Loading branch information
cookpa committed Feb 28, 2024
2 parents fc0e56d + 911eadf commit 4b13b0c
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 607 deletions.
1 change: 1 addition & 0 deletions Examples/AverageAffineTransform.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ AverageAffineTransform(char * output_affine_txt, char * reference_affine_txt, TR
// typename ImageFileReaderType::Pointer reader_img_ref = ImageFileReaderType::New();

WarperType average_func;
average_func.verbose = true;
// warper->SetInput(img_mov);
// warper->SetEdgePaddingValue( 0);
// VectorType pad;
Expand Down
6 changes: 4 additions & 2 deletions Examples/AverageAffineTransformNoRigid.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include "itkMatrixOffsetTransformBase.h"
#include "itkTransformFactory.h"

#include "itkAverageAffineTransformNoRigidFunction.h"
#include "itkAverageAffineTransformFunction.h"

#include "itkTransformFileReader.h"
#include "itkTransformFileWriter.h"
Expand Down Expand Up @@ -118,7 +118,7 @@ AverageAffineTransformNoRigid(char * output_affine_txt, char * reference_affine_
// typedef itk::WarpImageMultiTransformFilter<ImageType, ImageType,
// DisplacementFieldType, AffineTransformType> WarperType;

using WarperType = itk::AverageAffineTransformNoRigidFunction<AffineTransformType>;
using WarperType = itk::AverageAffineTransformFunction<AffineTransformType>;

itk::TransformFactory<AffineTransformType>::RegisterTransform();

Expand All @@ -129,6 +129,8 @@ AverageAffineTransformNoRigid(char * output_affine_txt, char * reference_affine_
// typename ImageFileReaderType::Pointer reader_img_ref = ImageFileReaderType::New();

WarperType average_func;
average_func.verbose = true;
average_func.useRigid = false;
// warper->SetInput(img_mov);
// warper->SetEdgePaddingValue( 0);
// VectorType pad;
Expand Down
24 changes: 15 additions & 9 deletions Utilities/itkAverageAffineTransformFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ struct HelperCommonType
ComputeAveragePartialParameters(InternalTransformListType & transform_list,
ParametersType & average_parameters,
unsigned int iStart,
unsigned int iEnd);
unsigned int iEnd, bool verbose);
};

template <typename T, typename TParametersValueType>
Expand All @@ -77,16 +77,16 @@ class HelperType<Dispatcher<2>, TParametersValueType>
typedef typename HelperCommonType<InternalAffineTransformType>::ParametersType ParametersType;

static void
ComputeAverageScaleParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageScaleParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageShearingParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageShearingParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageRotationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageRotationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageTranslationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageTranslationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);
};

// explicit specialization for 3D affine transform
Expand All @@ -104,16 +104,16 @@ class HelperType<Dispatcher<3>, TParametersValueType>
typedef typename HelperCommonType<InternalAffineTransformType>::ParametersType ParametersType;

static void
ComputeAverageScaleParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageScaleParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageShearingParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageShearingParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageRotationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageRotationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);

static void
ComputeAverageTranslationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters);
ComputeAverageTranslationParameters(InternalTransformListType & transform_list, ParametersType & average_parameters, bool verbose);
};
} // namespace AverageAffineTransformFunctionHelperNameSpace

Expand Down Expand Up @@ -160,6 +160,12 @@ class AverageAffineTransformFunction
void
AverageMultipleAffineTransform(const PointType & center_output, GenericAffineTransformPointerType & affine_output);

/** Whether progress and debugging information are printed to standard output (cout). */
bool verbose = false;

/** Set to false to ignore rotation and translation. */
bool useRigid = true;

#ifdef ITK_USE_CONCEPT_CHECKING
/** Begin concept checking */
itkConceptMacro(SameDimensionCheck1, (Concept::SameDimension<InputSpaceDimension, OutputSpaceDimension>));
Expand Down
Loading

0 comments on commit 4b13b0c

Please sign in to comment.