ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkImageToImageMetricv4.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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 itkImageToImageMetricv4_h
19 #define itkImageToImageMetricv4_h
20 
21 #include "itkCovariantVector.h"
22 #include "itkImageFunction.h"
25 #include "itkSpatialObject.h"
26 #include "itkResampleImageFilter.h"
29 #include "itkImageToImageFilter.h"
31 #include "itkPointSet.h"
34 
35 namespace itk
36 {
168 template<typename TFixedImage,typename TMovingImage,typename TVirtualImage = TFixedImage,
169  typename TInternalComputationValueType = double,
170  typename TMetricTraits = DefaultImageToImageMetricTraitsv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType >
171  >
172 class ITK_TEMPLATE_EXPORT ImageToImageMetricv4
173  : public ObjectToObjectMetric<TFixedImage::ImageDimension, TMovingImage::ImageDimension, TVirtualImage, TInternalComputationValueType>
174 {
175 public:
176  ITK_DISALLOW_COPY_AND_ASSIGN(ImageToImageMetricv4);
177 
183 
186 
190  using InternalComputationValueType = TInternalComputationValueType;
191 
193  using CoordinateRepresentationType = typename Superclass::CoordinateRepresentationType;
194 
196  using ParametersType = typename Superclass::ParametersType;
197  using ParametersValueType = typename Superclass::ParametersValueType;
198 
200  using GradientSourceType = typename Superclass::GradientSourceType;
201 
203  using DimensionType = typename Superclass::DimensionType;
204  using ImageDimensionType = typename Superclass::DimensionType;
205 
207  using FixedTransformType = typename Superclass::FixedTransformType;
208  using FixedTransformPointer = typename Superclass::FixedTransformPointer;
209  using FixedInputPointType = typename Superclass::FixedInputPointType;
210  using FixedOutputPointType = typename Superclass::FixedOutputPointType;
211  using FixedTransformParametersType = typename Superclass::FixedTransformParametersType;
212 
213  using MovingTransformType = typename Superclass::MovingTransformType;
214  using MovingTransformPointer = typename Superclass::MovingTransformPointer;
215  using MovingInputPointType = typename Superclass::MovingInputPointType;
216  using MovingOutputPointType = typename Superclass::MovingOutputPointType;
217  using MovingTransformParametersType = typename Superclass::MovingTransformParametersType;
218 
219  using JacobianType = typename Superclass::JacobianType;
220  using FixedTransformJacobianType = typename Superclass::FixedTransformJacobianType;
221  using MovingTransformJacobianType = typename Superclass::MovingTransformJacobianType;
222 
223  using ObjectType = typename Superclass::ObjectType;
224 
226  using FixedImageType = TFixedImage;
227  using FixedImagePixelType = typename FixedImageType::PixelType;
229  using FixedImagePointer = typename FixedImageType::Pointer;
230  using FixedImageConstPointer = typename FixedImageType::ConstPointer;
233  using MovingImageType = TMovingImage;
234  using MovingImagePixelType = typename MovingImageType::PixelType;
236  using MovingImagePointer = typename MovingImageType::Pointer;
237  using MovingImageConstPointer = typename MovingImageType::ConstPointer;
241 
243  using VirtualImageType = typename Superclass::VirtualImageType;
244  using VirtualImagePointer = typename Superclass::VirtualImagePointer;
245  using VirtualPixelType = typename Superclass::VirtualPixelType;
246  using VirtualRegionType = typename Superclass::VirtualRegionType;
247  using VirtualSizeType = typename Superclass::VirtualSizeType;
248  using VirtualSpacingType = typename Superclass::VirtualSpacingType;
249  using VirtualOriginType = typename Superclass::VirtualPointType;
250  using VirtualPointType = typename Superclass::VirtualPointType;
251  using VirtualDirectionType = typename Superclass::VirtualDirectionType;
252  using VirtualRadiusType = typename Superclass::VirtualSizeType;
253  using VirtualIndexType = typename Superclass::VirtualIndexType;
254  using VirtualPointSetType = typename Superclass::VirtualPointSetType;
255  using VirtualPointSetPointer = typename Superclass::VirtualPointSetPointer;
256 
258  using MetricTraits = TMetricTraits;
259 
260  /* Image dimension accessors */
261  static constexpr DimensionType FixedImageDimension = Superclass::FixedDimension;
262  static constexpr DimensionType MovingImageDimension = Superclass::MovingDimension;
263  static constexpr DimensionType VirtualImageDimension = Superclass::VirtualDimension;
264 
270 
276 
282 
290 
292  using FixedImageGradientType = typename MetricTraits::FixedImageGradientType;
293  using MovingImageGradientType = typename MetricTraits::MovingImageGradientType;
294  using VirtualImageGradientType = typename MetricTraits::VirtualImageGradientType;
295 
298 
301 
304 
308  using FixedRealType = typename MetricTraits::FixedRealType;
309  using MovingRealType = typename MetricTraits::MovingRealType;
310 
313 
314  using FixedGradientPixelType = typename MetricTraits::FixedGradientPixelType;
315  using MovingGradientPixelType = typename MetricTraits::MovingGradientPixelType;
316 
317  using FixedImageGradientImageType = typename MetricTraits::FixedImageGradientImageType;
318  using MovingImageGradientImageType = typename MetricTraits::MovingImageGradientImageType;
319 
320  using FixedImageGradientImagePointer = typename FixedImageGradientImageType::Pointer;
321  using MovingImageGradientImagePointer = typename MovingImageGradientImageType::Pointer;
322 
323  using FixedImageGradientFilterType = typename MetricTraits::FixedImageGradientFilterType;
324  using MovingImageGradientFilterType = typename MetricTraits::MovingImageGradientFilterType;
325 
326  using FixedImageGradientFilterPointer = typename FixedImageGradientFilterType::Pointer;
327  using MovingImageGradientFilterPointer = typename MovingImageGradientFilterType::Pointer;
328 
329 
331  using DefaultFixedImageGradientFilter = typename MetricTraits::DefaultFixedImageGradientFilter;
332  using DefaultMovingImageGradientFilter = typename MetricTraits::DefaultMovingImageGradientFilter;
333 
336  using FixedImageGradientCalculatorType = typename MetricTraits::FixedImageGradientCalculatorType;
337  using MovingImageGradientCalculatorType = typename MetricTraits::MovingImageGradientCalculatorType;
338 
339  using FixedImageGradientCalculatorPointer = typename FixedImageGradientCalculatorType::Pointer;
340  using MovingImageGradientCalculatorPointer = typename MovingImageGradientCalculatorType::Pointer;
341 
343  using DefaultFixedImageGradientCalculator = typename MetricTraits::DefaultFixedImageGradientCalculator;
344  using DefaultMovingImageGradientCalculator = typename MetricTraits::DefaultMovingImageGradientCalculator;
345 
347  using MeasureType = typename Superclass::MeasureType;
348 
350  using DerivativeType = typename Superclass::DerivativeType;
351  using DerivativeValueType = typename DerivativeType::ValueType;
352 
355  using NumberOfParametersType = typename Superclass::NumberOfParametersType;
356 
358  void SetFixedObject( const ObjectType *object ) override
359  {
360  auto * image = dynamic_cast<FixedImageType *>( const_cast<ObjectType *>( object ) );
361  if( image != nullptr )
362  {
363  this->SetFixedImage( image );
364  }
365  else
366  {
367  itkExceptionMacro( "Incorrect object type. Should be an image." )
368  }
369  }
371 
373  void SetMovingObject( const ObjectType *object ) override
374  {
375  auto * image = dynamic_cast<MovingImageType *>( const_cast<ObjectType *>( object ) );
376  if( image != nullptr )
377  {
378  this->SetMovingImage( image );
379  }
380  else
381  {
382  itkExceptionMacro( "Incorrect object type. Should be an image." )
383  }
384  }
386 
387  /* Get/Set the Fixed Image. */
388  itkSetConstObjectMacro(FixedImage, FixedImageType);
389  itkGetConstObjectMacro(FixedImage, FixedImageType);
390 
392  itkSetConstObjectMacro(MovingImage, MovingImageType);
393  itkGetConstObjectMacro(MovingImage, MovingImageType);
395 
397  itkSetObjectMacro(FixedInterpolator, FixedInterpolatorType);
398 
400  itkGetModifiableObjectMacro(FixedInterpolator, FixedInterpolatorType);
401 
403  itkSetObjectMacro(MovingInterpolator, MovingInterpolatorType);
404 
406  itkGetModifiableObjectMacro(MovingInterpolator, MovingInterpolatorType);
407 
409  itkSetObjectMacro(MovingImageMask, MovingImageMaskType);
410  itkSetConstObjectMacro(MovingImageMask, MovingImageMaskType);
411  itkGetConstObjectMacro(MovingImageMask, MovingImageMaskType);
413 
415  itkSetObjectMacro(FixedImageMask, FixedImageMaskType);
416  itkSetConstObjectMacro(FixedImageMask, FixedImageMaskType);
417  itkGetConstObjectMacro(FixedImageMask, FixedImageMaskType);
419 
423  itkSetObjectMacro(FixedSampledPointSet, FixedSampledPointSetType);
424  itkSetConstObjectMacro(FixedSampledPointSet, FixedSampledPointSetType);
425  itkGetConstObjectMacro(FixedSampledPointSet, FixedSampledPointSetType);
427 
429  itkSetObjectMacro(VirtualSampledPointSet, VirtualPointSetType);
430  itkGetConstObjectMacro(VirtualSampledPointSet, VirtualPointSetType);
432 
434  itkSetMacro(UseSampledPointSet, bool);
435  itkGetConstReferenceMacro(UseSampledPointSet, bool);
436  itkBooleanMacro(UseSampledPointSet);
438 
441  itkSetMacro(UseVirtualSampledPointSet, bool);
442  itkGetConstReferenceMacro(UseVirtualSampledPointSet, bool);
443  itkBooleanMacro(UseVirtualSampledPointSet);
445 
446 #if !defined(ITK_LEGACY_REMOVE)
447 
449  itkLegacyMacro( virtual void SetUseFixedSampledPointSet(bool v) ) { this->SetUseSampledPointSet(v);}
450  itkLegacyMacro( virtual bool GetUseFixedSampledPointSet() const ) {return this->GetUseSampledPointSet();}
451  itkLegacyMacro( virtual void UseFixedSampledPointSetOn() ) {return this->UseSampledPointSetOn();}
452  itkLegacyMacro( virtual void UseFixedSampledPointSetOff() ) {return this->UseSampledPointSetOff();}
453 #endif
454 
455 
456 
458  itkSetObjectMacro( FixedImageGradientFilter, FixedImageGradientFilterType );
459  itkGetModifiableObjectMacro(FixedImageGradientFilter, FixedImageGradientFilterType );
460  itkSetObjectMacro( MovingImageGradientFilter, MovingImageGradientFilterType );
461  itkGetModifiableObjectMacro(MovingImageGradientFilter, MovingImageGradientFilterType );
463 
465  itkSetObjectMacro( FixedImageGradientCalculator, FixedImageGradientCalculatorType);
466  itkGetModifiableObjectMacro(FixedImageGradientCalculator, FixedImageGradientCalculatorType);
467  itkSetObjectMacro( MovingImageGradientCalculator, MovingImageGradientCalculatorType);
468  itkGetModifiableObjectMacro(MovingImageGradientCalculator, MovingImageGradientCalculatorType);
470 
473  itkSetMacro(UseFixedImageGradientFilter, bool);
474  itkGetConstReferenceMacro(UseFixedImageGradientFilter, bool);
475  itkBooleanMacro(UseFixedImageGradientFilter);
477 
479  itkSetMacro(UseMovingImageGradientFilter, bool);
480  itkGetConstReferenceMacro(UseMovingImageGradientFilter, bool);
481  itkBooleanMacro(UseMovingImageGradientFilter);
483 
487  virtual ThreadIdType GetNumberOfWorkUnitsUsed() const;
488 
492  virtual void SetMaximumNumberOfWorkUnits( const ThreadIdType workUnits );
493  virtual ThreadIdType GetMaximumNumberOfWorkUnits() const;
495 
496 #if !defined ( ITK_LEGACY_REMOVE )
497 
502  itkLegacyMacro( virtual ThreadIdType GetNumberOfThreadsUsed() const )
503  {
504  return this->GetNumberOfWorkUnitsUsed();
505  }
506 
513  itkLegacyMacro( virtual void SetMaximumNumberOfThreads( const ThreadIdType count ) )
514  {
515  this->SetMaximumNumberOfWorkUnits(count);
516  }
517  itkLegacyMacro( virtual ThreadIdType GetMaximumNumberOfThreads() const )
518  {
519  return this->GetMaximumNumberOfWorkUnits();
520  }
521 #endif // !ITK_LEGACY_REMOVE
522 
523 
524 
532  virtual void FinalizeThread( const ThreadIdType /*threadId*/ ) { /*Do nothing by default */ }
533 
535  itkGetModifiableObjectMacro(FixedImageGradientImage, FixedImageGradientImageType);
536 
538  itkGetModifiableObjectMacro(MovingImageGradientImage, MovingImageGradientImageType);
539 
542  {
543  return this->m_NumberOfValidPoints;
544  }
545 
550  SizeValueType GetNumberOfDomainPoints() const;
551 
565  itkSetMacro(UseFloatingPointCorrection, bool);
566  itkGetConstReferenceMacro(UseFloatingPointCorrection, bool);
567  itkBooleanMacro(UseFloatingPointCorrection);
569 
574  itkSetMacro( FloatingPointCorrectionResolution, DerivativeValueType );
575  itkGetConstMacro( FloatingPointCorrectionResolution, DerivativeValueType );
577 
578  /* Initialize the metric before calling GetValue or GetDerivative.
579  * Derived classes must call this Superclass version if they override
580  * this to perform their own initialization.
581  * \note This is meant to be called once for a particular metric setup.
582  * That is, when used in registration, this method would be called once
583  * before entering the registration loop, during which GetValue or
584  * GetDerivative will be called repeatedly. It must be called again if
585  * metric settings are changed before beginning a new registration. */
586  void Initialize() override;
587 
588  MeasureType GetValue() const override;
589 
590  void GetDerivative( DerivativeType & ) const override;
591 
597  void GetValueAndDerivative( MeasureType & value, DerivativeType & derivative ) const override;
598 
602  itkGetConstReferenceMacro(NumberOfSkippedFixedSampledPoints, SizeValueType);
603 
605  {
606  return true;
607  }
608 
609  using MetricCategoryType = typename Superclass::MetricCategoryType;
610 
613  {
614  return Superclass::IMAGE_METRIC;
615  }
616 
617 protected:
618  /* Interpolators for image gradient filters. */
619  using FixedImageGradientInterpolatorType = LinearInterpolateImageFunction< FixedImageGradientImageType,
623 
628 
629  /* A DenseGetValueAndDerivativeThreader
630  * Derived classes must define this class and assign it in their constructor
631  * if threaded processing in GetValueAndDerivative is performed. */
633  /* A SparseGetValueAndDerivativeThreader
634  * Derived classes must define this class and assign it in their constructor
635  * if threaded processing in GetValueAndDerivative is performed. */
637 
642  virtual void InitializeForIteration() const;
643 
651  bool TransformAndEvaluateFixedPoint(
652  const VirtualPointType & virtualPoint,
653  FixedImagePointType & mappedFixedPoint,
654  FixedImagePixelType & mappedFixedPixelValue ) const;
655 
657  bool TransformAndEvaluateMovingPoint(
658  const VirtualPointType & virtualPoint,
659  MovingImagePointType & mappedMovingPoint,
660  MovingImagePixelType & mappedMovingPixelValue ) const;
661 
663  virtual void ComputeFixedImageGradientAtPoint( const FixedImagePointType & mappedPoint, FixedImageGradientType & gradient ) const;
664 
666  virtual void ComputeMovingImageGradientAtPoint( const MovingImagePointType & mappedPoint, MovingImageGradientType & gradient ) const;
667 
671  virtual void ComputeFixedImageGradientFilterImage();
672 
676  virtual void ComputeMovingImageGradientFilterImage() const;
677 
684  virtual void GetValueAndDerivativeExecute() const;
685 
688  virtual void InitializeDefaultFixedImageGradientFilter();
689  virtual void InitializeDefaultMovingImageGradientFilter();
691 
693  itkGetConstMacro( ComputeDerivative, bool );
694 
697 
703 
708 
712 
715  typename DefaultFixedImageGradientFilter::Pointer
717  typename DefaultMovingImageGradientFilter::Pointer
719 
722  typename DefaultFixedImageGradientCalculator::Pointer
724  typename DefaultMovingImageGradientCalculator::Pointer
726 
730 
734 
742 
746 
750 
753 
757 
759  ~ImageToImageMetricv4() override = default;
760 
761  void PrintSelf(std::ostream& os, Indent indent) const override;
762 
763 private:
765  void MapFixedSampledPointSetToVirtual();
766 
768  void LocalTransformPoint(const typename FixedTransformType::OutputPointType &virtualPoint,
769  typename FixedTransformType::OutputPointType &mappedFixedPoint) const
770  {
771  mappedFixedPoint = this->m_FixedTransform->TransformPoint(virtualPoint);
772  }
773  // cast the virtual point
774  template <typename TVirtualPoint>
775  void LocalTransformPoint(const TVirtualPoint &virtualPoint,
776  typename FixedTransformType::OutputPointType &mappedFixedPoint) const
777  {
778  typename FixedTransformType::OutputPointType localVirtualPoint;
780 
781  localVirtualPoint.CastFrom(virtualPoint);
782 
783  mappedFixedPoint = this->m_FixedTransform->TransformPoint( localVirtualPoint );
784  }
785  // cast the mapped Fixed Point
786  template <typename TFixedImagePoint>
787  void LocalTransformPoint(const typename FixedTransformType::OutputPointType &virtualPoint,
788  TFixedImagePoint &mappedFixedPoint) const
789  {
790  typename FixedTransformType::OutputPointType localMappedFixedPoint;
791  localMappedFixedPoint.CastFrom(mappedFixedPoint);
792  localMappedFixedPoint = this->m_FixedTransform->TransformPoint( virtualPoint );
793  mappedFixedPoint.CastFrom(localMappedFixedPoint);
794  }
795  // cast both mapped and fixed point.
796  template <typename TVirtualPoint,typename TFixedImagePoint>
797  void LocalTransformPoint(const TVirtualPoint &virtualPoint,
798  TFixedImagePoint &mappedFixedPoint) const
799  {
800  typename FixedTransformType::OutputPointType localVirtualPoint;
801  typename FixedTransformType::OutputPointType localMappedFixedPoint;
802 
803  localVirtualPoint.CastFrom(virtualPoint);
804  localMappedFixedPoint.CastFrom(mappedFixedPoint);
805 
806  localMappedFixedPoint = this->m_FixedTransform->TransformPoint( localVirtualPoint );
807  mappedFixedPoint.CastFrom(localMappedFixedPoint);
808  }
809 
813 
818 
821 
823 
825  mutable bool m_ComputeDerivative;
826 
829  #ifdef ITK_USE_CONCEPT_CHECKING
832  itkConceptMacro( OnlyDefinedForFloatingPointTypes0, ( itk::Concept::IsFloatingPoint<FixedImagePixelValueType> ) );
833  itkConceptMacro( OnlyDefinedForFloatingPointTypes1, ( itk::Concept::IsFloatingPoint<MovingImagePixelValueType> ) );
834  #endif // ITK_USE_CONCEPT_CHECKING
835 
836 
837 };
838 }//namespace itk
839 
840 #ifndef ITK_MANUAL_INSTANTIATION
841 #include "itkImageToImageMetricv4.hxx"
842 #endif
843 
844 #endif
FixedImageMaskConstPointer m_FixedImageMask
typename MetricTraits::MovingRealType MovingRealType
void LocalTransformPoint(const typename FixedTransformType::OutputPointType &virtualPoint, typename FixedTransformType::OutputPointType &mappedFixedPoint) const
void LocalTransformPoint(const TVirtualPoint &virtualPoint, typename FixedTransformType::OutputPointType &mappedFixedPoint) const
typename MetricTraits::FixedImageGradientCalculatorType FixedImageGradientCalculatorType
typename MovingImageType::RegionType MovingImageRegionType
ImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedIndexedContainerPartitioner, Self >::Pointer m_SparseGetValueAndDerivativeThreader
Light weight base class for most itk classes.
typename Superclass::VirtualPointSetPointer VirtualPointSetPointer
typename Superclass::FixedTransformType FixedTransformType
typename MovingImageType::IndexType MovingImageIndexType
typename MetricTraits::DefaultMovingImageGradientCalculator DefaultMovingImageGradientCalculator
typename MetricTraits::FixedRealType FixedRealType
typename Superclass::MovingTransformType MovingTransformType
Define numeric traits for std::vector.
Provides threading for ImageToImageMetricv4::GetValueAndDerivative.
unsigned long SizeValueType
Definition: itkIntTypes.h:83
TInternalComputationValueType ParametersValueType
DefaultFixedImageGradientCalculator::Pointer m_DefaultFixedImageGradientCalculator
typename Superclass::VirtualPixelType VirtualPixelType
typename FixedImageType::IndexType FixedImageIndexType
typename MetricTraits::DefaultMovingImageGradientFilter DefaultMovingImageGradientFilter
typename MovingImageType::ConstPointer MovingImageConstPointer
typename MovingImageGradientImageType::Pointer MovingImageGradientImagePointer
DefaultMovingImageGradientFilter::Pointer m_DefaultMovingImageGradientFilter
typename MovingImageType::Pointer MovingImagePointer
typename FixedImageMaskType::ConstPointer FixedImageMaskConstPointer
Class for partitioning of an ImageRegion.
SizeValueType GetNumberOfValidPoints() const override
FixedImageGradientCalculatorPointer m_FixedImageGradientCalculator
typename MetricTraits::FixedImageGradientType FixedImageGradientType
typename MetricTraits::MovingImageGradientType MovingImageGradientType
SizeValueType m_NumberOfSkippedFixedSampledPoints
typename FixedImageType::PointType FixedImagePointType
typename MetricTraits::FixedImageGradientImageType FixedImageGradientImageType
typename Superclass::VirtualImageType VirtualImageType
void LocalTransformPoint(const TVirtualPoint &virtualPoint, TFixedImagePoint &mappedFixedPoint) const
DefaultFixedImageGradientFilter::Pointer m_DefaultFixedImageGradientFilter
MovingImageGradientFilterPointer m_MovingImageGradientFilter
typename DerivativeType::ValueType DerivativeValueType
Computes similarity between regions of two objects.
ImageToImageMetricv4GetValueAndDerivativeThreader< ThreadedImageRegionPartitioner< VirtualImageDimension >, Self >::Pointer m_DenseGetValueAndDerivativeThreader
typename MetricTraits::MovingImageGradientImageType MovingImageGradientImageType
typename MetricTraits::MovingImageGradientFilterType MovingImageGradientFilterType
typename Superclass::MovingTransformPointer MovingTransformPointer
typename MovingImageGradientFilterType::Pointer MovingImageGradientFilterPointer
void LocalTransformPoint(const typename FixedTransformType::OutputPointType &virtualPoint, TFixedImagePoint &mappedFixedPoint) const
typename MovingImageType::PixelType MovingImagePixelType
typename FixedImageMaskType::Pointer FixedImageMaskPointer
typename MetricTraits::DefaultFixedImageGradientFilter DefaultFixedImageGradientFilter
typename Superclass::DerivativeType DerivativeType
typename MovingImageMaskType::ConstPointer MovingImageMaskConstPointer
typename Superclass::FixedInputPointType FixedInputPointType
typename MetricTraits::VirtualImageGradientType VirtualImageGradientType
typename MovingInterpolatorType::Pointer MovingInterpolatorPointer
typename Superclass::MeasureType MeasureType
typename PixelTraits< MovingImagePixelType >::ValueType MovingImagePixelValueType
typename TPixelType::ValueType ValueType
typename FixedSampledPointSetType::Pointer FixedSampledPointSetPointer
typename Superclass::DimensionType ImageDimensionType
TInternalComputationValueType CoordinateRepresentationType
typename Superclass::VirtualSizeType VirtualRadiusType
typename Superclass::VirtualSpacingType VirtualSpacingType
typename MetricTraits::MovingGradientPixelType MovingGradientPixelType
typename Superclass::VirtualImagePointer VirtualImagePointer
typename FixedImageGradientFilterType::Pointer FixedImageGradientFilterPointer
FixedImageGradientImagePointer m_FixedImageGradientImage
typename MetricTraits::DefaultFixedImageGradientCalculator DefaultFixedImageGradientCalculator
FixedInterpolatorPointer m_FixedInterpolator
VirtualPointSetPointer m_VirtualSampledPointSet
MovingImageGradientImagePointer m_MovingImageGradientImage
typename Superclass::MovingTransformParametersType MovingTransformParametersType
typename Superclass::VirtualPointType VirtualPointType
typename MovingImageType::PointType MovingImagePointType
typename FixedInterpolatorType::Pointer FixedInterpolatorPointer
Implementation of the composite pattern.
MovingImageGradientInterpolatorType::Pointer m_MovingImageGradientInterpolator
typename Superclass::VirtualPointSetType VirtualPointSetType
A superclass of the N-dimensional mesh structure; supports point (geometric coordinate and attribute)...
Definition: itkPointSet.h:84
FixedSampledPointSetConstPointer m_FixedSampledPointSet
MovingImageMaskConstPointer m_MovingImageMask
typename FixedSampledPointSetType::ConstPointer FixedSampledPointSetConstPointer
MovingInterpolatorPointer m_MovingInterpolator
typename Superclass::VirtualSizeType VirtualSizeType
typename Superclass::MovingOutputPointType MovingOutputPointType
FixedImageConstPointer m_FixedImage
Linearly interpolate an image at specified positions.
unsigned int ThreadIdType
Definition: itkIntTypes.h:99
typename Superclass::VirtualIndexType VirtualIndexType
typename Superclass::VirtualDirectionType VirtualDirectionType
MovingImagePixelType MovingPixelType
typename FixedImageType::Pointer FixedImagePointer
Base class for all image interpolaters.
typename NumericTraits< MovingRealType >::ScalarRealType MovingScalarRealType
typename FixedImageGradientImageType::Pointer FixedImageGradientImagePointer
typename Superclass::MovingInputPointType MovingInputPointType
void SetFixedObject(const ObjectType *object) override
typename MovingImageGradientCalculatorType::Pointer MovingImageGradientCalculatorPointer
typename Superclass::VirtualPointType VirtualOriginType
Provides threading for ImageToImageMetricv4::GetValueAndDerivative.
bool SupportsArbitraryVirtualDomainSamples() const override
virtual void FinalizeThread(const ThreadIdType)
DerivativeValueType m_FloatingPointCorrectionResolution
void SetMovingObject(const ObjectType *object) override
typename MovingImageMaskType::Pointer MovingImageMaskPointer
Control indentation during Print() invocation.
Definition: itkIndent.h:49
typename FixedImageGradientCalculatorType::Pointer FixedImageGradientCalculatorPointer
MovingImageConstPointer m_MovingImage
typename Superclass::VirtualRegionType VirtualRegionType
typename FixedImageType::PixelType FixedImagePixelType
typename PixelTraits< FixedImagePixelType >::ValueType FixedImagePixelValueType
typename MetricTraits::MovingImageGradientCalculatorType MovingImageGradientCalculatorType
FixedImageGradientInterpolatorType::Pointer m_FixedImageGradientInterpolator
TInternalComputationValueType InternalComputationValueType
typename Superclass::DimensionType DimensionType
Base class for most ITK classes.
Definition: itkObject.h:60
typename Superclass::FixedTransformPointer FixedTransformPointer
#define itkConceptMacro(name, concept)
typename MetricTraits::FixedImageGradientFilterType FixedImageGradientFilterType
typename FixedImageType::ConstPointer FixedImageConstPointer
typename MetricTraits::FixedGradientPixelType FixedGradientPixelType
typename Superclass::JacobianType JacobianType
A templated class holding a n-Dimensional covariant vector.
typename Superclass::FixedTransformJacobianType FixedTransformJacobianType
typename Superclass::FixedOutputPointType FixedOutputPointType
typename Superclass::MovingTransformJacobianType MovingTransformJacobianType
MetricCategoryType GetMetricCategory() const override
typename NumericTraits< FixedRealType >::ScalarRealType FixedScalarRealType
MovingImageGradientCalculatorPointer m_MovingImageGradientCalculator
DefaultMovingImageGradientCalculator::Pointer m_DefaultMovingImageGradientCalculator
FixedImageGradientFilterPointer m_FixedImageGradientFilter
typename Superclass::FixedTransformParametersType FixedTransformParametersType