NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkForwardAndBackProjectionDifferenceFilter.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 itkForwardAndBackProjectionDifferenceFilter_h
16 #define itkForwardAndBackProjectionDifferenceFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkConceptChecking.h>
24 #include "itkProjectionGeometry.h"
26 
27 namespace itk
28 {
29 
42 template <class IntensityType = float>
44  public ImageToImageFilter<Image<IntensityType, 3>,
45  Image<IntensityType, 3> >
46 {
47 public:
48 
51  typedef ImageToImageFilter<Image< IntensityType, 3>,
53  typedef SmartPointer<Self> Pointer;
54  typedef SmartPointer<const Self> ConstPointer;
55 
57  itkNewMacro(Self);
58 
60  itkTypeMacro(ForwardAndBackProjectionDifferenceFilter, ImageToImageFilter);
61 
64  typedef typename InputVolumeType::Pointer InputVolumePointer;
65  typedef typename InputVolumeType::ConstPointer InputVolumeConstPointer;
69  typedef typename InputVolumeType::SpacingType InputVolumeSpacingType;
70  typedef typename InputVolumeType::PointType InputVolumePointType;
71 
73  typedef typename InputProjectionVolumeType::Pointer InputProjectionVolumePointer;
77  typedef typename InputProjectionVolumeType::SpacingType InputProjectionVolumeSpacingType;
78  typedef typename InputProjectionVolumeType::PointType InputProjectionVolumePointType;
79 
81  typedef typename OutputBackProjectedDifferencesType::Pointer OutputBackProjectedDifferencesPointer;
85  typedef typename OutputBackProjectedDifferencesType::SpacingType OutputBackProjectedDifferencesSpacingType;
86  typedef typename OutputBackProjectedDifferencesType::PointType OutputBackProjectedDifferencesPointType;
87 
90 
93 
96 
98  typedef typename ForwardProjectorOutputImageType::Pointer ForwardProjectorOutputImagePointer;
101  typedef typename ForwardProjectorOutputImageType::SpacingType ForwardProjectorOutputImageSpacingType;
102  typedef typename ForwardProjectorOutputImageType::PointType ForwardProjectorOutputImagePointType;
105 
108 
111 
114 
116  void SetInputVolume( InputVolumeType *im3D);
117 
119  void SetInputProjectionVolume( InputProjectionVolumeType *im2D);
120 
122  itkSetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
123  itkGetObjectMacro( ProjectionGeometry, ProjectionGeometryType );
124 
126  InputVolumePointer GetPointerToInputVolume(void);
127 
129  itkStaticConstMacro(InputVolumeDimension, unsigned int,
130  InputVolumeType::ImageDimension);
131  itkStaticConstMacro(OutputBackProjectedDifferencesDimension, unsigned int,
132  OutputBackProjectedDifferencesType::ImageDimension);
133 
139  virtual void GenerateInputRequestedRegion();
140  virtual void EnlargeOutputRequestedRegion(DataObject *output);
141 
143  void Initialise(void);
144 
146  void ClearVolumePriorToNextBackProjection(void) {m_BackProjector->ClearVolumePriorToNextBackProjection();}
147 
148 protected:
149 
152 
153  void PrintSelf(std::ostream& os, Indent indent) const;
154 
156  void GenerateData();
157 
160 
162  unsigned int m_NumberOfProjections;
163 
165  ForwardImageProjector3Dto2DPointer m_ForwardProjector;
166 
168  Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimate;
169 
171  BackwardImageProjector2Dto3DPointer m_BackProjector;
172 
174  ProjectionGeometryPointer m_ProjectionGeometry;
175 
178  virtual void VerifyInputInformation() {};
179 
180 private:
181  ForwardAndBackProjectionDifferenceFilter(const Self&); //purposely not implemented
182  void operator=(const Self&); //purposely not implemented
183 
184 };
185 
186 } // end namespace itk
187 
188 #ifndef ITK_MANUAL_INSTANTIATION
189 #include "itkForwardAndBackProjectionDifferenceFilter.txx"
190 #endif
191 
192 #endif
bool m_FlagPipelineInitialised
Flag indicating whether the filter has been initialised.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:159
InputProjectionVolumeType::PointType InputProjectionVolumePointType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:78
InputVolumeType::RegionType InputVolumeRegionType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:66
EulerAffineTransformType::Pointer EulerAffineTransformPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:89
void ClearVolumePriorToNextBackProjection(void)
Set the backprojection volume to zero prior to the next back-projection.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:146
itk::Subtract2DImageFromVolumeSliceFilter< IntensityType > Subtract2DImageFromVolumeSliceFilterType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:106
SmartPointer< Self > Pointer
Definition: itkProjectionGeometry.h:36
Class to project a 3D image into 2D.
Definition: itkBackwardImageProjector2Dto3D.h:29
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
OutputBackProjectedDifferencesType::SpacingType OutputBackProjectedDifferencesSpacingType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:85
Class to compute the difference between a reconstruction estimate and the target set of 2D projection...
Definition: itkForwardAndBackProjectionDifferenceFilter.h:43
Image< IntensityType, 3 > InputVolumeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:60
Image< IntensityType, 3 > InputProjectionVolumeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:72
SmartPointer< Self > Pointer
Definition: itkSubtract2DImageFromVolumeSliceFilter.h:39
SmartPointer< Self > Pointer
Definition: itkForwardImageProjector3Dto2D.h:36
Implements an operator for pixel-wise subtraction of a slice of a 3D volume from a 2D image...
Definition: itkSubtract2DImageFromVolumeSliceFilter.h:31
SmartPointer< const Self > ConstPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:54
PerspectiveProjectionTransformType::Pointer PerspectiveProjectionTransformPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:92
ProjectionGeometryPointer m_ProjectionGeometry
The specific projection geometry to be used.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:174
Definition: niftkITKAffineResampleImage.cxx:74
itk::BackwardImageProjector2Dto3D< IntensityType > BackwardImageProjector2Dto3DType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:109
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
InputVolumeType::SpacingType InputVolumeSpacingType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:69
OutputBackProjectedDifferencesType::PixelType OutputBackProjectedDifferencesPixelType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:83
InputProjectionVolumeType::RegionType InputProjectionVolumeRegionType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:74
ForwardProjectorOutputImageType::Pointer ForwardProjectorOutputImagePointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:98
InputProjectionVolumeType::PixelType InputProjectionVolumePixelType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:75
InputProjectionVolumeType::SpacingType InputProjectionVolumeSpacingType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:77
ForwardImageProjector3Dto2DType::OutputImageType ForwardProjectorOutputImageType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:97
PerspectiveProjectionTransform of a vector space (e.g. space coordinates)
Definition: itkPerspectiveProjectionTransform.h:39
Subtract2DImageFromVolumeSliceFilterType::Pointer Subtract2DImageFromVolumeSliceFilterPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:107
InputVolumeType::SizeType InputVolumeSizeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:68
Euler Affine transform.
Definition: itkEulerAffineTransform.h:38
InputVolumeType::PixelType InputVolumePixelType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:67
ProjectionGeometryType::Pointer ProjectionGeometryPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:113
SmartPointer< Self > Pointer
Definition: itkBackwardImageProjector2Dto3D.h:36
virtual void VerifyInputInformation()
Definition: itkForwardAndBackProjectionDifferenceFilter.h:178
OutputBackProjectedDifferencesType::Pointer OutputBackProjectedDifferencesPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:81
Abstract class to calculate the geometry of a CT or tomo machine.
Definition: itkProjectionGeometry.h:29
ForwardAndBackProjectionDifferenceFilter Self
Definition: itkForwardAndBackProjectionDifferenceFilter.h:50
itk::EulerAffineTransform< double, 3, 3 > EulerAffineTransformType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:88
Subtract2DImageFromVolumeSliceFilterPointer m_SubtractProjectionFromEstimate
A filter to perform the subtraction.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:168
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
SmartPointer< Self > Pointer
Definition: itkPerspectiveProjectionTransform.h:57
ForwardProjectorOutputImageType::PixelType ForwardProjectorOutputImagePixelType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:103
ForwardProjectorOutputImageType::SizeType ForwardProjectorOutputImageSizeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:100
ForwardProjectorOutputImageType::RegionType ForwardProjectorOutputImageRegionType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:99
InputProjectionVolumeType::SizeType InputProjectionVolumeSizeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:76
ForwardImageProjector3Dto2DPointer m_ForwardProjector
The forward-projector.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:165
Class to project a 3D image into 2D.
Definition: itkForwardImageProjector3Dto2D.h:29
InputVolumeType::Pointer InputVolumePointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:64
SmartPointer< Self > Pointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:53
InputVolumeType::ConstPointer InputVolumeConstPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:65
Image< IntensityType, 3 > OutputBackProjectedDifferencesType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:80
ImageToImageFilter< Image< IntensityType, 3 >, Image< IntensityType, 3 > > Superclass
Definition: itkForwardAndBackProjectionDifferenceFilter.h:52
ForwardImageProjector3Dto2DType::Pointer ForwardImageProjector3Dto2DPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:95
itk::ProjectionGeometry< IntensityType > ProjectionGeometryType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:112
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
OutputBackProjectedDifferencesType::SizeType OutputBackProjectedDifferencesSizeType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:84
InputVolumeType::PointType InputVolumePointType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:70
InputProjectionVolumeType::Pointer InputProjectionVolumePointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:73
ForwardProjectorOutputImageType::PointType ForwardProjectorOutputImagePointType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:102
ForwardProjectorOutputImageType::SpacingType ForwardProjectorOutputImageSpacingType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:101
itk::PerspectiveProjectionTransform< double > PerspectiveProjectionTransformType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:91
unsigned int m_NumberOfProjections
The number of projection images.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:162
BackwardImageProjector2Dto3DType::Pointer BackwardImageProjector2Dto3DPointer
Definition: itkForwardAndBackProjectionDifferenceFilter.h:110
OutputBackProjectedDifferencesType::PointType OutputBackProjectedDifferencesPointType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:86
virtual ~ForwardAndBackProjectionDifferenceFilter()
Definition: itkForwardAndBackProjectionDifferenceFilter.h:151
itk::ForwardImageProjector3Dto2D< IntensityType > ForwardImageProjector3Dto2DType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:94
SmartPointer< Self > Pointer
Definition: itkEulerAffineTransform.h:49
ForwardProjectorOutputImageType::IndexType ForwardProjectorOutputImageIndexType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:104
OutputBackProjectedDifferencesType::RegionType OutputBackProjectedDifferencesRegionType
Definition: itkForwardAndBackProjectionDifferenceFilter.h:82
BackwardImageProjector2Dto3DPointer m_BackProjector
The back-projector.
Definition: itkForwardAndBackProjectionDifferenceFilter.h:171