Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor AverageAffineTransformFunction #1684

Merged
merged 2 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading