NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkNMILocalHistogramDerivativeForceFilter.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 itkNMILocalHistogramDerivativeForceFilter_h
16 #define itkNMILocalHistogramDerivativeForceFilter_h
17 
19 
20 namespace itk {
28 template< class TFixedImage, class TMovingImage, class TScalar >
30  public LocalHistogramDerivativeForceFilter<TFixedImage, TMovingImage, TScalar>
31 {
32 public:
33 
37  typedef SmartPointer<Self> Pointer;
38  typedef SmartPointer<const Self> ConstPointer;
40 
42  itkNewMacro(Self);
43 
46 
47 protected:
48 
51 
65  MeasureType ComputeForcePerVoxel(double totalFrequency,
66  double jointEntropy,
67  double fixedImageEntropy,
68  double transformedMovingImageEntropy,
69  double transformedMovingImageMinusHistogramIndexJointFrequency,
70  double transformedMovingImagePlusHistogramIndexJointFrequency,
71  double transformedMovingImageMinusHistogramIndexFrequency,
72  double transformedMovingImagePlusHistogramIndexFrequency) const
73  {
74 
75  double result = (1.0/(jointEntropy*jointEntropy*totalFrequency))*
76  ((fixedImageEntropy+transformedMovingImageEntropy)*vcl_log(transformedMovingImageMinusHistogramIndexJointFrequency/transformedMovingImagePlusHistogramIndexJointFrequency) -
77  (jointEntropy*vcl_log(transformedMovingImageMinusHistogramIndexFrequency/transformedMovingImagePlusHistogramIndexFrequency)));
78 
79  /*
80  std::cerr << totalFrequency << "," \
81  << jointEntropy << "," \
82  << fixedImageEntropy << "," \
83  << transformedMovingImageEntropy << "," \
84  << transformedMovingImageMinusHistogramIndexJointFrequency << "," \
85  << transformedMovingImagePlusHistogramIndexJointFrequency << "," \
86  << transformedMovingImageMinusHistogramIndexFrequency << "," \
87  << transformedMovingImagePlusHistogramIndexFrequency << "," \
88  << result << std::endl;
89  */
90 
91  return result;
92  }
93 
94 
95 private:
96 
101  void operator=(const Self&);
102 
103 };
104 
105 } // end namespace
106 
107 #endif
NMILocalHistogramDerivativeForceFilter()
Definition: itkNMILocalHistogramDerivativeForceFilter.h:49
TScalar MeasureType
Definition: itkRegistrationForceFilter.h:69
Definition: niftkITKAffineResampleImage.cxx:74
Definition: itkLocalHistogramDerivativeForceFilter.h:36
GLuint64EXT * result
Definition: glew.h:12084
SmartPointer< Self > Pointer
Definition: itkNMILocalHistogramDerivativeForceFilter.h:37
Superclass::MeasureType MeasureType
Definition: itkNMILocalHistogramDerivativeForceFilter.h:39
SmartPointer< const Self > ConstPointer
Definition: itkNMILocalHistogramDerivativeForceFilter.h:38
~NMILocalHistogramDerivativeForceFilter()
Definition: itkNMILocalHistogramDerivativeForceFilter.h:50
NMILocalHistogramDerivativeForceFilter Self
Definition: itkNMILocalHistogramDerivativeForceFilter.h:35
LocalHistogramDerivativeForceFilter< TFixedImage, TMovingImage, TScalar > Superclass
Definition: itkNMILocalHistogramDerivativeForceFilter.h:36
MeasureType ComputeForcePerVoxel(double totalFrequency, double jointEntropy, double fixedImageEntropy, double transformedMovingImageEntropy, double transformedMovingImageMinusHistogramIndexJointFrequency, double transformedMovingImagePlusHistogramIndexJointFrequency, double transformedMovingImageMinusHistogramIndexFrequency, double transformedMovingImagePlusHistogramIndexFrequency) const
Definition: itkNMILocalHistogramDerivativeForceFilter.h:65
Definition: itkNMILocalHistogramDerivativeForceFilter.h:29