NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSimultaneousReconstructionRegistrationMetric.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 itkSimultaneousReconstructionRegistrationMetric_h
16 #define itkSimultaneousReconstructionRegistrationMetric_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkConceptChecking.h>
20 #include <itkSingleValuedCostFunction.h>
21 
23 
24 
25 namespace itk
26 {
27 
36 template <class IntensityType = float>
37 class ITK_EXPORT SimultaneousReconstructionRegistrationMetric : public SingleValuedCostFunction
38 {
39 public:
40 
43  typedef SingleValuedCostFunction Superclass;
44  typedef SmartPointer<Self> Pointer;
45  typedef SmartPointer<const Self> ConstPointer;
46 
48  itkNewMacro(Self);
49 
51  itkTypeMacro(SimultaneousReconstructionRegistrationMetric, SingleValuedCostFunction);
52 
58 
61 
64 
67 
70 
71 
73  typedef typename SingleValuedCostFunction::ParametersType ParametersType;
74  typedef typename SingleValuedCostFunction::MeasureType MeasureType;
75  typedef typename SingleValuedCostFunction::DerivativeType DerivativeType;
76 
78  void SetInputVolume( InputVolumeType *im3D );
79 
81  void SetInputProjectionVolumeOne( InputProjectionVolumeType *im2DNumberOne );
82  void SetInputProjectionVolumeTwo( InputProjectionVolumeType *im2DNumberTwo );
83 
85  void SetProjectionGeometry( ProjectionGeometryType *projGeometry );
86 
88  unsigned int GetNumberOfParameters(void) const;
89 
91  const InputVolumeType *GetReconstructedVolume(void) {
92  return m_FwdAndBackProjDiffFilter->GetPointerToInputVolume();
93  }
94 
97  void SetParametersAddress( const ParametersType & parameters ) const;
100  void SetDerivativesAddress( const DerivativeType & derivatives ) const;
101 
103  void SetParameters( const ParametersType & parameters ) const;
104 
106  void Initialise(void) {m_FwdAndBackProjDiffFilter->Initialise();}
107 
110  virtual void GetValueAndDerivative( const ParametersType & parameters,
111  MeasureType & value,
112  DerivativeType & derivative ) const;
113 
120  virtual MeasureType GetValue( const ParametersType & parameters ) const;
121 
128  virtual void GetDerivative( const ParametersType & parameters,
129  DerivativeType & derivative ) const;
130 
131 
132 protected:
133 
136 
137  void PrintSelf(std::ostream& os, Indent indent) const;
138 
140  ForwardProjectionWithAffineTransformDifferenceFilterPointerType m_FwdAndBackProjDiffFilter;
141 
142 
143 private:
144  SimultaneousReconstructionRegistrationMetric(const Self&); //purposely not implemented
145  void operator=(const Self&); //purposely not implemented
146 
147 };
148 
149 } // end namespace itk
150 
151 #ifndef ITK_MANUAL_INSTANTIATION
152 #include "itkSimultaneousReconstructionRegistrationMetric.txx"
153 #endif
154 
155 #endif
SingleValuedCostFunction::DerivativeType DerivativeType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:75
SingleValuedCostFunction Superclass
Definition: itkSimultaneousReconstructionRegistrationMetric.h:43
SingleValuedCostFunction::MeasureType MeasureType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:74
ForwardProjectionWithAffineTransformDifferenceFilterType::OutputBackProjectedDifferencesType OutputBackProjectedDifferencesType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:68
ForwardProjectionWithAffineTransformDifferenceFilterPointerType m_FwdAndBackProjDiffFilter
Create and store the Euler affine transform matrix.
Definition: itkSimultaneousReconstructionRegistrationMetric.h:140
void Initialise(void)
Definition: itkSimultaneousReconstructionRegistrationMetric.h:106
SmartPointer< Self > Pointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:55
ForwardProjectionWithAffineTransformDifferenceFilterType::InputVolumePointer InputVolumePointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:60
InputVolumeType::Pointer InputVolumePointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:66
SimultaneousReconstructionRegistrationMetric Self
Definition: itkSimultaneousReconstructionRegistrationMetric.h:42
ProjectionGeometryType::Pointer ProjectionGeometryPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:115
Definition: niftkITKAffineResampleImage.cxx:74
itk::ForwardProjectionWithAffineTransformDifferenceFilter< IntensityType > ForwardProjectionWithAffineTransformDifferenceFilterType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:51
ForwardProjectionWithAffineTransformDifferenceFilterType::OutputBackProjectedDifferencesPointer OutputBackProjectedDifferencesPointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:69
ForwardProjectionWithAffineTransformDifferenceFilterType::InputVolumeType InputVolumeType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:59
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
GLsizei const GLfloat * value
Definition: glew.h:1833
ForwardProjectionWithAffineTransformDifferenceFilterType::Pointer ForwardProjectionWithAffineTransformDifferenceFilterPointerType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:57
ForwardProjectionWithAffineTransformDifferenceFilterType::InputProjectionVolumePointer InputProjectionVolumePointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:63
ForwardProjectionWithAffineTransformDifferenceFilterType::ProjectionGeometryPointer ProjectionGeometryPointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:66
InputProjectionVolumeType::Pointer InputProjectionVolumePointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:75
SmartPointer< Self > Pointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:44
SmartPointer< const Self > ConstPointer
Definition: itkSimultaneousReconstructionRegistrationMetric.h:45
Class to compute the difference between a reconstruction estimate and the target set of 2D projection...
Definition: itkSimultaneousReconstructionRegistrationMetric.h:37
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
const InputVolumeType * GetReconstructedVolume(void)
Get the 3D reconstructed volume.
Definition: itkSimultaneousReconstructionRegistrationMetric.h:91
ForwardProjectionWithAffineTransformDifferenceFilterType::ProjectionGeometryType ProjectionGeometryType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:65
Class to compute the difference between a reconstruction estimate and the target set of 2D projection...
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:45
virtual ~SimultaneousReconstructionRegistrationMetric()
Definition: itkSimultaneousReconstructionRegistrationMetric.h:135
ForwardProjectionWithAffineTransformDifferenceFilterType::InputProjectionVolumeType InputProjectionVolumeType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:62
OutputBackProjectedDifferencesType::Pointer OutputBackProjectedDifferencesPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:83
SingleValuedCostFunction::ParametersType ParametersType
Definition: itkSimultaneousReconstructionRegistrationMetric.h:73