NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSiemensMammomat_TomosynthesisGeometry.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 __itkSiemensMammomat_TomosynthesisGeometry_h
16 #define __itkSiemensMammomat_TomosynthesisGeometry_h
17 
18 #include "itkProjectionGeometry.h"
19 
20 namespace itk
21 {
22 
27 template <class IntensityType = float>
28 class ITK_EXPORT SiemensMammomat_TomosynthesisGeometry : public ProjectionGeometry<IntensityType>
29 {
30 public:
31 
35  typedef SmartPointer<Self> Pointer;
36  typedef SmartPointer<const Self> ConstPointer;
37 
39  itkNewMacro(Self);
40 
43 
45  typedef typename Superclass::ProjectionSizeType ProjectionSizeType;
46  typedef typename Superclass::ProjectionSpacingType ProjectionSpacingType;
47 
48  typedef typename Superclass::VolumeSizeType VolumeSizeType;
49  typedef typename Superclass::VolumeSpacingType VolumeSpacingType;
50 
51  typedef typename Superclass::EulerAffineTransformType EulerAffineTransformType;
52  typedef typename Superclass::EulerAffineTransformPointerType EulerAffineTransformPointerType;
53 
54  typedef typename Superclass::PerspectiveProjectionTransformType PerspectiveProjectionTransformType;
55  typedef typename Superclass::PerspectiveProjectionTransformPointerType PerspectiveProjectionTransformPointerType;
56 
59  virtual PerspectiveProjectionTransformPointerType GetPerspectiveTransform(int i);
60 
63  virtual EulerAffineTransformPointerType GetAffineTransform(int i);
64 
66  virtual unsigned int GetNumberOfProjections(void) { return nProjections; }
67 
68 
69 protected:
70 
73 
74  const unsigned int nProjections;
75  const double heightOfTable;
77  const double distSourceToIsoCenter;
78 
79  const double sizeOfDetectorInX;
80  const double sizeOfDetectorInY;
81 
82 
83  void PrintSelf(std::ostream& os, Indent indent) const;
84 
85  const double *GetAngles( void );
86 
88  double CalcNormalPosition(double alpha);
89 
90 
91  private:
92  SiemensMammomat_TomosynthesisGeometry(const Self&); //purposely not implemented
93  void operator=(const Self&); //purposely not implemented
94 
95 };
96 
97 } // end namespace itk
98 
99 #ifndef ITK_MANUAL_INSTANTIATION
100 #include "itkSiemensMammomat_TomosynthesisGeometry.txx"
101 #endif
102 
103 #endif
104 
Superclass::ProjectionSpacingType ProjectionSpacingType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:46
const unsigned int nProjections
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:74
SmartPointer< Self > Pointer
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:35
ProjectionGeometry< IntensityType > Superclass
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:34
Definition: niftkITKAffineResampleImage.cxx:74
Superclass::EulerAffineTransformType EulerAffineTransformType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:51
const double distSourceToIsoCenter
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:77
Superclass::VolumeSpacingType VolumeSpacingType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:49
Superclass::PerspectiveProjectionTransformType PerspectiveProjectionTransformType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:54
virtual unsigned int GetNumberOfProjections(void)
Return the number of projections for this geometry.
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:66
const double sizeOfDetectorInY
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:80
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
Superclass::ProjectionSizeType ProjectionSizeType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:42
Superclass::EulerAffineTransformPointerType EulerAffineTransformPointerType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:52
SiemensMammomat_TomosynthesisGeometry Self
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:33
Superclass::VolumeSizeType VolumeSizeType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:48
GLclampf GLclampf GLclampf alpha
Definition: glew.h:1504
Class to calculate the geometry of a GE tomosynthesis machine.
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:28
SmartPointer< const Self > ConstPointer
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:36
const double heightOfIsoCenterFromTable
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:76
const double heightOfTable
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:75
Superclass::PerspectiveProjectionTransformPointerType PerspectiveProjectionTransformPointerType
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:55
virtual ~SiemensMammomat_TomosynthesisGeometry()
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:72
const double sizeOfDetectorInX
Definition: itkSiemensMammomat_TomosynthesisGeometry.h:79