NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSquaredFunctionImageToImageMetric.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 itkSquaredFunctionImageToImageMetric_h
16 #define itkSquaredFunctionImageToImageMetric_h
17 
18 #include <itkImageToImageMetric.h>
19 #include <itkCovariantVector.h>
20 #include <itkPoint.h>
21 
22 namespace itk
23 {
30 template < typename TFixedImage, typename TMovingImage >
32  public ImageToImageMetric< TFixedImage, TMovingImage>
33 {
34 public:
35 
38  typedef ImageToImageMetric<TFixedImage, TMovingImage > Superclass;
39  typedef SmartPointer<Self> Pointer;
40  typedef SmartPointer<const Self> ConstPointer;
41 
43  itkNewMacro(Self);
44 
46  itkTypeMacro(SquaredFunctionImageToImageMetric, ImageToImageMetric);
47 
50  typedef typename Superclass::TransformParametersType TransformParametersType;
51  typedef typename Superclass::DerivativeType DerivativeType;
52  typedef typename Superclass::MeasureType MeasureType;
53 
55  void Initialize() throw (ExceptionObject) {};
56 
58  MeasureType GetValue( const TransformParametersType & parameters ) const
59  {
60  MeasureType result = 0;
61  for (unsigned int i = 0; i < parameters.GetSize(); i++)
62  {
63  result += (parameters.GetElement(i) * parameters.GetElement(i));
64  }
65  return result;
66  }
67 
69  void GetDerivative( const TransformParametersType & parameters,
70  DerivativeType & derivative ) const
71  {
72  const unsigned int numberOfParameters = parameters.GetSize();
73  derivative = DerivativeType( numberOfParameters );
74 
75  for (unsigned int i = 0; i < parameters.GetSize(); i++)
76  {
77  derivative[i] = 2.0 * parameters.GetElement(i);
78  }
79  }
80 
82  void GetValueAndDerivative( const TransformParametersType & parameters,
83  MeasureType& value, DerivativeType& derivative ) const
84  {
85  value = this->GetValue(parameters);
86  this->GetDerivative(parameters, derivative);
87  }
88 
89 protected:
90 
93 
94 private:
95 
96  SquaredFunctionImageToImageMetric(const Self&); // purposefully not implemented
97  void operator=(const Self&); // purposefully not implemented
98 
99 };
100 
101 } // end namespace itk
102 
103 #endif
104 
105 
106 
Superclass::TransformParametersType TransformParametersType
Definition: itkSquaredFunctionImageToImageMetric.h:50
virtual ~SquaredFunctionImageToImageMetric()
Definition: itkSquaredFunctionImageToImageMetric.h:92
MeasureType GetValue(const TransformParametersType &parameters) const
Definition: itkSquaredFunctionImageToImageMetric.h:58
ImageToImageMetric< TFixedImage, TMovingImage > Superclass
Definition: itkSquaredFunctionImageToImageMetric.h:38
SquaredFunctionImageToImageMetric Self
Definition: itkSquaredFunctionImageToImageMetric.h:37
SmartPointer< const Self > ConstPointer
Definition: itkSquaredFunctionImageToImageMetric.h:40
Definition: niftkITKAffineResampleImage.cxx:74
void Initialize()
Definition: itkSquaredFunctionImageToImageMetric.h:55
itk::EulerAffineTransform< double, 2, 2 > TransformType
Definition: EulerAffine2DJacobianTest.cxx:27
Dummy similarity measure, to enable testing of optimizers.
Definition: itkSquaredFunctionImageToImageMetric.h:31
void GetDerivative(const TransformParametersType &parameters, DerivativeType &derivative) const
Definition: itkSquaredFunctionImageToImageMetric.h:69
GLuint64EXT * result
Definition: glew.h:12084
GLsizei const GLfloat * value
Definition: glew.h:1833
Superclass::DerivativeType DerivativeType
Definition: itkSquaredFunctionImageToImageMetric.h:51
SquaredFunctionImageToImageMetric()
Definition: itkSquaredFunctionImageToImageMetric.h:91
Superclass::TransformType TransformType
Definition: itkSquaredFunctionImageToImageMetric.h:46
SmartPointer< Self > Pointer
Definition: itkSquaredFunctionImageToImageMetric.h:39
void GetValueAndDerivative(const TransformParametersType &parameters, MeasureType &value, DerivativeType &derivative) const
Definition: itkSquaredFunctionImageToImageMetric.h:82
Superclass::MeasureType MeasureType
Definition: itkSquaredFunctionImageToImageMetric.h:52