SimpleITK  
sitkImageRegistrationMethod.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef sitkImageRegistrationMethod_h
19 #define sitkImageRegistrationMethod_h
20 
21 #include "sitkRegistration.h"
22 
23 #include "sitkDetail.h"
24 #include "sitkImage.h"
25 #include "sitkPixelIDTokens.h"
27 #include "sitkProcessObject.h"
28 
29 #include "sitkRandomSeed.h"
30 #include "sitkInterpolator.h"
31 #include "sitkTransform.h"
32 
33 
34 namespace itk
35 {
36 
37 #ifndef SWIG
38 template <typename TInternalComputationValueType>
39 class ObjectToObjectOptimizerBaseTemplate;
40 template <typename TFixedImage,
41  typename TMovingImage,
42  typename TVirtualImage,
43  typename TInternalComputationValueType,
44  typename TMetricTraits>
45 class ImageToImageMetricv4;
46 
47 template <typename TFixedImageType, typename TMovingImageType, typename TVirtualImageType, typename TCoordRep>
48 class DefaultImageToImageMetricTraitsv4;
49 
50 template <typename TMetric>
51 class RegistrationParameterScalesEstimator;
52 
53 template <unsigned int VDimension>
54 class SpatialObject;
55 
56 class Command;
57 class EventObject;
58 #endif
59 
60 
61 namespace simple
62 {
63 class BSplineTransform;
64 
89 {
90 public:
93 
94  ~ImageRegistrationMethod() override;
95 
97 
98  std::string
99  GetName() const override
100  {
101  return std::string("ImageRegistrationMethod");
102  }
103 
110  std::string
111  ToString() const override;
112 
119  {
120  return this->m_Interpolator;
121  }
122  SITK_RETURN_SELF_TYPE_HEADER
124  {
125  this->m_Interpolator = Interpolator;
126  return *this;
127  }
146 #if !defined(SWIG) || defined(JAVASWIG) || defined(CSHARPSWIG)
147  // Only wrap this method if the wrapping language is strongly typed
148  SITK_RETURN_SELF_TYPE_HEADER
149  SetInitialTransform(const Transform & transform);
150 #endif
151  SITK_RETURN_SELF_TYPE_HEADER
152  SetInitialTransform(Transform & transform, bool inPlace = true);
153  Transform
155  {
156  return this->m_InitialTransform;
157  }
158  bool
160  {
161  return this->m_InitialTransformInPlace;
162  }
180  void
181  SetInitialTransformAsBSpline(BSplineTransform & transform,
182  bool inPlace = true,
183  const std::vector<unsigned int> & scaleFactors = std::vector<unsigned int>());
184 
198  SITK_RETURN_SELF_TYPE_HEADER
200  {
201  this->m_MovingInitialTransform = transform;
202  return *this;
203  }
204  Transform
206  {
207  return this->m_MovingInitialTransform;
208  }
221  SITK_RETURN_SELF_TYPE_HEADER
223  {
224  this->m_FixedInitialTransform = transform;
225  return *this;
226  }
227  Transform
229  {
230  return this->m_FixedInitialTransform;
231  }
239  SITK_RETURN_SELF_TYPE_HEADER
240  SetVirtualDomain(const std::vector<uint32_t> & virtualSize,
241  const std::vector<double> & virtualOrigin,
242  const std::vector<double> & virtualSpacing,
243  const std::vector<double> & virtualDirection);
244  SITK_RETURN_SELF_TYPE_HEADER
245  SetVirtualDomainFromImage(const Image & virtualImage);
254  SITK_RETURN_SELF_TYPE_HEADER
255  SetMetricAsANTSNeighborhoodCorrelation(unsigned int radius);
256 
261  SITK_RETURN_SELF_TYPE_HEADER
262  SetMetricAsCorrelation();
263 
268  SITK_RETURN_SELF_TYPE_HEADER
269  SetMetricAsDemons(double intensityDifferenceThreshold = 0.001);
270 
275  SITK_RETURN_SELF_TYPE_HEADER
276  SetMetricAsJointHistogramMutualInformation(unsigned int numberOfHistogramBins = 20,
277  double varianceForJointPDFSmoothing = 1.5);
278 
283  SITK_RETURN_SELF_TYPE_HEADER
284  SetMetricAsMeanSquares();
285 
291  SITK_RETURN_SELF_TYPE_HEADER
292  SetMetricAsMattesMutualInformation(unsigned int numberOfHistogramBins = 50);
293 
294 
296  {
299  EachIteration
300  };
301 
306  SITK_RETURN_SELF_TYPE_HEADER
307  SetOptimizerAsConjugateGradientLineSearch(double learningRate,
308  unsigned int numberOfIterations,
309  double convergenceMinimumValue = 1e-6,
310  unsigned int convergenceWindowSize = 10,
311  double lineSearchLowerLimit = 0,
312  double lineSearchUpperLimit = 5.0,
313  double lineSearchEpsilon = 0.01,
314  unsigned int lineSearchMaximumIterations = 20,
315  EstimateLearningRateType estimateLearningRate = Once,
316  double maximumStepSizeInPhysicalUnits = 0.0);
317 
322  SITK_RETURN_SELF_TYPE_HEADER
323  SetOptimizerAsRegularStepGradientDescent(double learningRate,
324  double minStep,
325  unsigned int numberOfIterations,
326  double relaxationFactor = 0.5,
327  double gradientMagnitudeTolerance = 1e-4,
328  EstimateLearningRateType estimateLearningRate = Never,
329  double maximumStepSizeInPhysicalUnits = 0.0);
330 
335  SITK_RETURN_SELF_TYPE_HEADER
336  SetOptimizerAsGradientDescent(double learningRate,
337  unsigned int numberOfIterations,
338  double convergenceMinimumValue = 1e-6,
339  unsigned int convergenceWindowSize = 10,
340  EstimateLearningRateType estimateLearningRate = Once,
341  double maximumStepSizeInPhysicalUnits = 0.0);
342 
347  SITK_RETURN_SELF_TYPE_HEADER
348  SetOptimizerAsGradientDescentLineSearch(double learningRate,
349  unsigned int numberOfIterations,
350  double convergenceMinimumValue = 1e-6,
351  unsigned int convergenceWindowSize = 10,
352  double lineSearchLowerLimit = 0,
353  double lineSearchUpperLimit = 5.0,
354  double lineSearchEpsilon = 0.01,
355  unsigned int lineSearchMaximumIterations = 20,
356  EstimateLearningRateType estimateLearningRate = Once,
357  double maximumStepSizeInPhysicalUnits = 0.0);
358 
365  SITK_RETURN_SELF_TYPE_HEADER
366  SetOptimizerAsLBFGSB(double gradientConvergenceTolerance = 1e-5,
367  unsigned int numberOfIterations = 500,
368  unsigned int maximumNumberOfCorrections = 5,
369  unsigned int maximumNumberOfFunctionEvaluations = 2000,
370  double costFunctionConvergenceFactor = 1e+7,
371  double lowerBound = std::numeric_limits<double>::min(),
372  double upperBound = std::numeric_limits<double>::max(),
373  bool trace = false);
374 
387  SITK_RETURN_SELF_TYPE_HEADER
388  SetOptimizerAsLBFGS2(double solutionAccuracy = 1e-5,
389  unsigned int numberOfIterations = 0,
390  unsigned int hessianApproximateAccuracy = 6,
391  unsigned int deltaConvergenceDistance = 0,
392  double deltaConvergenceTolerance = 1e-5,
393  unsigned int lineSearchMaximumEvaluations = 40,
394  double lineSearchMinimumStep = 1e-20,
395  double lineSearchMaximumStep = 1e20,
396  double lineSearchAccuracy = 1e-4);
397 
398 
415  SITK_RETURN_SELF_TYPE_HEADER
416  SetOptimizerAsExhaustive(const std::vector<unsigned int> & numberOfSteps, double stepLength = 1.0);
417 
427  SITK_RETURN_SELF_TYPE_HEADER
428  SetOptimizerAsAmoeba(double simplexDelta,
429  unsigned int numberOfIterations,
430  double parametersConvergenceTolerance = 1e-8,
431  double functionConvergenceTolerance = 1e-4,
432  bool withRestarts = false);
433 
445  SITK_RETURN_SELF_TYPE_HEADER
446  SetOptimizerWeights(const std::vector<double> & weights);
447  std::vector<double>
448  GetOptimizerWeights() const;
455  SITK_RETURN_SELF_TYPE_HEADER
456  SetOptimizerAsPowell(unsigned int numberOfIterations = 100,
457  unsigned int maximumLineIterations = 100,
458  double stepLength = 1,
459  double stepTolerance = 1e-6,
460  double valueTolerance = 1e-6);
461 
470  SITK_RETURN_SELF_TYPE_HEADER
471  SetOptimizerAsOnePlusOneEvolutionary(unsigned int numberOfIterations = 100,
472  double epsilon = 1.5e-4,
473  double initialRadius = 1.01,
474  double growthFactor = -1.0,
475  double shrinkFactor = -1.0,
476  unsigned int seed = sitkWallClock);
477 
478 
480  SITK_RETURN_SELF_TYPE_HEADER
481  SetOptimizerScales(const std::vector<double> & scales);
482 
489  SITK_RETURN_SELF_TYPE_HEADER
490  SetOptimizerScalesFromJacobian(unsigned int centralRegionRadius = 5);
491 
497  SITK_RETURN_SELF_TYPE_HEADER
498  SetOptimizerScalesFromIndexShift(unsigned int centralRegionRadius = 5, double smallParameterVariation = 0.01);
499 
506  SITK_RETURN_SELF_TYPE_HEADER
507  SetOptimizerScalesFromPhysicalShift(unsigned int centralRegionRadius = 5, double smallParameterVariation = 0.01);
508 
509 
519  SITK_RETURN_SELF_TYPE_HEADER
520  SetMetricFixedMask(const Image & binaryMask);
521 
531  SITK_RETURN_SELF_TYPE_HEADER
532  SetMetricMovingMask(const Image & binaryMask);
533 
552  SITK_RETURN_SELF_TYPE_HEADER
553  SetMetricSamplingPercentage(double percentage, unsigned int seed = sitkWallClock);
554  SITK_RETURN_SELF_TYPE_HEADER
555  SetMetricSamplingPercentagePerLevel(const std::vector<double> & percentage, unsigned int seed = sitkWallClock);
559  const std::vector<double> &
560  GetMetricSamplingPercentagePerLevel() const;
561 
573  {
576  RANDOM
577  };
578 
583  SITK_RETURN_SELF_TYPE_HEADER
584  SetMetricSamplingStrategy(MetricSamplingStrategyType strategy);
585 
595  SITK_RETURN_SELF_TYPE_HEADER
596  SetMetricUseFixedImageGradientFilter(bool);
597  SITK_RETURN_SELF_TYPE_HEADER
599  {
600  return this->SetMetricUseFixedImageGradientFilter(true);
601  }
602  SITK_RETURN_SELF_TYPE_HEADER
604  {
605  return this->SetMetricUseFixedImageGradientFilter(false);
606  }
620  SITK_RETURN_SELF_TYPE_HEADER
621  SetMetricUseMovingImageGradientFilter(bool);
622  SITK_RETURN_SELF_TYPE_HEADER
624  {
625  return this->SetMetricUseMovingImageGradientFilter(true);
626  }
627  SITK_RETURN_SELF_TYPE_HEADER
629  {
630  return this->SetMetricUseMovingImageGradientFilter(false);
631  }
642  SITK_RETURN_SELF_TYPE_HEADER
643  SetShrinkFactorsPerLevel(const std::vector<unsigned int> & shrinkFactors);
644 
653  SITK_RETURN_SELF_TYPE_HEADER
654  SetSmoothingSigmasPerLevel(const std::vector<double> & smoothingSigmas);
655 
662  SITK_RETURN_SELF_TYPE_HEADER
663  SetSmoothingSigmasAreSpecifiedInPhysicalUnits(bool arg);
664  SITK_RETURN_SELF_TYPE_HEADER
666  {
667  this->SetSmoothingSigmasAreSpecifiedInPhysicalUnits(true);
668  return *this;
669  }
670  SITK_RETURN_SELF_TYPE_HEADER
672  {
673  this->SetSmoothingSigmasAreSpecifiedInPhysicalUnits(false);
674  return *this;
675  }
680  Transform
681  Execute(const Image & fixed, const Image & moving);
682 
683 
693  double
694  MetricEvaluate(const Image & fixed, const Image & moving);
695 
696 
703  unsigned int
704  GetOptimizerIteration() const;
705  std::vector<double>
706  GetOptimizerPosition() const;
707  double
708  GetOptimizerLearningRate() const;
709  double
710  GetOptimizerConvergenceValue() const;
711  double
712  GetMetricValue() const;
713 
722  uint64_t
723  GetMetricNumberOfValidPoints() const;
724 
725 
726  unsigned int
727  GetCurrentLevel() const;
728 
736  std::vector<double>
737  GetOptimizerScales() const;
738 
741  std::string
742  GetOptimizerStopConditionDescription() const;
743 
744 
753  bool
754  StopRegistration();
755 
756 protected:
757  template <class TImage>
758  Transform
759  ExecuteInternal(const Image & fixed, const Image & moving);
760 
761  template <class TImage>
762  double
763  EvaluateInternal(const Image & fixed, const Image & moving);
764 
765 
767  CreateOptimizer(unsigned int numberOfTransformParameters);
768 
769  template <unsigned int VDimension>
771  CreateSpatialObjectMask(const Image & mask);
772 
773  template <class TImageType>
774  itk::ImageToImageMetricv4<TImageType,
775  TImageType,
776  TImageType,
777  double,
779  CreateMetric();
780 
781  template <class TImageType>
782  void
783  SetupMetric(
784  itk::ImageToImageMetricv4<TImageType,
785  TImageType,
786  TImageType,
787  double,
789  const TImageType *,
790  const TImageType *);
791 
792  template <typename TMetric>
794  CreateScalesEstimator();
795 
796  template <typename TTransformAdaptorPointer, typename TRegistrationMethod>
797  std::vector<TTransformAdaptorPointer>
798  CreateTransformParametersAdaptor(TRegistrationMethod * method);
799 
800  void
801  PreUpdate(itk::ProcessObject * p) override;
802  void
803  OnActiveProcessDelete() noexcept override;
804  unsigned long
805  AddITKObserver(const itk::EventObject &, itk::Command *) override;
806  void
807  RemoveITKObserver(EventCommand & e) override;
808 
809 private:
810  std::function<unsigned int()> m_pfGetOptimizerIteration;
811  std::function<std::vector<double>()> m_pfGetOptimizerPosition;
812  std::function<double()> m_pfGetOptimizerLearningRate;
813  std::function<double()> m_pfGetOptimizerConvergenceValue;
814  std::function<double()> m_pfGetMetricValue;
815  std::function<uint64_t()> m_pfGetMetricNumberOfValidPoints;
816  std::function<std::vector<double>()> m_pfGetOptimizerScales;
817  std::function<std::string()> m_pfGetOptimizerStopConditionDescription;
818  std::function<void()> m_pfOptimizerStopRegistration;
819 
820 
821  std::function<unsigned int()> m_pfGetCurrentLevel;
822 
823  std::function<void(itk::TransformBase * outTransform)> m_pfUpdateWithBestValue;
824 
825  template <class TMemberFunctionPointer>
827  {
828  using ObjectType = typename ::detail::FunctionTraits<TMemberFunctionPointer>::ClassType;
829 
830  template <typename TImageType>
831  TMemberFunctionPointer
832  operator()() const
833  {
834  return &ObjectType::template EvaluateInternal<TImageType>;
835  }
836  };
837 
838  typedef Transform (ImageRegistrationMethod::*MemberFunctionType)(const Image & fixed, const Image & moving);
839  typedef double (ImageRegistrationMethod::*EvaluateMemberFunctionType)(const Image & fixed, const Image & moving);
840  friend struct detail::MemberFunctionAddressor<MemberFunctionType>;
841  std::unique_ptr<detail::MemberFunctionFactory<MemberFunctionType>> m_MemberFactory;
842  std::unique_ptr<detail::MemberFunctionFactory<EvaluateMemberFunctionType>> m_EvaluateMemberFactory;
843 
849 
850  std::vector<uint32_t> m_VirtualDomainSize;
851  std::vector<double> m_VirtualDomainOrigin;
852  std::vector<double> m_VirtualDomainSpacing;
853  std::vector<double> m_VirtualDomainDirection;
854 
855  // optimizer
857  {
867  LBFGS2
868  };
890  std::vector<unsigned int> m_OptimizerNumberOfSteps;
903  unsigned int m_OptimizerSeed;
912 
913 
914  std::vector<unsigned int> m_TransformBSplineScaleFactors;
915 
916  std::vector<double> m_OptimizerWeights;
917 
919  {
923  PhysicalShift
924  };
926  std::vector<double> m_OptimizerScales;
929 
930  // metric
932  {
938  MattesMutualInformation
939  };
941  unsigned int m_MetricRadius;
945 
948 
949  std::vector<double> m_MetricSamplingPercentage;
951  unsigned int m_MetricSamplingSeed;
952 
955 
956  std::vector<unsigned int> m_ShrinkFactorsPerLevel;
957  std::vector<double> m_SmoothingSigmasPerLevel;
959 
962  unsigned int m_Iteration;
964 
966 };
967 
968 } // namespace simple
969 } // namespace itk
970 
971 #endif // sitkImageRegistrationMethod_h
itk::simple::Image
The Image class for SimpleITK.
Definition: sitkImage.h:76
itk::simple::ImageRegistrationMethod::m_InitialTransformInPlace
bool m_InitialTransformInPlace
Definition: sitkImageRegistrationMethod.h:846
itk::simple::ImageRegistrationMethod::m_Iteration
unsigned int m_Iteration
Definition: sitkImageRegistrationMethod.h:962
itk::simple::ImageRegistrationMethod::SmoothingSigmasAreSpecifiedInPhysicalUnitsOn
Self & SmoothingSigmasAreSpecifiedInPhysicalUnitsOn()
Enable the smoothing sigmas for each level in physical units (default) or in terms of voxels.
Definition: sitkImageRegistrationMethod.h:665
itk::simple::ImageRegistrationMethod::m_MetricNumberOfHistogramBins
unsigned int m_MetricNumberOfHistogramBins
Definition: sitkImageRegistrationMethod.h:943
itk::simple::ImageRegistrationMethod::EvaluateMemberFunctionAddressor
Definition: sitkImageRegistrationMethod.h:826
sitkRandomSeed.h
itk::simple::ImageRegistrationMethod::SmoothingSigmasAreSpecifiedInPhysicalUnitsOff
Self & SmoothingSigmasAreSpecifiedInPhysicalUnitsOff()
Enable the smoothing sigmas for each level in physical units (default) or in terms of voxels.
Definition: sitkImageRegistrationMethod.h:671
itk::simple::ImageRegistrationMethod::m_OptimizerMaximumNumberOfFunctionEvaluations
unsigned int m_OptimizerMaximumNumberOfFunctionEvaluations
Definition: sitkImageRegistrationMethod.h:885
itk::simple::ImageRegistrationMethod::MetricUseMovingImageGradientFilterOff
Self & MetricUseMovingImageGradientFilterOff()
Enable image gradient computation by a filter.
Definition: sitkImageRegistrationMethod.h:628
itk::simple::InterpolatorEnum
InterpolatorEnum
Definition: sitkInterpolator.h:28
itk::simple::ImageRegistrationMethod::m_MetricValue
double m_MetricValue
Definition: sitkImageRegistrationMethod.h:961
itk::simple::ImageRegistrationMethod::m_OptimizerInitialRadius
double m_OptimizerInitialRadius
Definition: sitkImageRegistrationMethod.h:900
itk::simple::ImageRegistrationMethod::m_MetricSamplingStrategy
MetricSamplingStrategyType m_MetricSamplingStrategy
Definition: sitkImageRegistrationMethod.h:950
itk::simple::ImageRegistrationMethod::OptimizerType
OptimizerType
Definition: sitkImageRegistrationMethod.h:856
itk::simple::ImageRegistrationMethod::m_OptimizerMinimumStepLength
double m_OptimizerMinimumStepLength
Definition: sitkImageRegistrationMethod.h:871
itk::simple::ImageRegistrationMethod::m_OptimizerWeights
std::vector< double > m_OptimizerWeights
Definition: sitkImageRegistrationMethod.h:916
itk::simple::ImageRegistrationMethod::MetricType
MetricType
Definition: sitkImageRegistrationMethod.h:931
itk::simple::ImageRegistrationMethod::m_OptimizerConvergenceMinimumValue
double m_OptimizerConvergenceMinimumValue
Definition: sitkImageRegistrationMethod.h:881
itk::simple::Transform
A simplified wrapper around a variety of ITK transforms.
Definition: sitkTransform.h:86
itk::simple::detail::MemberFunctionAddressor
Definition: sitkDetail.h:29
itk::simple::ImageRegistrationMethod::m_MetricUseFixedImageGradientFilter
bool m_MetricUseFixedImageGradientFilter
Definition: sitkImageRegistrationMethod.h:953
itk::simple::ImageRegistrationMethod::Jacobian
@ Jacobian
Definition: sitkImageRegistrationMethod.h:921
itk::simple::ImageRegistrationMethod::m_OptimizerLowerBound
double m_OptimizerLowerBound
Definition: sitkImageRegistrationMethod.h:887
itk::simple::ImageRegistrationMethod::Exhaustive
@ Exhaustive
Definition: sitkImageRegistrationMethod.h:863
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchMaximumEvaluations
unsigned int m_OptimizerLineSearchMaximumEvaluations
Definition: sitkImageRegistrationMethod.h:908
itk::simple::ImageRegistrationMethod::m_OptimizerNumberOfIterations
unsigned int m_OptimizerNumberOfIterations
Definition: sitkImageRegistrationMethod.h:872
itk::simple::ImageRegistrationMethod::m_OptimizerSimplexDelta
double m_OptimizerSimplexDelta
Definition: sitkImageRegistrationMethod.h:892
itk::simple::ImageRegistrationMethod::RegularStepGradientDescent
@ RegularStepGradientDescent
Definition: sitkImageRegistrationMethod.h:859
itk::simple::ImageRegistrationMethod::m_OptimizerHessianApproximationAccuracy
unsigned int m_OptimizerHessianApproximationAccuracy
Definition: sitkImageRegistrationMethod.h:905
itk::simple::ImageRegistrationMethod::MetricUseFixedImageGradientFilterOn
Self & MetricUseFixedImageGradientFilterOn()
Enable image gradient computation by a filter.
Definition: sitkImageRegistrationMethod.h:598
SITKRegistration_EXPORT
#define SITKRegistration_EXPORT
Definition: sitkRegistration.h:32
sitkImage.h
itk::simple::ImageRegistrationMethod::OptimizerScalesType
OptimizerScalesType
Definition: sitkImageRegistrationMethod.h:918
itk::simple::ImageRegistrationMethod::EvaluateMemberFunctionAddressor::ObjectType
typename ::detail::FunctionTraits< TMemberFunctionPointer >::ClassType ObjectType
Definition: sitkImageRegistrationMethod.h:828
itk::RegistrationParameterScalesEstimator
Definition: sitkImageRegistrationMethod.h:51
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchMaximumStep
double m_OptimizerLineSearchMaximumStep
Definition: sitkImageRegistrationMethod.h:910
itk::simple::ImageRegistrationMethod::m_VirtualDomainDirection
std::vector< double > m_VirtualDomainDirection
Definition: sitkImageRegistrationMethod.h:853
itk::simple::ImageRegistrationMethod::m_OptimizerDeltaConvergenceTolerance
double m_OptimizerDeltaConvergenceTolerance
Definition: sitkImageRegistrationMethod.h:907
itk::simple::ImageRegistrationMethod::m_OptimizerConvergenceWindowSize
unsigned int m_OptimizerConvergenceWindowSize
Definition: sitkImageRegistrationMethod.h:882
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchMaximumIterations
unsigned int m_OptimizerLineSearchMaximumIterations
Definition: sitkImageRegistrationMethod.h:876
itk::simple::ImageRegistrationMethod::GetInterpolator
InterpolatorEnum GetInterpolator()
Set and get the interpolator to use.
Definition: sitkImageRegistrationMethod.h:118
itk::simple::ImageRegistrationMethod::m_MetricVarianceForJointPDFSmoothing
double m_MetricVarianceForJointPDFSmoothing
Definition: sitkImageRegistrationMethod.h:944
itk::simple::ImageRegistrationMethod::m_OptimizerTrace
bool m_OptimizerTrace
Definition: sitkImageRegistrationMethod.h:889
itk::simple::ImageRegistrationMethod::m_OptimizerSolutionAccuracy
double m_OptimizerSolutionAccuracy
Definition: sitkImageRegistrationMethod.h:904
itk::simple::ImageRegistrationMethod::m_MetricIntensityDifferenceThreshold
double m_MetricIntensityDifferenceThreshold
Definition: sitkImageRegistrationMethod.h:942
itk::simple::ImageRegistrationMethod::m_OptimizerLearningRate
double m_OptimizerLearningRate
Definition: sitkImageRegistrationMethod.h:870
itk::simple::ImageRegistrationMethod::MetricUseFixedImageGradientFilterOff
Self & MetricUseFixedImageGradientFilterOff()
Enable image gradient computation by a filter.
Definition: sitkImageRegistrationMethod.h:603
itk::simple::ImageRegistrationMethod::Correlation
@ Correlation
Definition: sitkImageRegistrationMethod.h:934
itk::simple::ImageRegistrationMethod::MetricUseMovingImageGradientFilterOn
Self & MetricUseMovingImageGradientFilterOn()
Enable image gradient computation by a filter.
Definition: sitkImageRegistrationMethod.h:623
itk::simple::Command
An implementation of the Command design pattern for callback.
Definition: sitkCommand.h:44
itk::simple::ImageRegistrationMethod::m_MetricMovingMaskImage
Image m_MetricMovingMaskImage
Definition: sitkImageRegistrationMethod.h:947
itk::simple::ImageRegistrationMethod::m_OptimizerMaximumNumberOfCorrections
unsigned int m_OptimizerMaximumNumberOfCorrections
Definition: sitkImageRegistrationMethod.h:884
itk::simple::ImageRegistrationMethod::m_MetricSamplingSeed
unsigned int m_MetricSamplingSeed
Definition: sitkImageRegistrationMethod.h:951
itk::simple::ImageRegistrationMethod::ConjugateGradientLineSearch
@ ConjugateGradientLineSearch
Definition: sitkImageRegistrationMethod.h:858
itk::simple::ImageRegistrationMethod::LBFGSB
@ LBFGSB
Definition: sitkImageRegistrationMethod.h:862
itk::simple::ImageRegistrationMethod::SetMovingInitialTransform
Self & SetMovingInitialTransform(const Transform &transform)
Set a fixed transform component towards moving domain.
Definition: sitkImageRegistrationMethod.h:199
sitkMemberFunctionFactory.h
itk::simple::ImageRegistrationMethod::REGULAR
@ REGULAR
Definition: sitkImageRegistrationMethod.h:575
itk::simple::ImageRegistrationMethod::m_SmoothingSigmasPerLevel
std::vector< double > m_SmoothingSigmasPerLevel
Definition: sitkImageRegistrationMethod.h:957
itk::simple::ImageRegistrationMethod::NONE
@ NONE
Definition: sitkImageRegistrationMethod.h:574
itk::simple::ImageRegistrationMethod::m_OptimizerType
OptimizerType m_OptimizerType
Definition: sitkImageRegistrationMethod.h:869
itk::simple::ImageRegistrationMethod::m_OptimizerWithRestarts
bool m_OptimizerWithRestarts
Definition: sitkImageRegistrationMethod.h:895
sitkDetail.h
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchLowerLimit
double m_OptimizerLineSearchLowerLimit
Definition: sitkImageRegistrationMethod.h:873
itk::simple::ImageRegistrationMethod::m_OptimizerFunctionConvergenceTolerance
double m_OptimizerFunctionConvergenceTolerance
Definition: sitkImageRegistrationMethod.h:894
itk::simple::ImageRegistrationMethod::EvaluateMemberFunctionAddressor::operator()
TMemberFunctionPointer operator()() const
Definition: sitkImageRegistrationMethod.h:832
itk::simple::ImageRegistrationMethod::m_OptimizerEstimateLearningRate
EstimateLearningRateType m_OptimizerEstimateLearningRate
Definition: sitkImageRegistrationMethod.h:877
itk::simple::ImageRegistrationMethod::OnePlusOneEvolutionary
@ OnePlusOneEvolutionary
Definition: sitkImageRegistrationMethod.h:866
sitkProcessObject.h
sitkRegistration.h
itk::simple::ImageRegistrationMethod::m_OptimizerScalesType
OptimizerScalesType m_OptimizerScalesType
Definition: sitkImageRegistrationMethod.h:925
itk::simple::ImageRegistrationMethod::Demons
@ Demons
Definition: sitkImageRegistrationMethod.h:935
itk::simple::ImageRegistrationMethod::m_OptimizerSeed
unsigned int m_OptimizerSeed
Definition: sitkImageRegistrationMethod.h:903
itk::simple::ImageRegistrationMethod::GetFixedInitialTransform
Transform GetFixedInitialTransform() const
Set transform mapping to the fixed domain.
Definition: sitkImageRegistrationMethod.h:228
itk::simple::ImageRegistrationMethod::m_VirtualDomainSpacing
std::vector< double > m_VirtualDomainSpacing
Definition: sitkImageRegistrationMethod.h:852
itk::simple::ImageRegistrationMethod::GradientDescentLineSearch
@ GradientDescentLineSearch
Definition: sitkImageRegistrationMethod.h:861
itk::Command
class ITK_FORWARD_EXPORT Command
itk::simple::ImageRegistrationMethod::m_OptimizerEpsilon
double m_OptimizerEpsilon
Definition: sitkImageRegistrationMethod.h:899
itk::simple::ImageRegistrationMethod::GetInitialTransform
Transform GetInitialTransform()
Set the initial transform and parameters to optimize.
Definition: sitkImageRegistrationMethod.h:154
itk::simple::ImageRegistrationMethod::m_MetricSamplingPercentage
std::vector< double > m_MetricSamplingPercentage
Definition: sitkImageRegistrationMethod.h:949
itk::simple::ImageRegistrationMethod::m_EvaluateMemberFactory
std::unique_ptr< detail::MemberFunctionFactory< EvaluateMemberFunctionType > > m_EvaluateMemberFactory
Definition: sitkImageRegistrationMethod.h:842
itk::simple::ImageRegistrationMethod::m_ActiveOptimizer
itk::ObjectToObjectOptimizerBaseTemplate< double > * m_ActiveOptimizer
Definition: sitkImageRegistrationMethod.h:965
itk::simple::ImageRegistrationMethod::m_OptimizerUpperBound
double m_OptimizerUpperBound
Definition: sitkImageRegistrationMethod.h:888
itk::DefaultImageToImageMetricTraitsv4
Definition: sitkImageRegistrationMethod.h:48
itk::simple::ImageRegistrationMethod::m_OptimizerNumberOfSteps
std::vector< unsigned int > m_OptimizerNumberOfSteps
Definition: sitkImageRegistrationMethod.h:890
itk::simple::ImageRegistrationMethod::m_VirtualDomainOrigin
std::vector< double > m_VirtualDomainOrigin
Definition: sitkImageRegistrationMethod.h:851
itk::SpatialObject
Definition: sitkImageRegistrationMethod.h:54
itk::simple::ImageRegistrationMethod::IndexShift
@ IndexShift
Definition: sitkImageRegistrationMethod.h:922
itk::simple::ImageRegistrationMethod::ANTSNeighborhoodCorrelation
@ ANTSNeighborhoodCorrelation
Definition: sitkImageRegistrationMethod.h:933
itk::simple::ImageRegistrationMethod::m_MemberFactory
std::unique_ptr< detail::MemberFunctionFactory< MemberFunctionType > > m_MemberFactory
Definition: sitkImageRegistrationMethod.h:841
itk::simple::ImageRegistrationMethod::m_ShrinkFactorsPerLevel
std::vector< unsigned int > m_ShrinkFactorsPerLevel
Definition: sitkImageRegistrationMethod.h:956
itk::simple::ImageRegistrationMethod::m_OptimizerMaximumLineIterations
unsigned int m_OptimizerMaximumLineIterations
Definition: sitkImageRegistrationMethod.h:896
itk::simple::ImageRegistrationMethod::m_OptimizerGrowthFactor
double m_OptimizerGrowthFactor
Definition: sitkImageRegistrationMethod.h:901
itk::simple::ImageRegistrationMethod::m_InitialTransform
Transform m_InitialTransform
Definition: sitkImageRegistrationMethod.h:845
itk::simple::ImageRegistrationMethod::m_MovingInitialTransform
Transform m_MovingInitialTransform
Definition: sitkImageRegistrationMethod.h:847
sitkInterpolator.h
itk::simple::ImageRegistrationMethod::m_OptimizerGradientMagnitudeTolerance
double m_OptimizerGradientMagnitudeTolerance
Definition: sitkImageRegistrationMethod.h:880
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchEpsilon
double m_OptimizerLineSearchEpsilon
Definition: sitkImageRegistrationMethod.h:875
itk::simple::ImageRegistrationMethod::Amoeba
@ Amoeba
Definition: sitkImageRegistrationMethod.h:864
itk::simple::ImageRegistrationMethod::m_MetricRadius
unsigned int m_MetricRadius
Definition: sitkImageRegistrationMethod.h:941
itk::simple::ImageRegistrationMethod::m_OptimizerRelaxationFactor
double m_OptimizerRelaxationFactor
Definition: sitkImageRegistrationMethod.h:879
itk::simple::ImageRegistrationMethod::m_OptimizerDeltaConvergenceDistance
unsigned int m_OptimizerDeltaConvergenceDistance
Definition: sitkImageRegistrationMethod.h:906
itk::simple::ImageRegistrationMethod::m_SmoothingSigmasAreSpecifiedInPhysicalUnits
bool m_SmoothingSigmasAreSpecifiedInPhysicalUnits
Definition: sitkImageRegistrationMethod.h:958
itk::simple::ImageRegistrationMethod::m_OptimizerShrinkFactor
double m_OptimizerShrinkFactor
Definition: sitkImageRegistrationMethod.h:902
itk::simple::ImageRegistrationMethod::m_OptimizerGradientConvergenceTolerance
double m_OptimizerGradientConvergenceTolerance
Definition: sitkImageRegistrationMethod.h:883
itk::simple::ImageRegistrationMethod::m_VirtualDomainSize
std::vector< uint32_t > m_VirtualDomainSize
Definition: sitkImageRegistrationMethod.h:850
sitkTransform.h
itk::simple::ImageRegistrationMethod::GetMovingInitialTransform
Transform GetMovingInitialTransform() const
Set a fixed transform component towards moving domain.
Definition: sitkImageRegistrationMethod.h:205
itk::simple::ImageRegistrationMethod::m_OptimizerCostFunctionConvergenceFactor
double m_OptimizerCostFunctionConvergenceFactor
Definition: sitkImageRegistrationMethod.h:886
itk::simple::ImageRegistrationMethod::Never
@ Never
Never run estimation, use provided value.
Definition: sitkImageRegistrationMethod.h:297
sitkPixelIDTokens.h
itk::simple::ImageRegistrationMethod
An interface method to the modular ITKv4 registration framework.
Definition: sitkImageRegistrationMethod.h:88
itk::simple::sitkWallClock
@ sitkWallClock
Definition: sitkRandomSeed.h:30
itk::simple::ImageRegistrationMethod::Powell
@ Powell
Definition: sitkImageRegistrationMethod.h:865
itk
itk::simple::ImageRegistrationMethod::GetInitialTransformInPlace
bool GetInitialTransformInPlace() const
Set the initial transform and parameters to optimize.
Definition: sitkImageRegistrationMethod.h:159
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchMinimumStep
double m_OptimizerLineSearchMinimumStep
Definition: sitkImageRegistrationMethod.h:909
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchUpperLimit
double m_OptimizerLineSearchUpperLimit
Definition: sitkImageRegistrationMethod.h:874
itk::simple::ImageRegistrationMethod::m_OptimizerLineSearchAccuracy
double m_OptimizerLineSearchAccuracy
Definition: sitkImageRegistrationMethod.h:911
itk::ProcessObject
itk::simple::ImageRegistrationMethod::m_OptimizerMaximumStepSizeInPhysicalUnits
double m_OptimizerMaximumStepSizeInPhysicalUnits
Definition: sitkImageRegistrationMethod.h:878
itk::simple::ImageRegistrationMethod::m_OptimizerScalesCentralRegionRadius
unsigned int m_OptimizerScalesCentralRegionRadius
Definition: sitkImageRegistrationMethod.h:927
itk::ProcessObject
class ITK_FORWARD_EXPORT ProcessObject
itk::ObjectToObjectOptimizerBaseTemplate< double >
itk::simple::ProcessObject
Base class for SimpleITK classes based on ProcessObject.
Definition: sitkProcessObject.h:54
itk::simple::ImageRegistrationMethod::m_OptimizerScalesSmallParameterVariation
double m_OptimizerScalesSmallParameterVariation
Definition: sitkImageRegistrationMethod.h:928
itk::ImageToImageMetricv4
Definition: sitkImageRegistrationMethod.h:45
itk::simple::ImageRegistrationMethod::m_MetricUseMovingImageGradientFilter
bool m_MetricUseMovingImageGradientFilter
Definition: sitkImageRegistrationMethod.h:954
itk::simple::ImageRegistrationMethod::SetInterpolator
Self & SetInterpolator(InterpolatorEnum Interpolator)
Set and get the interpolator to use.
Definition: sitkImageRegistrationMethod.h:123
itk::simple::ImageRegistrationMethod::Manual
@ Manual
Definition: sitkImageRegistrationMethod.h:920
itk::simple::ImageRegistrationMethod::m_MetricFixedMaskImage
Image m_MetricFixedMaskImage
Definition: sitkImageRegistrationMethod.h:946
itk::EventObject
itk::simple::ImageRegistrationMethod::m_OptimizerValueTolerance
double m_OptimizerValueTolerance
Definition: sitkImageRegistrationMethod.h:898
itk::simple::ImageRegistrationMethod::Once
@ Once
Estimate learning once each level, ignore provided values.
Definition: sitkImageRegistrationMethod.h:298
itk::simple::ImageRegistrationMethod::EstimateLearningRateType
EstimateLearningRateType
Definition: sitkImageRegistrationMethod.h:295
itk::simple::ImageRegistrationMethod::m_FixedInitialTransform
Transform m_FixedInitialTransform
Definition: sitkImageRegistrationMethod.h:848
itk::simple::BSplineTransform
A deformable transform over a bounded spatial domain using a BSpline representation for a 2D or 3D co...
Definition: sitkBSplineTransform.h:33
itk::simple::ImageRegistrationMethod::GradientDescent
@ GradientDescent
Definition: sitkImageRegistrationMethod.h:860
itk::simple::ImageRegistrationMethod::m_OptimizerScales
std::vector< double > m_OptimizerScales
Definition: sitkImageRegistrationMethod.h:926
itk::simple::ImageRegistrationMethod::GetName
std::string GetName() const override
Definition: sitkImageRegistrationMethod.h:99
itk::simple::ImageRegistrationMethod::MetricSamplingStrategyType
MetricSamplingStrategyType
Sampling strategies for obtaining points.
Definition: sitkImageRegistrationMethod.h:572
itk::simple::ImageRegistrationMethod::m_TransformBSplineScaleFactors
std::vector< unsigned int > m_TransformBSplineScaleFactors
Definition: sitkImageRegistrationMethod.h:914
itk::simple::ImageRegistrationMethod::m_OptimizerStepLength
double m_OptimizerStepLength
Definition: sitkImageRegistrationMethod.h:891
itk::simple::ImageRegistrationMethod::m_StopConditionDescription
std::string m_StopConditionDescription
Definition: sitkImageRegistrationMethod.h:960
itk::simple::ImageRegistrationMethod::m_Interpolator
InterpolatorEnum m_Interpolator
Definition: sitkImageRegistrationMethod.h:844
itk::TransformBaseTemplate
Definition: sitkTransform.h:32
itk::simple::ImageRegistrationMethod::m_MetricType
MetricType m_MetricType
Definition: sitkImageRegistrationMethod.h:940
itk::simple::ImageRegistrationMethod::m_NumberOfValidPoints
uint64_t m_NumberOfValidPoints
Definition: sitkImageRegistrationMethod.h:963
itk::simple::ImageRegistrationMethod::MeanSquares
@ MeanSquares
Definition: sitkImageRegistrationMethod.h:937
itk::simple::ImageRegistrationMethod::SetFixedInitialTransform
Self & SetFixedInitialTransform(const Transform &transform)
Set transform mapping to the fixed domain.
Definition: sitkImageRegistrationMethod.h:222
itk::simple::ImageRegistrationMethod::m_OptimizerParametersConvergenceTolerance
double m_OptimizerParametersConvergenceTolerance
Definition: sitkImageRegistrationMethod.h:893
itk::simple::ImageRegistrationMethod::m_OptimizerStepTolerance
double m_OptimizerStepTolerance
Definition: sitkImageRegistrationMethod.h:897
itk::simple::ImageRegistrationMethod::JointHistogramMutualInformation
@ JointHistogramMutualInformation
Definition: sitkImageRegistrationMethod.h:936