18 #ifndef sitkDisplacementFieldTransform_h
19 #define sitkDisplacementFieldTransform_h
64 std::string
GetName()
const override {
return std::string (
"DisplacementFieldTransform"); }
78 SITK_RETURN_SELF_TYPE_HEADER SetDisplacementField(
Image &);
83 Image GetDisplacementField()
const;
88 SITK_RETURN_SELF_TYPE_HEADER SetInverseDisplacementField(
Image &);
93 Image GetInverseDisplacementField()
const;
99 SITK_RETURN_SELF_TYPE_HEADER SetSmoothingOff();
100 SITK_RETURN_SELF_TYPE_HEADER SetSmoothingGaussianOnUpdate(
double varianceForUpdateField=1.75,
double varianceForTotalField=0.5 );
101 SITK_RETURN_SELF_TYPE_HEADER SetSmoothingBSplineOnUpdate(
const std::vector<unsigned int> &numberOfControlPointsForUpdateField = std::vector<unsigned int>(3,4),
102 const std::vector<unsigned int> &numberOfControlPointsForTotalField = std::vector<unsigned int>(3,4),
103 bool enforceStationaryBoundary=
true,
104 unsigned int order=3 );
109 void SetPimpleTransform(std::unique_ptr<PimpleTransformBase> && pimpleTransform )
override;
117 template<
typename TransformType >
118 void operator() ( )
const
120 TransformType *t =
dynamic_cast<TransformType*
>(transform);
121 if (t && (
typeid(*t) ==
typeid(TransformType)))
130 template <
typename TransformType>
131 void InternalInitialization(TransformType *transform);
133 template<
typename TDisplacementFieldTransform >
134 static Image InternalGetDisplacementField(
const TDisplacementFieldTransform *itkDisplacementTx );
135 template<
typename TDisplacementFieldTransform >
136 static Image InternalGetInverseDisplacementField(
const TDisplacementFieldTransform *itkDisplacementTx );
138 template<
typename TDisplacementFieldTransform >
139 void InternalSetSmoothingOff(TDisplacementFieldTransform *itkDisplacement);
140 template<
typename TDisplacementFieldTransform >
141 void InternalSetSmoothingGaussianOnUpdate( TDisplacementFieldTransform *itkDisplacement,
142 double varianceForUpdateField,
143 double varianceForTotalField );
144 template<
typename TDisplacementFieldTransform >
145 void InternalSetSmoothingBSplineOnUpdate( TDisplacementFieldTransform *itkDisplacement,
146 const std::vector<unsigned int> &numberOfControlPointsForUpdateField,
147 const std::vector<unsigned int> &numberOfControlPointsForTotalField,
148 bool enforceStationaryBoundary,
149 unsigned int order );
152 static PimpleTransformBase *CreateDisplacementFieldPimpleTransform(
unsigned int dimension);
171 #endif // sitkDisplacementFieldTransform_h