RTK  2.0.1
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:
116  ITK_DISALLOW_COPY_AND_ASSIGN(OSEMConeBeamReconstructionFilter);
117 
123 
125  using VolumeType = TVolumeImage ;
126  using ProjectionType = TProjectionImage;
127 
137 
140 
142  itkNewMacro(Self);
143 
146 
148  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
149  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
151 
153  itkGetMacro(NumberOfIterations, unsigned int);
154  itkSetMacro(NumberOfIterations, unsigned int);
156 
158  itkGetMacro(NumberOfProjectionsPerSubset, unsigned int);
159  itkSetMacro(NumberOfProjectionsPerSubset, unsigned int);
161 
163  void SetForwardProjectionFilter (ForwardProjectionType _arg) override;
164 
166  void SetBackProjectionFilter (BackProjectionType _arg) override;
167 protected:
169  ~OSEMConeBeamReconstructionFilter() override = default;
171 
172  void GenerateInputRequestedRegion() override;
173 
174  void GenerateOutputInformation() override;
175 
176  void GenerateData() override;
177 
180 #if ITK_VERSION_MAJOR<5
181  void VerifyInputInformation() override {}
182 #else
183  void VerifyInputInformation() const override {}
184 #endif
185 
186 
188  typename ExtractFilterType::Pointer m_ExtractFilter;
198 
199 private:
202 
205 
207  unsigned int m_NumberOfIterations;
208 
209 }; // end of class
210 
211 } // end namespace rtk
212 
213 #ifndef ITK_MANUAL_INSTANTIATION
214 #include "rtkOSEMConeBeamReconstructionFilter.hxx"
215 #endif
216 
217 #endif
Base class for forward projection, i.e. accumulation along x-ray lines.
BackProjectionFilterType::Pointer m_BackProjectionFilter
Generate an n-dimensional image with constant pixel values.
typename Superclass::BackProjectionType BackProjectionType
DivideProjectionFilterType::Pointer m_DivideProjectionFilter
BackProjectionFilterType::Pointer m_BackProjectionNormalizationFilter
Implements the Ordered-Subset Expectation-Maximization algorithm.
typename Superclass::ForwardProjectionType ForwardProjectionType
ConstantProjectionSourceType::Pointer m_OneConstantProjectionStackSource
ThreeDCircularProjectionGeometry::Pointer m_Geometry
Projection geometry for a source and a 2-D flat panel.
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
ConstantProjectionSourceType::Pointer m_ZeroConstantProjectionStackSource
#define itkSetMacro(name, type)