ITK  5.4.0
Insight Toolkit
itkImageToImageMetric.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  * https://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 itkImageToImageMetric_h
19 #define itkImageToImageMetric_h
20 
25 #include "itkSpatialObject.h"
27 #include "itkMultiThreaderBase.h"
28 
29 #include <memory> // For unique_ptr.
30 
31 namespace itk
32 {
53 template <typename TFixedImage, typename TMovingImage>
54 class ITK_TEMPLATE_EXPORT ImageToImageMetric : public SingleValuedCostFunction
55 {
56 public:
57  ITK_DISALLOW_COPY_AND_MOVE(ImageToImageMetric);
58 
64 
66  using CoordinateRepresentationType = typename Superclass::ParametersValueType;
67 
70 
72  using MovingImageType = TMovingImage;
73  using MovingImagePixelType = typename TMovingImage::PixelType;
75 
77  using FixedImageType = TFixedImage;
78  using FixedImagePixelType = typename TFixedImage::PixelType;
81 
83  static constexpr unsigned int MovingImageDimension = TMovingImage::ImageDimension;
84  static constexpr unsigned int FixedImageDimension = TFixedImage::ImageDimension;
85 
88 
94 
101 
102  using FixedImageIndexContainer = std::vector<FixedImageIndexType>;
103 
106 
114 
116 
122 
128 
130  using typename Superclass::MeasureType;
131 
133  using typename Superclass::DerivativeType;
134 
136  using typename Superclass::ParametersType;
137 
139  itkSetConstObjectMacro(FixedImage, FixedImageType);
140  itkGetConstObjectMacro(FixedImage, FixedImageType);
144  itkSetConstObjectMacro(MovingImage, MovingImageType);
145  itkGetConstObjectMacro(MovingImage, MovingImageType);
149  itkSetObjectMacro(Transform, TransformType);
150 
152  itkGetModifiableObjectMacro(Transform, TransformType);
153 
155  itkSetObjectMacro(Interpolator, InterpolatorType);
156 
158  itkGetModifiableObjectMacro(Interpolator, InterpolatorType);
159 
163  {
164  return this->GetNumberOfPixelsCounted();
165  }
166 
167  itkGetConstReferenceMacro(NumberOfPixelsCounted, SizeValueType);
168 
170  virtual void
171  SetFixedImageRegion(const FixedImageRegionType reg);
172 
174  itkGetConstReferenceMacro(FixedImageRegion, FixedImageRegionType);
175 
177  itkSetObjectMacro(MovingImageMask, MovingImageMaskType);
178  itkSetConstObjectMacro(MovingImageMask, MovingImageMaskType);
179  itkGetConstObjectMacro(MovingImageMask, MovingImageMaskType);
183  itkSetObjectMacro(FixedImageMask, FixedImageMaskType);
184  itkSetConstObjectMacro(FixedImageMask, FixedImageMaskType);
185  itkGetConstObjectMacro(FixedImageMask, FixedImageMaskType);
190  void
191  SetFixedImageIndexes(const FixedImageIndexContainer & indexes);
192 
193  void
194  SetUseFixedImageIndexes(bool useIndexes);
195 
196  itkGetConstReferenceMacro(UseFixedImageIndexes, bool);
197 
199  void
200  SetNumberOfWorkUnits(ThreadIdType numberOfThreads);
201  itkGetConstReferenceMacro(NumberOfWorkUnits, ThreadIdType);
205  itkSetMacro(ComputeGradient, bool);
206  itkGetConstReferenceMacro(ComputeGradient, bool);
207  itkBooleanMacro(ComputeGradient);
211  virtual void
212  ComputeGradient();
213 
215  itkGetModifiableObjectMacro(GradientImage, GradientImageType);
216 
218  void
219  SetTransformParameters(const ParametersType & parameters) const;
220 
222  unsigned int
223  GetNumberOfParameters() const override
224  {
225  return m_Transform->GetNumberOfParameters();
226  }
227 
229  virtual void
230  Initialize();
231 
233  virtual void
234  MultiThreadingInitialize();
235 
240  virtual void
241  SetNumberOfFixedImageSamples(SizeValueType numSamples);
242  itkGetConstReferenceMacro(NumberOfFixedImageSamples, SizeValueType);
247  void
249  {
250  this->SetNumberOfFixedImageSamples(num);
251  }
252 
255  {
256  return this->GetNumberOfFixedImageSamples();
257  }
258 
261  void
262  SetFixedImageSamplesIntensityThreshold(const FixedImagePixelType & thresh);
263 
264  itkGetConstReferenceMacro(FixedImageSamplesIntensityThreshold, FixedImagePixelType);
265 
266  void
267  SetUseFixedImageSamplesIntensityThreshold(bool useThresh);
268 
269  itkGetConstReferenceMacro(UseFixedImageSamplesIntensityThreshold, bool);
270 
274  void
275  SetUseAllPixels(bool useAllPixels);
276 
277  void
279  {
280  this->SetUseAllPixels(true);
281  }
282 
283  void
285  {
286  this->SetUseAllPixels(false);
287  }
288 
289  itkGetConstReferenceMacro(UseAllPixels, bool);
290 
295  void
296  SetUseSequentialSampling(bool useSequential);
297 
298  itkGetConstReferenceMacro(UseSequentialSampling, bool);
299 
309  void
310  ReinitializeSeed();
311  void
312  ReinitializeSeed(int seed);
331  itkSetMacro(UseCachingOfBSplineWeights, bool);
332  itkGetConstReferenceMacro(UseCachingOfBSplineWeights, bool);
333  itkBooleanMacro(UseCachingOfBSplineWeights);
338  itkGetModifiableObjectMacro(Threader, MultiThreaderType);
339  const TransformPointer *
341  {
342  return m_ThreaderTransform.get();
343  }
346 protected:
348  ~ImageToImageMetric() override = default;
349 
350  void
351  PrintSelf(std::ostream & os, Indent indent) const override;
352 
359  {
360  public:
362  {
363  point.Fill(0.0);
364  value = 0;
365  valueIndex = 0;
366  }
367 
368  ~FixedImageSamplePoint() = default;
369 
370  inline friend std::ostream &
371  operator<<(std::ostream & os, const FixedImageSamplePoint & val)
372  {
373  os << "point: " << static_cast<typename NumericTraits<FixedImagePointType>::PrintType>(val.point) << std::endl;
374  os << "value: " << val.value << std::endl;
375  os << "valueIndex: " << val.valueIndex << std::endl;
376 
377  return os;
378  }
379 
380  public:
382  double value;
383  unsigned int valueIndex;
384  };
385 
386  bool m_UseFixedImageIndexes{ false };
387  FixedImageIndexContainer m_FixedImageIndexes{};
388 
389  bool m_UseFixedImageSamplesIntensityThreshold{ false };
390  FixedImagePixelType m_FixedImageSamplesIntensityThreshold{};
391 
393  using FixedImageSampleContainer = std::vector<FixedImageSamplePoint>;
394 
399  virtual void
400  SampleFixedImageRegion(FixedImageSampleContainer & samples) const;
401 
403  virtual void
404  SampleFixedImageIndexes(FixedImageSampleContainer & samples) const;
405 
410  virtual void
411  SampleFullFixedImageRegion(FixedImageSampleContainer & samples) const;
412 
414  FixedImageSampleContainer m_FixedImageSamples{};
415 
416  SizeValueType m_NumberOfParameters{ 0 };
417 
418  SizeValueType m_NumberOfFixedImageSamples{ 50000 };
419  // m_NumberOfPixelsCounted must be mutable because the const
420  // thread consolidation functions merge each work unit's values
421  // onto this accumulator variable.
422  mutable SizeValueType m_NumberOfPixelsCounted{ 0 };
423 
424  FixedImageConstPointer m_FixedImage{};
425  MovingImageConstPointer m_MovingImage{};
426 
428  TransformPointer m_Transform{};
429 
432  std::unique_ptr<TransformPointer[]> m_ThreaderTransform;
433 
434  InterpolatorPointer m_Interpolator{};
435 
436  bool m_ComputeGradient{ true };
437  GradientImagePointer m_GradientImage{};
438 
439  FixedImageMaskConstPointer m_FixedImageMask{};
440  MovingImageMaskConstPointer m_MovingImageMask{};
441 
442  ThreadIdType m_NumberOfWorkUnits{ 1 };
443 
444  bool m_UseAllPixels{ false };
445  bool m_UseSequentialSampling{ false };
446 
447  bool m_ReseedIterator{ false };
448 
449  mutable int m_RandomSeed{};
450 
458  bool m_TransformIsBSpline{ false };
459 
462  SizeValueType m_NumBSplineWeights{ 0 };
463 
464  static constexpr unsigned int DeformationSplineOrder = 3;
465 
466  using BSplineTransformType =
468 
470  using WeightsValueType = typename BSplineTransformWeightsType::ValueType;
472 
474  using IndexValueType = typename BSplineTransformIndexArrayType::ValueType;
476 
477  using MovingImagePointArrayType = std::vector<MovingImagePointType>;
478  using BooleanArrayType = std::vector<bool>;
486 
490 
491  typename BSplineTransformType::Pointer m_BSplineTransform{};
492 
493  BSplineTransformWeightsArrayType m_BSplineTransformWeightsArray{};
494  BSplineTransformIndicesArrayType m_BSplineTransformIndicesArray{};
495  MovingImagePointArrayType m_BSplinePreTransformPointsArray{};
496  BooleanArrayType m_WithinBSplineSupportRegionArray{};
497 
498  BSplineParametersOffsetType m_BSplineParametersOffset{};
499 
500  // Variables needed for optionally caching values when using a BSpline
501  // transform.
502  bool m_UseCachingOfBSplineWeights{ true };
503  mutable BSplineTransformWeightsType m_BSplineTransformWeights{};
504  mutable BSplineTransformIndexArrayType m_BSplineTransformIndices{};
505 
506  mutable std::unique_ptr<BSplineTransformWeightsType[]> m_ThreaderBSplineTransformWeights;
507  mutable std::unique_ptr<BSplineTransformIndexArrayType[]> m_ThreaderBSplineTransformIndices;
508 
510  virtual void
511  PreComputeTransformValues();
512 
517  virtual void
518  TransformPoint(unsigned int sampleNumber,
519  MovingImagePointType & mappedPoint,
520  bool & sampleOk,
521  double & movingImageValue,
522  ThreadIdType threadId) const;
523 
528  virtual void
529  TransformPointWithDerivatives(unsigned int sampleNumber,
530  MovingImagePointType & mappedPoint,
531  bool & sampleOk,
532  double & movingImageValue,
533  ImageDerivativesType & movingImageGradient,
534  ThreadIdType threadId) const;
535 
537  bool m_InterpolatorIsBSpline{ false };
538 
540  typename BSplineInterpolatorType::Pointer m_BSplineInterpolator{};
541 
543  typename DerivativeFunctionType::Pointer m_DerivativeCalculator{};
544 
548  virtual void
549  ComputeImageDerivatives(const MovingImagePointType & mappedPoint,
550  ImageDerivativesType & gradient,
551  ThreadIdType threadId) const;
552 
566  {
567  public:
569  : m_ConstMetricPointer{ i2i_metricPointer }
570  {}
571  const ImageToImageMetric *
573  {
574  return m_ConstMetricPointer;
575  }
578  private:
580  };
581 
590  {
591  public:
592  MultiThreaderWorkUnitInfoImageToImageMetricWrapper(const void * workunitInfoAsVoid)
593  : m_WorkUnitInfo(static_cast<const typename MultiThreaderType::WorkUnitInfo *>(workunitInfoAsVoid))
594  {}
596  GetThreadId() const
597  {
598  return m_WorkUnitInfo->WorkUnitID;
599  }
600  const ImageToImageMetric *
602  {
603  return (static_cast<ConstantPointerWrapper *>(m_WorkUnitInfo->UserData))->GetConstMetricPointer();
604  }
607  private:
609  };
610 
612  std::unique_ptr<ConstantPointerWrapper> m_ConstSelfWrapper;
613  mutable std::unique_ptr<unsigned int[]> m_ThreaderNumberOfMovingImageSamples;
614  bool m_WithinThreadPreProcess{ false };
615  bool m_WithinThreadPostProcess{ false };
616 
617  void
618  GetValueMultiThreadedInitiate() const;
619 
620  void
621  GetValueMultiThreadedPostProcessInitiate() const;
622 
625  GetValueMultiThreaded(void * workunitInfoAsVoid);
626 
629  GetValueMultiThreadedPostProcess(void * workunitInfoAsVoid);
630 
632  virtual inline void
633  GetValueThread(ThreadIdType threadId) const;
634 
636  virtual inline void
637  GetValueThreadPreProcess(ThreadIdType itkNotUsed(threadId), bool itkNotUsed(withinSampleThread)) const
638  {}
639  virtual inline bool
641  SizeValueType itkNotUsed(fixedImageSample),
642  const MovingImagePointType & itkNotUsed(mappedPoint),
643  double itkNotUsed(movingImageValue)) const
644  {
645  return false;
646  }
647  virtual inline void
648  GetValueThreadPostProcess(ThreadIdType itkNotUsed(threadId), bool itkNotUsed(withinSampleThread)) const
649  {}
652  void
653  GetValueAndDerivativeMultiThreadedInitiate() const;
654 
655  void
656  GetValueAndDerivativeMultiThreadedPostProcessInitiate() const;
657 
659  GetValueAndDerivativeMultiThreaded(void * workunitInfoAsVoid);
660 
662  GetValueAndDerivativeMultiThreadedPostProcess(void * workunitInfoAsVoid);
663 
664  virtual inline void
665  GetValueAndDerivativeThread(ThreadIdType threadId) const;
666 
667  virtual inline void
668  GetValueAndDerivativeThreadPreProcess(ThreadIdType itkNotUsed(threadId), bool itkNotUsed(withinSampleThread)) const
669  {}
670  virtual inline bool
672  SizeValueType itkNotUsed(fixedImageSample),
673  const MovingImagePointType & itkNotUsed(mappedPoint),
674  double itkNotUsed(movingImageValue),
675  const ImageDerivativesType & itkNotUsed(movingImageGradientValue)) const
676  {
677  return false;
678  }
679  virtual inline void
680  GetValueAndDerivativeThreadPostProcess(ThreadIdType itkNotUsed(threadId), bool itkNotUsed(withinSampleThread)) const
681  {}
682 
688  virtual void
689  SynchronizeTransforms() const;
690 
691 private:
692  FixedImageRegionType m_FixedImageRegion{};
693 };
694 } // end namespace itk
695 
696 #ifndef ITK_MANUAL_INSTANTIATION
697 # include "itkImageToImageMetric.hxx"
698 #endif
699 
700 #endif
itk::ImageToImageMetric::FixedImageConstPointer
typename FixedImageType::ConstPointer FixedImageConstPointer
Definition: itkImageToImageMetric.h:79
Pointer
SmartPointer< Self > Pointer
Definition: itkAddImageFilter.h:93
itk::MultiThreaderBase
A class for performing multithreaded execution.
Definition: itkMultiThreaderBase.h:106
itk::ImageToImageMetric
Computes similarity between regions of two images.
Definition: itkImageToImageMetric.h:54
itk::ImageToImageMetric::MultiThreaderWorkUnitInfoImageToImageMetricWrapper::m_WorkUnitInfo
const MultiThreaderType::WorkUnitInfo * m_WorkUnitInfo
Definition: itkImageToImageMetric.h:608
itk::ImageToImageMetric::MovingImageMaskConstPointer
typename MovingImageMaskType::ConstPointer MovingImageMaskConstPointer
Definition: itkImageToImageMetric.h:127
itk::OptimizerParameters
Class to hold and manage different parameter types used during optimization.
Definition: itkOptimizerParameters.h:36
itk::ImageToImageMetric::WeightsValueType
typename BSplineTransformWeightsType::ValueType WeightsValueType
Definition: itkImageToImageMetric.h:470
itk::ImageToImageMetric::MovingImageIndexType
typename MovingImageType::IndexType MovingImageIndexType
Definition: itkImageToImageMetric.h:98
ConstPointer
SmartPointer< const Self > ConstPointer
Definition: itkAddImageFilter.h:94
itk::ImageToImageMetric::MovingImagePointArrayType
std::vector< MovingImagePointType > MovingImagePointArrayType
Definition: itkImageToImageMetric.h:477
itk::ImageToImageMetric::GetValueAndDerivativeThreadPreProcess
virtual void GetValueAndDerivativeThreadPreProcess(ThreadIdType, bool) const
Definition: itkImageToImageMetric.h:668
itk::ImageToImageMetric::FixedImageSamplePoint::valueIndex
unsigned int valueIndex
Definition: itkImageToImageMetric.h:383
itk::ImageToImageMetric::GetValueAndDerivativeThreadPostProcess
virtual void GetValueAndDerivativeThreadPostProcess(ThreadIdType, bool) const
Definition: itkImageToImageMetric.h:680
itk::ImageToImageMetric::m_ConstSelfWrapper
std::unique_ptr< ConstantPointerWrapper > m_ConstSelfWrapper
Definition: itkImageToImageMetric.h:612
itk::MultiThreaderBase::WorkUnitInfo
Definition: itkMultiThreaderBase.h:291
itk::ImageToImageMetric::FixedImagePointType
typename TransformType::InputPointType FixedImagePointType
Definition: itkImageToImageMetric.h:99
itk::ImageToImageMetric::GetNumberOfMovingImageSamples
SizeValueType GetNumberOfMovingImageSamples()
Definition: itkImageToImageMetric.h:162
itk::ImageToImageMetric::FixedImageIndexValueType
typename FixedImageIndexType::IndexValueType FixedImageIndexValueType
Definition: itkImageToImageMetric.h:97
itk::operator<<
std::ostream & operator<<(std::ostream &os, const Array< TValue > &arr)
Definition: itkArray.h:216
itk::ImageToImageMetric::MultiThreaderWorkUnitInfoImageToImageMetricWrapper::MultiThreaderWorkUnitInfoImageToImageMetricWrapper
MultiThreaderWorkUnitInfoImageToImageMetricWrapper(const void *workunitInfoAsVoid)
Definition: itkImageToImageMetric.h:592
itk::BSplineInterpolateImageFunction
Evaluates the B-Spline interpolation of an image. Spline order may be from 0 to 5.
Definition: itkBSplineInterpolateImageFunction.h:83
itk::ImageToImageMetric::TransformParametersType
typename TransformType::ParametersType TransformParametersType
Definition: itkImageToImageMetric.h:92
itk::BSplineBaseTransform::WeightsType
typename WeightsFunctionType::WeightsType WeightsType
Definition: itkBSplineBaseTransform.h:235
itk::ImageToImageMetric::ConstantPointerWrapper::ConstantPointerWrapper
ConstantPointerWrapper(ImageToImageMetric *i2i_metricPointer)
Definition: itkImageToImageMetric.h:568
itkSpatialObject.h
itk::ImageToImageMetric::GetValueThreadProcessSample
virtual bool GetValueThreadProcessSample(ThreadIdType, SizeValueType, const MovingImagePointType &, double) const
Definition: itkImageToImageMetric.h:640
itk::ImageToImageMetric::GetNumberOfParameters
unsigned int GetNumberOfParameters() const override
Definition: itkImageToImageMetric.h:223
itk::ImageToImageMetric::FixedImageIndexContainer
std::vector< FixedImageIndexType > FixedImageIndexContainer
Definition: itkImageToImageMetric.h:102
itk::ImageToImageMetric::RealType
typename NumericTraits< MovingImagePixelType >::RealType RealType
Definition: itkImageToImageMetric.h:108
itk::ImageToImageMetric::TransformJacobianType
typename TransformType::JacobianType TransformJacobianType
Definition: itkImageToImageMetric.h:93
itk::ImageToImageMetric::UseAllPixelsOff
void UseAllPixelsOff()
Definition: itkImageToImageMetric.h:284
itk::ImageToImageMetric::ConstantPointerWrapper
Definition: itkImageToImageMetric.h:565
itk::CentralDifferenceImageFunction
Calculate the derivative by central differencing.
Definition: itkCentralDifferenceImageFunction.h:76
itk::ImageToImageMetric::MovingImagePointType
typename TransformType::OutputPointType MovingImagePointType
Definition: itkImageToImageMetric.h:100
Threader
itk::ImageToImageMetric::m_ThreaderNumberOfMovingImageSamples
std::unique_ptr< unsigned int[]> m_ThreaderNumberOfMovingImageSamples
Definition: itkImageToImageMetric.h:613
itk::ImageToImageMetric::FixedImageType
TFixedImage FixedImageType
Definition: itkImageToImageMetric.h:77
itk::ImageToImageMetric::m_ThreaderBSplineTransformWeights
std::unique_ptr< BSplineTransformWeightsType[]> m_ThreaderBSplineTransformWeights
Definition: itkImageToImageMetric.h:506
itk::ImageToImageMetric::OutputPointType
typename TransformType::OutputPointType OutputPointType
Definition: itkImageToImageMetric.h:91
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::ImageToImageMetric::IndexValueType
typename BSplineTransformIndexArrayType::ValueType IndexValueType
Definition: itkImageToImageMetric.h:474
itk::ImageToImageMetric::InputPointType
typename TransformType::InputPointType InputPointType
Definition: itkImageToImageMetric.h:90
itk::ImageToImageMetric::GetValueAndDerivativeThreadProcessSample
virtual bool GetValueAndDerivativeThreadProcessSample(ThreadIdType, SizeValueType, const MovingImagePointType &, double, const ImageDerivativesType &) const
Definition: itkImageToImageMetric.h:671
itk::IndexValueType
long IndexValueType
Definition: itkIntTypes.h:90
itk::ImageToImageMetric::FixedImageMaskPointer
typename FixedImageMaskType::Pointer FixedImageMaskPointer
Definition: itkImageToImageMetric.h:120
itk::ImageToImageMetric::BooleanArrayType
std::vector< bool > BooleanArrayType
Definition: itkImageToImageMetric.h:478
itk::ThreadIdType
unsigned int ThreadIdType
Definition: itkIntTypes.h:99
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itkBSplineInterpolateImageFunction.h
itkGradientRecursiveGaussianImageFilter.h
itk::ImageToImageMetric::GetValueThreadPreProcess
virtual void GetValueThreadPreProcess(ThreadIdType, bool) const
Definition: itkImageToImageMetric.h:637
itk::ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION
itk::ITK_THREAD_RETURN_TYPE ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION
Definition: itkThreadSupport.h:89
itk::ImageToImageMetric::FixedImageSamplePoint::FixedImageSamplePoint
FixedImageSamplePoint()
Definition: itkImageToImageMetric.h:361
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itkCentralDifferenceImageFunction.h
itk::ImageToImageMetric::MovingImageConstPointer
typename MovingImageType::ConstPointer MovingImageConstPointer
Definition: itkImageToImageMetric.h:74
itk::point
*par Constraints *The filter requires an image with at least two dimensions and a vector *length of at least The theory supports extension to scalar but *the implementation of the itk vector classes do not **The template parameter TRealType must be floating point(float or double) or *a user-defined "real" numerical type with arithmetic operations defined *sufficient to compute derivatives. **\par Performance *This filter will automatically multithread if run with *SetUsePrincipleComponents
itk::ImageToImageMetric::SetNumberOfSpatialSamples
void SetNumberOfSpatialSamples(SizeValueType num)
Definition: itkImageToImageMetric.h:248
itk::ImageToImageMetric::m_ThreaderBSplineTransformIndices
std::unique_ptr< BSplineTransformIndexArrayType[]> m_ThreaderBSplineTransformIndices
Definition: itkImageToImageMetric.h:507
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::NumericTraits::PrintType
T PrintType
Definition: itkNumericTraits.h:69
itk::GradientRecursiveGaussianImageFilter
Computes the gradient of an image by convolution with the first derivative of a Gaussian.
Definition: itkGradientRecursiveGaussianImageFilter.h:59
itk::SingleValuedCostFunction
This class is a base for the CostFunctions returning a single value.
Definition: itkSingleValuedCostFunction.h:34
itk::ImageToImageMetric::FixedImageMaskConstPointer
typename FixedImageMaskType::ConstPointer FixedImageMaskConstPointer
Definition: itkImageToImageMetric.h:121
itk::ImageToImageMetric::m_ThreaderTransform
std::unique_ptr< TransformPointer[]> m_ThreaderTransform
Definition: itkImageToImageMetric.h:432
itk::ImageToImageMetric::FixedImagePixelType
typename TFixedImage::PixelType FixedImagePixelType
Definition: itkImageToImageMetric.h:78
itk::ImageToImageMetric::FixedImageSamplePoint::point
FixedImagePointType point
Definition: itkImageToImageMetric.h:381
itk::SpatialObject
Implementation of the composite pattern.
Definition: itkSpatialObject.h:57
itk::ImageToImageMetric::GetThreaderTransform
const TransformPointer * GetThreaderTransform()
Definition: itkImageToImageMetric.h:340
itk::ImageToImageMetric::MultiThreaderWorkUnitInfoImageToImageMetricWrapper
Definition: itkImageToImageMetric.h:589
itk::ImageToImageMetric::FixedImageSampleContainer
std::vector< FixedImageSamplePoint > FixedImageSampleContainer
Definition: itkImageToImageMetric.h:393
itk::FixedArray
Simulate a standard C array with copy semantics.
Definition: itkFixedArray.h:53
itk::ImageToImageMetric::UseAllPixelsOn
void UseAllPixelsOn()
Definition: itkImageToImageMetric.h:278
itk::ImageToImageMetric::MovingImagePixelType
typename TMovingImage::PixelType MovingImagePixelType
Definition: itkImageToImageMetric.h:73
itk::CovariantVector
A templated class holding a n-Dimensional covariant vector.
Definition: itkCovariantVector.h:70
itk::ImageToImageMetric::MultiThreaderWorkUnitInfoImageToImageMetricWrapper::GetThreadId
ThreadIdType GetThreadId() const
Definition: itkImageToImageMetric.h:596
itk::ImageToImageMetric::TransformPointer
typename TransformType::Pointer TransformPointer
Definition: itkImageToImageMetric.h:89
itk::ImageToImageMetric::ConstantPointerWrapper::m_ConstMetricPointer
const ImageToImageMetric * m_ConstMetricPointer
Definition: itkImageToImageMetric.h:579
itk::ImageToImageMetric::FixedImageSamplePoint
Definition: itkImageToImageMetric.h:358
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::ImageToImageMetric::MovingImageType
TMovingImage MovingImageType
Definition: itkImageToImageMetric.h:72
itkMultiThreaderBase.h
itk::ImageToImageMetric::FixedImageSamplePoint::value
double value
Definition: itkImageToImageMetric.h:382
itkBSplineBaseTransform.h
itk::BSplineBaseTransform
A base class with common elements of BSplineTransform and BSplineDeformableTransform.
Definition: itkBSplineBaseTransform.h:34
itk::ImageToImageMetric::GradientImageFilterPointer
typename GradientImageFilterType::Pointer GradientImageFilterPointer
Definition: itkImageToImageMetric.h:113
itk::ImageToImageMetric::GetValueThreadPostProcess
virtual void GetValueThreadPostProcess(ThreadIdType, bool) const
Definition: itkImageToImageMetric.h:648
itk::Point
A templated class holding a geometric point in n-Dimensional space.
Definition: itkPoint.h:53
itk::Image
Templated n-dimensional image class.
Definition: itkImage.h:88
itk::ImageToImageMetric::InterpolatorPointer
typename InterpolatorType::Pointer InterpolatorPointer
Definition: itkImageToImageMetric.h:115
itk::ImageToImageMetric::MultiThreaderWorkUnitInfoImageToImageMetricWrapper::GetConstImageToImageMetricPointer
const ImageToImageMetric * GetConstImageToImageMetricPointer() const
Definition: itkImageToImageMetric.h:601
itk::NumericTraits::RealType
double RealType
Definition: itkNumericTraits.h:85
itk::Transform
Transform points and vectors from an input space to an output space.
Definition: itkTransform.h:83
itk::ImageToImageMetric::FixedImageIndexType
typename FixedImageType::IndexType FixedImageIndexType
Definition: itkImageToImageMetric.h:96
itk::Array2D
Array2D class representing a 2D array with size defined at construction time.
Definition: itkArray2D.h:45
itkSingleValuedCostFunction.h
itk::ImageToImageMetric::CoordinateRepresentationType
typename Superclass::ParametersValueType CoordinateRepresentationType
Definition: itkImageToImageMetric.h:66
itk::ImageToImageMetric::ConstantPointerWrapper::GetConstMetricPointer
const ImageToImageMetric * GetConstMetricPointer() const
Definition: itkImageToImageMetric.h:572
itk::ImageToImageMetric::GetNumberOfSpatialSamples
SizeValueType GetNumberOfSpatialSamples()
Definition: itkImageToImageMetric.h:254
itk::ImageToImageMetric::BSplineTransformWeightsType
typename BSplineTransformType::WeightsType BSplineTransformWeightsType
Definition: itkImageToImageMetric.h:469
itk::ImageToImageMetric::BSplineTransformIndexArrayType
typename BSplineTransformType::ParameterIndexArrayType BSplineTransformIndexArrayType
Definition: itkImageToImageMetric.h:473
itk::InterpolateImageFunction
Base class for all image interpolators.
Definition: itkInterpolateImageFunction.h:45
itk::SizeValueType
unsigned long SizeValueType
Definition: itkIntTypes.h:83
itk::ImageToImageMetric::MovingImageMaskPointer
typename MovingImageMaskType::Pointer MovingImageMaskPointer
Definition: itkImageToImageMetric.h:126
itk::ImageToImageMetric::FixedImageRegionType
typename FixedImageType::RegionType FixedImageRegionType
Definition: itkImageToImageMetric.h:80