NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkIsocentricConeBeamRotationGeometry.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 itkIsocentricConeBeamRotationGeometry_h
16 #define itkIsocentricConeBeamRotationGeometry_h
17 
18 #include "itkProjectionGeometry.h"
19 
20 namespace itk {
21 
22 enum
24 {
28 };
29 
30 
35 template <class IntensityType = float>
37  public ProjectionGeometry<IntensityType>
38 {
39 public:
40 
44  typedef SmartPointer<Self> Pointer;
45  typedef SmartPointer<const Self> ConstPointer;
46 
48  itkNewMacro(Self);
49 
52 
56 
59 
62 
65 
66  itkSetMacro( NumberOfProjections, unsigned int );
67  itkSetMacro( FirstAngle, double );
68  itkSetMacro( AngularRange, double );
69  itkSetMacro( FocalLength, double );
70 
72  void SetTranslation(double tx, double ty, double tz) {
73  m_Translation[0] = tx;
74  m_Translation[1] = ty;
75  m_Translation[2] = tz;
76  this->Modified();
77  }
78 
80  virtual void Initialise(void);
81 
83  void SetRotationAxis(IsocentricConeBeamRotationTypeEnum axis) {m_RotationType = axis;}
84 
87  virtual PerspectiveProjectionTransformPointerType GetPerspectiveTransform(int i);
88 
91  virtual EulerAffineTransformPointerType GetAffineTransform(int i);
92 
94  virtual unsigned int GetNumberOfProjections(void) { return m_NumberOfProjections; }
95 
96 protected:
98  virtual ~IsocentricConeBeamRotationGeometry() {if (m_ProjectionAngles) delete[] m_ProjectionAngles;}
99  void PrintSelf(std::ostream& os, Indent indent) const;
100 
101 
102 private:
103  IsocentricConeBeamRotationGeometry(const Self&); //purposely not implemented
104  void operator=(const Self&); //purposely not implemented
105 
107  IsocentricConeBeamRotationTypeEnum m_RotationType;
108 
110  unsigned int m_NumberOfProjections;
111 
113  double m_FirstAngle;
114 
116  double m_AngularRange;
117 
119  double m_FocalLength;
120 
123  double m_Translation[3];
124 
126  double *m_ProjectionAngles;
127 };
128 
129 } // end namespace itk
130 
131 #ifndef ITK_MANUAL_INSTANTIATION
132 #include "itkIsocentricConeBeamRotationGeometry.txx"
133 #endif
134 
135 #endif
Superclass::EulerAffineTransformPointerType EulerAffineTransformPointerType
Definition: itkIsocentricConeBeamRotationGeometry.h:61
Superclass::VolumeSizeType VolumeSizeType
Definition: itkIsocentricConeBeamRotationGeometry.h:57
itk::Vector< double, 2 > ProjectionSpacingType
Definition: itkProjectionGeometry.h:47
Superclass::ProjectionSpacingType ProjectionSpacingType
Definition: itkIsocentricConeBeamRotationGeometry.h:55
itk::Vector< double, 3 > VolumeSpacingType
Definition: itkProjectionGeometry.h:50
Superclass::PerspectiveProjectionTransformType PerspectiveProjectionTransformType
Definition: itkIsocentricConeBeamRotationGeometry.h:63
Superclass::ProjectionSizeType ProjectionSizeType
Definition: itkIsocentricConeBeamRotationGeometry.h:51
SmartPointer< const Self > ConstPointer
Definition: itkIsocentricConeBeamRotationGeometry.h:45
Superclass::EulerAffineTransformType EulerAffineTransformType
Definition: itkIsocentricConeBeamRotationGeometry.h:60
virtual unsigned int GetNumberOfProjections(void)
Return the number of projections for this geometry.
Definition: itkIsocentricConeBeamRotationGeometry.h:94
Superclass::VolumeSpacingType VolumeSpacingType
Definition: itkIsocentricConeBeamRotationGeometry.h:58
Definition: niftkITKAffineResampleImage.cxx:74
Definition: itkIsocentricConeBeamRotationGeometry.h:26
itk::Size< 3 > VolumeSizeType
Definition: itkProjectionGeometry.h:49
itk::Size< 2 > ProjectionSizeType
Definition: itkProjectionGeometry.h:43
ProjectionGeometry< IntensityType > Superclass
Definition: itkIsocentricConeBeamRotationGeometry.h:43
PerspectiveProjectionTransform of a vector space (e.g. space coordinates)
Definition: itkPerspectiveProjectionTransform.h:39
Euler Affine transform.
Definition: itkEulerAffineTransform.h:38
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
void SetTranslation(double tx, double ty, double tz)
Definition: itkIsocentricConeBeamRotationGeometry.h:72
Class to calculate the geometry of an isocentric cone beam projection CT or tomosynthesis machine...
Definition: itkIsocentricConeBeamRotationGeometry.h:36
PerspectiveProjectionTransformType::Pointer PerspectiveProjectionTransformPointerType
Definition: itkProjectionGeometry.h:56
SmartPointer< Self > Pointer
Definition: itkIsocentricConeBeamRotationGeometry.h:44
IsocentricConeBeamRotationGeometry Self
Definition: itkIsocentricConeBeamRotationGeometry.h:42
Superclass::PerspectiveProjectionTransformPointerType PerspectiveProjectionTransformPointerType
Definition: itkIsocentricConeBeamRotationGeometry.h:64
void SetRotationAxis(IsocentricConeBeamRotationTypeEnum axis)
Definition: itkIsocentricConeBeamRotationGeometry.h:83
virtual ~IsocentricConeBeamRotationGeometry()
Definition: itkIsocentricConeBeamRotationGeometry.h:98
IsocentricConeBeamRotationTypeEnum
Definition: itkIsocentricConeBeamRotationGeometry.h:22
Definition: itkIsocentricConeBeamRotationGeometry.h:25
EulerAffineTransformType::Pointer EulerAffineTransformPointerType
Definition: itkProjectionGeometry.h:53
Definition: itkIsocentricConeBeamRotationGeometry.h:27