18#ifndef itkTransformRigidityPenaltyTerm_h
19#define itkTransformRigidityPenaltyTerm_h
28#include "itkNeighborhood.h"
29#include "itkImageRegionIterator.h"
30#include "itkNeighborhoodOperatorImageFilter.h"
31#include "itkNeighborhoodIterator.h"
34#include "itkGrayscaleDilateImageFilter.h"
35#include "itkBinaryBallStructuringElement.h"
36#include "itkImageRegionIterator.h"
70template <
class TFixedImage,
class TScalarType>
89 using typename Superclass::CoordinateRepresentationType;
90 using typename Superclass::MovingImageType;
91 using typename Superclass::MovingImagePixelType;
93 using typename Superclass::MovingImageConstPointer;
94 using typename Superclass::FixedImageType;
96 using typename Superclass::FixedImageConstPointer;
97 using typename Superclass::FixedImageRegionType;
99 using typename Superclass::TransformPointer;
100 using typename Superclass::InputPointType;
101 using typename Superclass::OutputPointType;
102 using typename Superclass::TransformParametersType;
103 using typename Superclass::TransformJacobianType;
104 using typename Superclass::InterpolatorType;
105 using typename Superclass::InterpolatorPointer;
106 using typename Superclass::RealType;
107 using typename Superclass::GradientPixelType;
108 using typename Superclass::GradientImageType;
109 using typename Superclass::GradientImagePointer;
110 using typename Superclass::GradientImageFilterType;
111 using typename Superclass::GradientImageFilterPointer;
112 using typename Superclass::FixedImageMaskType;
113 using typename Superclass::FixedImageMaskPointer;
114 using typename Superclass::MovingImageMaskType;
115 using typename Superclass::MovingImageMaskPointer;
116 using typename Superclass::MeasureType;
117 using typename Superclass::DerivativeType;
119 using typename Superclass::ParametersType;
162 using NOIFType = NeighborhoodOperatorImageFilter<CoefficientImageType, CoefficientImageType>;
164 using RadiusType =
typename NeighborhoodIteratorType::RadiusType;
176 using DilateFilterType = GrayscaleDilateImageFilter<RigidityImageType, RigidityImageType, StructuringElementType>;
185 GetValue(
const ParametersType & parameters)
const override;
189 GetDerivative(
const ParametersType & parameters, DerivativeType & derivative)
const override;
199 DerivativeType & derivative)
const override;
210 itkSetClampMacro(LinearityConditionWeight,
ScalarType, 0.0, NumericTraits<ScalarType>::max());
214 itkSetClampMacro(OrthonormalityConditionWeight,
ScalarType, 0.0, NumericTraits<ScalarType>::max());
218 itkSetClampMacro(PropernessConditionWeight,
ScalarType, 0.0, NumericTraits<ScalarType>::max());
222 itkSetMacro(UseLinearityCondition,
bool);
225 itkSetMacro(UseOrthonormalityCondition,
bool);
228 itkSetMacro(UsePropernessCondition,
bool);
233 itkSetMacro(CalculateLinearityCondition,
bool);
238 itkSetMacro(CalculateOrthonormalityCondition,
bool);
243 itkSetMacro(CalculatePropernessCondition,
bool);
246 itkGetConstReferenceMacro(LinearityConditionValue, MeasureType);
249 itkGetConstReferenceMacro(OrthonormalityConditionValue, MeasureType);
252 itkGetConstReferenceMacro(PropernessConditionValue, MeasureType);
255 itkGetConstReferenceMacro(LinearityConditionGradientMagnitude, MeasureType);
258 itkGetConstReferenceMacro(OrthonormalityConditionGradientMagnitude, MeasureType);
261 itkGetConstReferenceMacro(PropernessConditionGradientMagnitude, MeasureType);
267 itkSetMacro(DilateRigidityImages,
bool);
270 itkSetClampMacro(DilationRadiusMultiplier,
271 CoordinateRepresentationType,
273 NumericTraits<CoordinateRepresentationType>::max());
282 itkSetMacro(UseFixedRigidityImage,
bool);
285 itkSetMacro(UseMovingRigidityImage,
bool);
299 PrintSelf(std::ostream & os, Indent indent)
const override;
309 const std::string & whichF,
310 const unsigned int WhichDimension,
359#ifndef ITK_MANUAL_INSTANTIATION
360# include "itkTransformRigidityPenaltyTerm.hxx"
typename BSplineOrder1TransformType::Pointer BSplineOrder1TransformPointer
typename ImageSamplerType::OutputVectorContainerPointer ImageSampleContainerPointer
typename FixedImageType::PixelType FixedImagePixelType
typename DerivativeType::ValueType DerivativeValueType
typename ImageSamplerType::OutputVectorContainerType ImageSampleContainerType
typename MovingImageType::Pointer MovingImagePointer
typename BSplineOrder3TransformType::Pointer BSplineOrder3TransformPointer
typename FixedImageType::Pointer FixedImagePointer
typename BSplineOrder2TransformType::Pointer BSplineOrder2TransformPointer