NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkForwardProjectionWithAffineTransformDifferenceFilter.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 itkForwardProjectionWithAffineTransformDifferenceFilter_h
16 #define itkForwardProjectionWithAffineTransformDifferenceFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkConceptChecking.h>
20 
23 
26 #include "itkProjectionGeometry.h"
28 
29 namespace itk
30 {
31 
44 template <class IntensityType = float>
46  public ImageToImageFilter<Image<IntensityType, 3>,
47  Image<IntensityType, 3> >
48 {
49 public:
50 
53  typedef ImageToImageFilter<Image< IntensityType, 3>,
55  typedef SmartPointer<Self> Pointer;
56  typedef SmartPointer<const Self> ConstPointer;
57 
59  itkNewMacro(Self);
60 
62  itkTypeMacro(ForwardProjectionWithAffineTransformDifferenceFilter, ImageToImageFilter);
63 
66  typedef typename InputVolumeType::Pointer InputVolumePointer;
67  typedef typename InputVolumeType::ConstPointer InputVolumeConstPointer;
71  typedef typename InputVolumeType::SpacingType InputVolumeSpacingType;
72  typedef typename InputVolumeType::PointType InputVolumePointType;
73 
75  typedef typename InputProjectionVolumeType::Pointer InputProjectionVolumePointer;
79  typedef typename InputProjectionVolumeType::SpacingType InputProjectionVolumeSpacingType;
80  typedef typename InputProjectionVolumeType::PointType InputProjectionVolumePointType;
81 
83  typedef typename OutputBackProjectedDifferencesType::Pointer OutputBackProjectedDifferencesPointer;
87  typedef typename OutputBackProjectedDifferencesType::SpacingType OutputBackProjectedDifferencesSpacingType;
88  typedef typename OutputBackProjectedDifferencesType::PointType OutputBackProjectedDifferencesPointType;
89 
92 
95 
98 
100  typedef typename ForwardProjectorOutputImageType::Pointer ForwardProjectorOutputImagePointer;
103  typedef typename ForwardProjectorOutputImageType::SpacingType ForwardProjectorOutputImageSpacingType;
104  typedef typename ForwardProjectorOutputImageType::PointType ForwardProjectorOutputImagePointType;
107 
110 
113 
116 
118  void SetInputVolume( InputVolumeType *im3D);
119 
121  void SetInputProjectionVolumeOne( InputProjectionVolumeType *im2D);
123  void SetInputProjectionVolumeTwo( InputProjectionVolumeType *im2D);
124 
126  itkSetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
127  itkGetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
128 
130  InputVolumePointer GetPointerToInputVolume(void);
131 
133  itkStaticConstMacro(InputVolumeDimension, unsigned int,
134  InputVolumeType::ImageDimension);
135  itkStaticConstMacro(OutputBackProjectedDifferencesDimension, unsigned int,
136  OutputBackProjectedDifferencesType::ImageDimension);
137 
143  virtual void GenerateInputRequestedRegion();
144  virtual void EnlargeOutputRequestedRegion(DataObject *output);
145 
147  void Initialise(void);
148 
150  void ClearVolumePriorToNextBackProjection(void) {m_BackProjectorOne->ClearVolumePriorToNextBackProjection();}
151 
152 protected:
153 
156 
157  void PrintSelf(std::ostream& os, Indent indent) const;
158 
160  void GenerateData();
161 
164 
166  unsigned int m_NumberOfProjections;
167 
169  CreateForwardBackwardProjectionMatrixPointer m_ForwardProjectorOne;
170 
172  Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimateOne;
173 
175  BackwardImageProjector2Dto3DPointer m_BackProjectorOne;
176 
178  CreateForwardBackwardProjectionMatrixPointer m_ForwardProjectorTwo;
179 
181  Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimateTwo;
182 
184  BackwardImageProjector2Dto3DPointer m_BackProjectorTwo;
185 
187  ProjectionGeometryPointer m_ProjectionGeometry;
188 
189 
190 private:
191  ForwardProjectionWithAffineTransformDifferenceFilter(const Self&); //purposely not implemented
192  void operator=(const Self&); //purposely not implemented
193 
194 };
195 
196 } // end namespace itk
197 
198 #ifndef ITK_MANUAL_INSTANTIATION
199 #include "itkForwardProjectionWithAffineTransformDifferenceFilter.txx"
200 #endif
201 
202 #endif
InputVolumeType::PixelType InputVolumePixelType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:69
InputVolumeType::ConstPointer InputVolumeConstPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:67
ForwardProjectorOutputImageType::SizeType ForwardProjectorOutputImageSizeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:102
InputProjectionVolumeType::SizeType InputProjectionVolumeSizeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:78
ForwardProjectorOutputImageType::PointType ForwardProjectorOutputImagePointType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:104
InputProjectionVolumeType::RegionType InputProjectionVolumeRegionType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:76
Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimateTwo
A filter to perform the subtraction two.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:181
InputVolumeType::PointType InputVolumePointType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:72
SmartPointer< Self > Pointer
Definition: itkProjectionGeometry.h:36
Class to project a 3D image into 2D.
Definition: itkBackwardImageProjector2Dto3D.h:29
ForwardProjectorOutputImageType::RegionType ForwardProjectorOutputImageRegionType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:101
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
ForwardProjectorOutputImageType::PixelType ForwardProjectorOutputImagePixelType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:105
itk::CreateForwardBackwardProjectionMatrix< IntensityType > CreateForwardBackwardProjectionMatrixType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:96
BackwardImageProjector2Dto3DPointer m_BackProjectorOne
The back-projector one.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:175
itk::EulerAffineTransform< double, 3, 3 > EulerAffineTransformType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:90
itk::ProjectionGeometry< IntensityType > ProjectionGeometryType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:114
Subtract2DImageFromVolumeSliceFilterType::Pointer Subtract2DImageFromVolumeSliceFilterPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:109
CreateForwardBackwardProjectionMatrixType::Pointer CreateForwardBackwardProjectionMatrixPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:97
SmartPointer< Self > Pointer
Definition: itkSubtract2DImageFromVolumeSliceFilter.h:39
OutputBackProjectedDifferencesType::PointType OutputBackProjectedDifferencesPointType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:88
Image< IntensityType, 3 > InputProjectionVolumeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:74
ProjectionGeometryPointer m_ProjectionGeometry
The specific projection geometry to be used.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:187
SmartPointer< Self > Pointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:55
Implements an operator for pixel-wise subtraction of a slice of a 3D volume from a 2D image...
Definition: itkSubtract2DImageFromVolumeSliceFilter.h:31
Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimateOne
A filter to perform the subtraction one.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:172
InputVolumeType::Pointer InputVolumePointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:66
PerspectiveProjectionTransformType::Pointer PerspectiveProjectionTransformPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:94
ForwardProjectorOutputImageType::Pointer ForwardProjectorOutputImagePointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:100
ProjectionGeometryType::Pointer ProjectionGeometryPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:115
Definition: niftkITKAffineResampleImage.cxx:74
unsigned int m_NumberOfProjections
The number of projection images.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:166
ForwardProjectorOutputImageType::IndexType ForwardProjectorOutputImageIndexType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:106
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
Image< IntensityType, 3 > InputVolumeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:62
InputVolumeType::SpacingType InputVolumeSpacingType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:71
bool m_FlagPipelineInitialised
Flag indicating whether the filter has been initialised.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:163
ForwardProjectorOutputImageType::SpacingType ForwardProjectorOutputImageSpacingType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:103
InputProjectionVolumeType::SpacingType InputProjectionVolumeSpacingType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:79
PerspectiveProjectionTransform of a vector space (e.g. space coordinates)
Definition: itkPerspectiveProjectionTransform.h:39
OutputBackProjectedDifferencesType::PixelType OutputBackProjectedDifferencesPixelType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:85
Euler Affine transform.
Definition: itkEulerAffineTransform.h:38
SmartPointer< Self > Pointer
Definition: itkBackwardImageProjector2Dto3D.h:36
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
itk::PerspectiveProjectionTransform< double > PerspectiveProjectionTransformType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:93
InputProjectionVolumeType::PointType InputProjectionVolumePointType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:80
InputProjectionVolumeType::PixelType InputProjectionVolumePixelType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:77
SmartPointer< Self > Pointer
Definition: itkCreateForwardBackwardProjectionMatrix.h:42
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
SmartPointer< Self > Pointer
Definition: itkPerspectiveProjectionTransform.h:57
Class to project a 3D image into 2D.
Definition: itkCreateForwardBackwardProjectionMatrix.h:35
ForwardProjectionWithAffineTransformDifferenceFilter Self
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:52
OutputBackProjectedDifferencesType::SpacingType OutputBackProjectedDifferencesSpacingType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:87
InputProjectionVolumeType::Pointer InputProjectionVolumePointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:75
itk::BackwardImageProjector2Dto3D< IntensityType > BackwardImageProjector2Dto3DType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:111
OutputBackProjectedDifferencesType::SizeType OutputBackProjectedDifferencesSizeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:86
InputVolumeType::RegionType InputVolumeRegionType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:68
CreateForwardBackwardProjectionMatrixPointer m_ForwardProjectorOne
The forward-projector one.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:169
virtual ~ForwardProjectionWithAffineTransformDifferenceFilter()
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:155
CreateForwardBackwardProjectionMatrixType::OutputImageType ForwardProjectorOutputImageType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:99
ImageToImageFilter< Image< IntensityType, 3 >, Image< IntensityType, 3 > > Superclass
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:54
EulerAffineTransformType::Pointer EulerAffineTransformPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:91
CreateForwardBackwardProjectionMatrixPointer m_ForwardProjectorTwo
The forward-projector two.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:178
OutputBackProjectedDifferencesType::RegionType OutputBackProjectedDifferencesRegionType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:84
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
Image< IntensityType, 3 > OutputBackProjectedDifferencesType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:82
Class to compute the difference between a reconstruction estimate and the target set of 2D projection...
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:45
BackwardImageProjector2Dto3DType::Pointer BackwardImageProjector2Dto3DPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:112
InputVolumeType::SizeType InputVolumeSizeType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:70
BackwardImageProjector2Dto3DPointer m_BackProjectorTwo
The back-projector two.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:184
void ClearVolumePriorToNextBackProjection(void)
Set the backprojection volume to zero prior to the next back-projection.
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:150
OutputBackProjectedDifferencesType::Pointer OutputBackProjectedDifferencesPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:83
SmartPointer< Self > Pointer
Definition: itkEulerAffineTransform.h:49
itk::Subtract2DImageFromVolumeSliceFilter< IntensityType > Subtract2DImageFromVolumeSliceFilterType
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:108
SmartPointer< const Self > ConstPointer
Definition: itkForwardProjectionWithAffineTransformDifferenceFilter.h:56