RTK  1.4.0
Reconstruction Toolkit
rtkOSEMConeBeamReconstructionFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright RTK Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 
19 #ifndef rtkOSEMConeBeamReconstructionFilter_h
20 #define rtkOSEMConeBeamReconstructionFilter_h
21 
24 
25 #include <itkExtractImageFilter.h>
26 #include <itkMultiplyImageFilter.h>
27 #include <itkAddImageAdaptor.h>
28 #include <itkDivideImageFilter.h>
30 
31 #include "rtkConstantImageSource.h"
33 
34 namespace rtk
35 {
36 
111 template<class TVolumeImage, class TProjectionImage=TVolumeImage>
113  public rtk::IterativeConeBeamReconstructionFilter<TVolumeImage, TProjectionImage>
114 {
115 public:
121 
123  typedef TVolumeImage VolumeType;
124  typedef TProjectionImage ProjectionType;
125 
135 
136  typedef typename Superclass::ForwardProjectionType ForwardProjectionType;
137  typedef typename Superclass::BackProjectionType BackProjectionType;
138 
140  itkNewMacro(Self);
141 
144 
146  itkGetMacro(Geometry, ThreeDCircularProjectionGeometry::Pointer);
149 
151  itkGetMacro(NumberOfIterations, unsigned int);
152  itkSetMacro(NumberOfIterations, unsigned int);
154 
156  itkGetMacro(NumberOfProjectionsPerSubset, unsigned int);
157  itkSetMacro(NumberOfProjectionsPerSubset, unsigned int);
159 
161  void SetForwardProjectionFilter (ForwardProjectionType _arg) ITK_OVERRIDE;
162 
164  void SetBackProjectionFilter (BackProjectionType _arg) ITK_OVERRIDE;
165 protected:
169 
170  void GenerateInputRequestedRegion() ITK_OVERRIDE;
171 
172  void GenerateOutputInformation() ITK_OVERRIDE;
173 
174  void GenerateData() ITK_OVERRIDE;
175 
178 #if ITK_VERSION_MAJOR<5
179  void VerifyInputInformation() ITK_OVERRIDE {}
180 #else
181  void VerifyInputInformation() const ITK_OVERRIDE {}
182 #endif
183 
184 
186  typename ExtractFilterType::Pointer m_ExtractFilter;
196 
197 private:
200 
201  //purposely not implemented
203  void operator=(const Self&);
204 
207 
209  unsigned int m_NumberOfIterations;
210 
211 }; // end of class
212 
213 } // end namespace rtk
214 
215 #ifndef ITK_MANUAL_INSTANTIATION
216 #include "rtkOSEMConeBeamReconstructionFilter.hxx"
217 #endif
218 
219 #endif
Base class for forward projection, i.e. accumulation along x-ray lines.
IterativeConeBeamReconstructionFilter< TVolumeImage, TProjectionImage > Superclass
BackProjectionFilterType::Pointer m_BackProjectionFilter
Generate an n-dimensional image with constant pixel values.
DivideProjectionFilterType::Pointer m_DivideProjectionFilter
BackProjectionFilterType::Pointer m_BackProjectionNormalizationFilter
itk::DivideOrZeroOutImageFilter< ProjectionType, ProjectionType, ProjectionType > DivideProjectionFilterType
Implements the Ordered-Subset Expectation-Maximization algorithm.
ConstantProjectionSourceType::Pointer m_OneConstantProjectionStackSource
ThreeDCircularProjectionGeometry::Pointer m_Geometry
itk::DivideOrZeroOutImageFilter< VolumeType, VolumeType, VolumeType > DivideVolumeFilterType
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
rtk::ConstantImageSource< VolumeType > ConstantVolumeSourceType
itk::ExtractImageFilter< ProjectionType, ProjectionType > ExtractFilterType
rtk::ConstantImageSource< ProjectionType > ConstantProjectionSourceType
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
itk::MultiplyImageFilter< VolumeType, VolumeType, VolumeType > MultiplyFilterType
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
ConstantProjectionSourceType::Pointer m_ZeroConstantProjectionStackSource
#define itkSetMacro(name, type)
rtk::ForwardProjectionImageFilter< ProjectionType, VolumeType > ForwardProjectionFilterType
rtk::BackProjectionImageFilter< VolumeType, ProjectionType > BackProjectionFilterType