15 #ifndef itkLocalSimilarityMeasureGradientDescentOptimizer_h
16 #define itkLocalSimilarityMeasureGradientDescentOptimizer_h
18 #include <NifTKConfigure.h>
19 #include <itkSingleValuedNonLinearOptimizer.h>
32 template <
class TFixedImage,
class TMovingImage,
class TScalarType,
class TDeformationScalar>
34 public SingleValuedNonLinearOptimizer
50 itkStaticConstMacro(
Dimension,
unsigned int, TFixedImage::ImageDimension);
69 typedef typename DeformableTransformType::JacobianDeterminantFilterType::OutputImageType
JacobianImageType;
72 virtual void StartOptimization(
void )
override;
76 virtual void ResumeOptimization(
void );
80 virtual void StopOptimization(
void );
83 itkGetConstReferenceMacro( Maximize,
bool );
84 itkSetMacro( Maximize,
bool );
85 itkBooleanMacro( Maximize );
90 itkGetConstMacro( Value,
double );
95 itkGetConstMacro( Stop,
bool );
98 itkSetMacro( MaximumNumberOfIterations,
unsigned long int );
99 itkGetMacro( MaximumNumberOfIterations,
unsigned long int );
102 itkGetMacro( CurrentIteration,
unsigned long int );
105 itkSetMacro ( StepSize,
double );
106 itkGetMacro ( StepSize,
double );
109 itkSetMacro ( MinimumStepSize,
double );
110 itkGetMacro ( MinimumStepSize,
double );
113 itkSetMacro ( IteratingStepSizeReductionFactor,
double );
114 itkGetMacro ( IteratingStepSizeReductionFactor,
double );
117 itkSetMacro ( RegriddingStepSizeReductionFactor,
double );
118 itkGetMacro ( RegriddingStepSizeReductionFactor,
double );
121 itkSetMacro ( JacobianBelowZeroStepSizeReductionFactor,
double );
122 itkGetMacro ( JacobianBelowZeroStepSizeReductionFactor,
double );
125 itkSetMacro ( MinimumDeformationMagnitudeThreshold,
double );
126 itkGetMacro ( MinimumDeformationMagnitudeThreshold,
double );
129 itkSetMacro ( MinimumJacobianThreshold,
double );
130 itkGetMacro ( MinimumJacobianThreshold,
double );
133 itkSetObjectMacro(RegriddingInterpolator, RegriddingInterpolatorType);
134 itkGetConstObjectMacro(RegriddingInterpolator, RegriddingInterpolatorType );
141 itkSetMacro ( MinimumSimilarityChangeThreshold,
double );
142 itkGetMacro ( MinimumSimilarityChangeThreshold,
double );
147 itkSetMacro ( CheckSimilarityMeasure,
bool );
148 itkGetMacro ( CheckSimilarityMeasure,
bool );
153 itkSetMacro ( CheckMinDeformationMagnitudeThreshold,
bool );
154 itkGetMacro ( CheckMinDeformationMagnitudeThreshold,
bool );
159 itkSetMacro ( CheckJacobianBelowZero,
bool );
160 itkGetMacro ( CheckJacobianBelowZero,
bool );
163 itkSetMacro ( WriteNextParameters,
bool );
164 itkGetMacro ( WriteNextParameters,
bool );
167 itkSetMacro ( NextParametersFileName,
std::string );
168 itkGetMacro ( NextParametersFileName,
std::string );
171 itkSetMacro ( NextParametersFileExt,
std::string );
172 itkGetMacro ( NextParametersFileExt,
std::string );
175 itkSetMacro ( WriteDeformationField,
bool );
176 itkGetMacro ( WriteDeformationField,
bool );
179 itkSetMacro ( DeformationFieldFileName,
std::string );
180 itkGetMacro ( DeformationFieldFileName,
std::string );
183 itkSetMacro ( DeformationFieldFileExt,
std::string );
184 itkGetMacro ( DeformationFieldFileExt,
std::string );
187 itkSetMacro ( WriteRegriddedImage,
bool );
188 itkGetMacro ( WriteRegriddedImage,
bool );
191 itkSetMacro ( RegriddedImageFileName,
std::string );
192 itkGetMacro ( RegriddedImageFileName,
std::string );
195 itkSetMacro ( RegriddedImageFileExt,
std::string );
196 itkGetMacro ( RegriddedImageFileExt,
std::string );
199 itkSetMacro ( RegriddedMovingImagePadValue, MovingImagePixelType );
200 itkGetMacro ( RegriddedMovingImagePadValue, MovingImagePixelType );
203 itkSetMacro(IsAbsRegriddedImage,
bool);
204 itkGetMacro(IsAbsRegriddedImage,
bool);
209 itkSetMacro(IsPropagateRegriddedMovingImage,
bool);
210 itkGetMacro(IsPropagateRegriddedMovingImage,
bool);
217 return this->m_ComposedJacobian;
224 return this->m_RegriddedMovingImage;
231 return this->m_RegriddedFixedImage;
238 void PrintSelf(std::ostream& os, Indent indent)
const override;
312 virtual double CalculateNextStep(
int iterationNumber,
double currentSimilarity,
const ParametersType& current, ParametersType& next) = 0;
318 virtual void ReGrid(
bool isResetCurrentPosition);
325 typedef MultiplyImageFilter<JacobianImageType> MultiplyImageFilterType;
327 this->m_DeformableTransform->ComputeMinJacobian();
328 typename MultiplyImageFilterType::Pointer multiplyFilter = MultiplyImageFilterType::New();
329 multiplyFilter->SetInput1(this->m_ComposedJacobian);
330 multiplyFilter->SetInput2(this->m_DeformableTransform->GetJacobianImage());
331 multiplyFilter->Update();
332 this->m_ComposedJacobian = multiplyFilter->GetOutput();
333 this->m_ComposedJacobian->DisconnectPipeline();
413 void operator=(
const Self&);
419 #ifndef ITK_MANUAL_INSTANTIATION
420 #include "itkLocalSimilarityMeasureGradientDescentOptimizer.txx"
std::string m_DeformationFieldFileName
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:379
FixedImageType::Pointer FixedImageSmartPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:58
bool m_WriteNextParameters
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:367
double m_StepSize
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:267
Implement a gradient descent optimization suitable for FFD and Fluid deformation. ...
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:33
DeformableTransformType::JacobianDeterminantFilterType::OutputImageType JacobianImageType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:69
FixedImageSmartPointer m_RegriddedFixedImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:346
bool m_CheckJacobianBelowZero
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:303
double m_IteratingStepSizeReductionFactor
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:273
Abstract base class, implementing TemplateMethod [2] for similarity measures.
Definition: itkSimilarityMeasure.h:56
FixedImagePointer m_FixedImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:361
SingleValuedNonLinearOptimizer Superclass
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:42
FixedImageType * FixedImagePointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:57
RegriddingInterpolatorPointer m_RegriddingInterpolator
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:337
TFixedImage FixedImageType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:55
bool m_IsAbsRegriddedImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:306
unsigned long int m_MaximumNumberOfIterations
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:256
Definition: niftkITKAffineResampleImage.cxx:74
ParametersType m_NextParameters
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:352
std::string m_RegriddedImageFileExt
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:391
DeformableTransform< TFixedImage, TScalarType, Dimension, TDeformationScalar > DeformableTransformType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:62
std::string m_RegriddedImageFileName
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:388
DeformableTransformType::Pointer DeformableTransformPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:63
MovingImagePointer m_MovingImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:364
std::string m_NextParametersFileName
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:370
bool m_WriteRegriddedImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:385
double m_MinimumDeformationMagnitudeThreshold
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:284
ImageToImageMetricPointer m_ImageToImageMetric
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:358
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
LocalSimilarityMeasureGradientDescentOptimizer Self
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:41
ResampleFilterType::Pointer ResampleFilterPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:68
double m_MinimumStepSize
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:270
unsigned int m_CurrentIteration
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:261
MovingImageType * MovingImagePointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:61
JacobianImageType::Pointer m_ComposedJacobian
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:399
const ImageToImageMetricType * ImageToImageMetricPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:54
FixedImageType::PixelType FixedImagePixelType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:56
ResampleImageFilter< TFixedImage, TFixedImage > ResampleFilterType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:67
double m_MinimumSimilarityChangeThreshold
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:287
std::string m_DeformationFieldFileExt
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:382
RegriddingInterpolatorType::Pointer RegriddingInterpolatorPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:66
MovingImagePixelType m_RegriddedMovingImagePadValue
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:394
double m_MinimumJacobianThreshold
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:292
virtual void CleanUp()
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:315
ParametersType m_RegriddedParameters
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:355
virtual ~LocalSimilarityMeasureGradientDescentOptimizer()
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:237
bool m_Stop
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:251
unsigned int m_RegriddingNumber
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:264
bool m_CheckMinDeformationMagnitudeThreshold
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:300
virtual const FixedImageType * GetRegriddedMovingImage() const
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:222
virtual void ComposeJacobian()
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:323
bool m_Maximize
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:241
virtual const FixedImageType * GetRegriddedFixedImage() const
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:229
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
SmartPointer< Self > Pointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:43
DeformableTransformPointer m_DeformableTransform
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:349
SmartPointer< const Self > ConstPointer
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:44
Resample an image via a coordinate transform.
InterpolateImageFunction< TFixedImage, TScalarType > RegriddingInterpolatorType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:65
SimilarityMeasure< TFixedImage, TMovingImage > ImageToImageMetricType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:53
virtual void Initialize()
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:309
double m_Value
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:246
bool m_IsPropagateRegriddedMovingImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:408
FixedImageSmartPointer m_RegriddedMovingImage
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:343
double MeasureType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:64
double m_JacobianBelowZeroStepSizeReductionFactor
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:279
MovingImageType::PixelType MovingImagePixelType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:60
GLsizei const GLcharARB ** string
Definition: glew.h:5194
bool m_CheckSimilarityMeasure
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:297
std::string m_NextParametersFileExt
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:373
virtual const JacobianImageType * GetComposedJacobian() const
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:215
TMovingImage MovingImageType
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:59
double m_RegriddingStepSizeReductionFactor
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:276
bool m_WriteDeformationField
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:376
ResampleFilterPointer m_RegriddingResampler
Definition: itkLocalSimilarityMeasureGradientDescentOptimizer.h:340