NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkBSplineCurveFitMetric.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 
16 #ifndef itkBSplineCurveFitMetric_h
17 #define itkBSplineCurveFitMetric_h
18 
19 #include <vector>
20 
21 #include <itkConceptChecking.h>
22 #include <itkMultipleValuedCostFunction.h>
23 #include <itkPoint.h>
24 
25 
26 namespace itk
27 {
28 
33 template < class IntensityType = int >
34 class ITK_EXPORT BSplineCurveFitMetric : public MultipleValuedCostFunction
35 {
36  public:
37 
40  typedef MultipleValuedCostFunction Superclass;
41  typedef SmartPointer<Self> Pointer;
42  typedef SmartPointer<const Self> ConstPointer;
43 
45  itkNewMacro(Self);
46 
48  itkTypeMacro(BSplineCurveFitMetric, MultipleValuedCostFunction);
49 
51  typedef typename Superclass::ParametersValueType CoordinateRepresentationType;
52 
54  typedef typename MultipleValuedCostFunction::ParametersType ParametersType;
55  typedef typename MultipleValuedCostFunction::MeasureType MeasureType;
56  typedef typename MultipleValuedCostFunction::DerivativeType DerivativeType;
57 
59  typedef Transform<CoordinateRepresentationType, 4, 4> TransformType;
60 
66 
68  void Initialise( void );
69 
71  unsigned int GetNumberOfParameters(void) const override;
72 
74  unsigned int GetNumberOfValues( void ) const override;
75 
78  virtual void GetValueAndDerivative( const ParametersType & parameters,
79  MeasureType & value,
80  DerivativeType & derivative ) const;
81 
84  virtual MeasureType GetValue( const ParametersType & parameters ) const override;
85 
88  virtual void GetDerivative( const ParametersType & parameters,
89  DerivativeType & derivative ) const override;
90 
91 
92 protected:
93 
95  virtual ~BSplineCurveFitMetric() {};
96 
97  void PrintSelf(std::ostream& os, Indent indent) const override;
98 
99 
100 private:
101 
102  BSplineCurveFitMetric(const Self&); //purposely not implemented
103  void operator=(const Self&); //purposely not implemented
104 
105 
106 };
107 
108 } // end namespace itk
109 
110 #ifndef ITK_MANUAL_INSTANTIATION
111 #include "itkBSplineCurveFitMetric.txx"
112 #endif
113 
114 #endif
MultipleValuedCostFunction::MeasureType MeasureType
Definition: itkBSplineCurveFitMetric.h:55
MultipleValuedCostFunction::ParametersType ParametersType
Definition: itkBSplineCurveFitMetric.h:54
MultipleValuedCostFunction Superclass
Definition: itkBSplineCurveFitMetric.h:40
TransformType::ParametersType TransformParametersType
Definition: itkBSplineCurveFitMetric.h:64
virtual ~BSplineCurveFitMetric()
Definition: itkBSplineCurveFitMetric.h:95
Class to compute the goodness of fit of a BSpline to a set of data values.
Definition: itkBSplineCurveFitMetric.h:34
TransformType::JacobianType TransformJacobianType
Definition: itkBSplineCurveFitMetric.h:65
BSplineCurveFitMetric Self
Definition: itkBSplineCurveFitMetric.h:39
Definition: niftkITKAffineResampleImage.cxx:74
SmartPointer< Self > Pointer
Definition: itkBSplineCurveFitMetric.h:41
Superclass::ParametersType ParametersType
Definition: itkEulerAffineTransform.h:66
Superclass::ParametersValueType CoordinateRepresentationType
Definition: itkBSplineCurveFitMetric.h:48
GLsizei const GLfloat * value
Definition: glew.h:1833
SmartPointer< const Self > ConstPointer
Definition: itkBSplineCurveFitMetric.h:42
MultipleValuedCostFunction::DerivativeType DerivativeType
Definition: itkBSplineCurveFitMetric.h:56
TransformType::Pointer TransformPointer
Definition: itkBSplineCurveFitMetric.h:61
Superclass::OutputPointType OutputPointType
Definition: itkEulerAffineTransform.h:89
TransformType::OutputPointType OutputPointType
Definition: itkBSplineCurveFitMetric.h:63
TransformType::InputPointType InputPointType
Definition: itkBSplineCurveFitMetric.h:62
Superclass::JacobianType JacobianType
Definition: itkEulerAffineTransform.h:69
SmartPointer< Self > Pointer
Definition: itkEulerAffineTransform.h:49
Superclass::InputPointType InputPointType
Definition: itkEulerAffineTransform.h:87
Transform< CoordinateRepresentationType, 4, 4 > TransformType
Definition: itkBSplineCurveFitMetric.h:59