NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkFFDDerivativeBridge.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkFFDDerivativeBridge_h
16 #define itkFFDDerivativeBridge_h
17 
18 
23 #include <itkUCLBSplineTransform.h>
24 
25 namespace itk
26 {
34 template < typename TFixedImage, typename TMovingImage >
35 class ITK_EXPORT FFDDerivativeBridge :
36  public MetricDerivativeBridge<TFixedImage, TMovingImage>
37 {
38 public:
39 
43  typedef SmartPointer<Self> Pointer;
44  typedef SmartPointer<const Self> ConstPointer;
45 
47  itkNewMacro(Self);
48 
51 
53  itkStaticConstMacro(Dimension, unsigned int, TFixedImage::ImageDimension);
54 
63  typedef typename GridImageType::Pointer GridImagePointer;
64 
68 
72 
78  typedef typename OutputImageType::Pointer OutputImagePointer;
79  typedef ImageRegionIterator<OutputImageType> OutputImageIteratorType;
81 
83  void GetCostFunctionDerivative(SimilarityMeasurePointer similarityMeasure,
84  const ParametersType &parameters,
85  DerivativeType &derivative) const;
86 
88  itkSetObjectMacro( Grid, GridImageType );
89  itkGetConstObjectMacro( Grid, GridImageType );
90 
92  itkSetObjectMacro( ForceFilter, ForceFilterType );
93  itkGetConstObjectMacro( ForceFilter, ForceFilterType );
94 
96  itkSetObjectMacro( SmoothFilter, SmoothFilterType );
97  itkGetConstObjectMacro( SmoothFilter, SmoothFilterType );
98 
100  itkSetObjectMacro( InterpolatorFilter, InterpolateFilterType );
101  itkGetConstObjectMacro( InterpolatorFilter, InterpolateFilterType );
102 
103 protected:
104 
106  virtual ~FFDDerivativeBridge() {};
107 
109  GridImagePointer m_Grid;
110 
112  ForceFilterPointer m_ForceFilter;
113 
115  SmoothFilterPointer m_SmoothFilter;
116 
118  InterpolateFilterPointer m_InterpolatorFilter;
119 
120 private:
121 
122  FFDDerivativeBridge(const Self&); // purposefully not implemented
123  void operator=(const Self&); // purposefully not implemented
124  void PrintSelf(std::ostream& os, Indent indent) const;
125 
126 };
127 
128 } // end namespace itk
129 
130 #ifndef ITK_MANUAL_INSTANTIATION
131 #include "itkFFDDerivativeBridge.txx"
132 #endif
133 
134 #endif
135 
136 
137 
SimilarityMeasureType::DerivativeType DerivativeType
Definition: itkMetricDerivativeBridge.h:51
ImageRegionIterator< OutputImageType > OutputImageIteratorType
Definition: itkFFDDerivativeBridge.h:79
SimilarityMeasureType::ConstPointer SimilarityMeasurePointer
Definition: itkMetricDerivativeBridge.h:50
UCLBSplineTransformType::GridImageType GridImageType
Definition: itkFFDDerivativeBridge.h:62
UCLBSplineTransformType::Pointer UCLBSplineTransformPointer
Definition: itkFFDDerivativeBridge.h:61
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
Deformable transform using a BSpline representation.
Definition: itkUCLBSplineTransform.h:56
SmartPointer< Self > Pointer
Definition: itkFFDDerivativeBridge.h:43
MetricDerivativeBridge< TFixedImage, TMovingImage > Superclass
Definition: itkFFDDerivativeBridge.h:42
ForceFilterType::Pointer ForceFilterPointer
Definition: itkFFDDerivativeBridge.h:67
SmartPointer< Self > Pointer
Definition: itkBSplineSmoothVectorFieldFilter.h:45
Abstract base class to provide functionality for adding arbitrary constraints, and also arbitrary way...
Definition: itkImageToImageMetricWithConstraint.h:49
Definition: niftkITKAffineResampleImage.cxx:74
Superclass::DerivativeType DerivativeType
Definition: itkFFDDerivativeBridge.h:58
SmartPointer< Self > Pointer
Definition: itkUCLBSplineTransform.h:64
SimilarityMeasureType::TransformParametersType ParametersType
Definition: itkMetricDerivativeBridge.h:52
RegistrationForceFilter< TFixedImage, TMovingImage > ForceFilterType
Definition: itkFFDDerivativeBridge.h:66
OutputImageType::PixelType OutputImagePixelType
Definition: itkFFDDerivativeBridge.h:77
Definition: itkMetricDerivativeBridge.h:34
Superclass::SimilarityMeasureType SimilarityMeasureType
Definition: itkFFDDerivativeBridge.h:56
ForceFilterPointer m_ForceFilter
Definition: itkFFDDerivativeBridge.h:112
InterpolateVectorFieldFilter< double, Dimension > InterpolateFilterType
Definition: itkFFDDerivativeBridge.h:74
SmartPointer< Self > Pointer
Definition: itkRegistrationForceFilter.h:53
This class takes as input 2 input images, and outputs the registration force.
Definition: itkRegistrationForceFilter.h:39
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
InterpolateFilterType::OutputImageType OutputImageType
Definition: itkFFDDerivativeBridge.h:76
InterpolateFilterPointer m_InterpolatorFilter
Definition: itkFFDDerivativeBridge.h:118
GridImageType::Pointer GridImagePointer
Definition: itkFFDDerivativeBridge.h:63
virtual ~FFDDerivativeBridge()
Definition: itkFFDDerivativeBridge.h:106
Class that takes a vector field, and applies BSpline smoothing.
Definition: itkBSplineSmoothVectorFieldFilter.h:35
InterpolateFilterType::Pointer InterpolateFilterPointer
Definition: itkFFDDerivativeBridge.h:75
BSplineSmoothVectorFieldFilter< double, Dimension > SmoothFilterType
Definition: itkFFDDerivativeBridge.h:70
SmartPointer< Self > Pointer
Definition: itkInterpolateVectorFieldFilter.h:50
FFDDerivative bridge to enable plugging a whole pipeline into a similarity measure to measure the der...
Definition: itkFFDDerivativeBridge.h:35
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
SmoothFilterPointer m_SmoothFilter
Definition: itkFFDDerivativeBridge.h:115
SmoothFilterType::Pointer SmoothFilterPointer
Definition: itkFFDDerivativeBridge.h:71
SmartPointer< const Self > ConstPointer
Definition: itkFFDDerivativeBridge.h:44
Superclass::ParametersType ParametersType
Definition: itkFFDDerivativeBridge.h:59
This class takes a vector field as input 1, and a vector field as input 2, and the output is a vector...
Definition: itkInterpolateVectorFieldFilter.h:38
Superclass::SimilarityMeasurePointer SimilarityMeasurePointer
Definition: itkFFDDerivativeBridge.h:57
OutputImageType::Pointer OutputImagePointer
Definition: itkFFDDerivativeBridge.h:78
UCLBSplineTransform< TFixedImage, double, Dimension > UCLBSplineTransformType
Definition: itkFFDDerivativeBridge.h:60
FFDDerivativeBridge Self
Definition: itkFFDDerivativeBridge.h:41
OutputImageType::SizeType OutputImageSizeType
Definition: itkFFDDerivativeBridge.h:80