RTK  2.6.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  * https://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 
25 
26 #include <itkExtractImageFilter.h>
27 #include <itkMultiplyImageFilter.h>
28 #include <itkAddImageAdaptor.h>
29 #include <itkDivideImageFilter.h>
31 
32 #include "rtkConstantImageSource.h"
34 
35 namespace rtk
36 {
37 
117 template <class TVolumeImage, class TProjectionImage = TVolumeImage>
118 class ITK_TEMPLATE_EXPORT OSEMConeBeamReconstructionFilter
119  : public rtk::IterativeConeBeamReconstructionFilter<TVolumeImage, TProjectionImage>
120 {
121 public:
122  ITK_DISALLOW_COPY_AND_MOVE(OSEMConeBeamReconstructionFilter);
123 
129 
131  using VolumeType = TVolumeImage;
132  using ProjectionType = TProjectionImage;
133 
144 
145  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
146  using BackProjectionType = typename Superclass::BackProjectionType;
147 
149  itkNewMacro(Self);
150 
152 #ifdef itkOverrideGetNameOfClassMacro
153  itkOverrideGetNameOfClassMacro(OSEMConeBeamReconstructionFilter);
154 #else
156 #endif
157 
158 
160  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
161  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
163 
165  itkGetMacro(NumberOfIterations, unsigned int);
166  itkSetMacro(NumberOfIterations, unsigned int);
168 
170  itkGetMacro(NumberOfProjectionsPerSubset, unsigned int);
171  itkSetMacro(NumberOfProjectionsPerSubset, unsigned int);
173 
175  itkGetMacro(BetaRegularization, double);
176  itkSetMacro(BetaRegularization, double);
178 
184  itkGetMacro(StoreNormalizationImages, bool);
185  itkSetMacro(StoreNormalizationImages, bool);
187 
188 protected:
190  ~OSEMConeBeamReconstructionFilter() override = default;
191 
193  void
194  VerifyPreconditions() const override;
195 
196  void
197  GenerateInputRequestedRegion() override;
198 
199  void
200  GenerateOutputInformation() override;
201 
202  void
203  GenerateData() override;
204 
207  void
208  VerifyInputInformation() const override
209  {}
210 
223 
224 private:
226  unsigned int m_NumberOfProjectionsPerSubset{ 1 };
227 
230 
232  unsigned int m_NumberOfIterations{ 3 };
233 
235  double m_BetaRegularization{ 0. };
236 
237  bool m_StoreNormalizationImages{ true };
238 
239 }; // end of class
240 
241 } // end namespace rtk
242 
243 #ifndef ITK_MANUAL_INSTANTIATION
244 # include "rtkOSEMConeBeamReconstructionFilter.hxx"
245 #endif
246 
247 #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.
DePierroRegularizationFilterType::Pointer m_DePierroRegularizationFilter
#define itkSetMacro(name, type)
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
Implements a regularization for MLEM/OSEM reconstruction.
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
ConstantProjectionSourceType::Pointer m_ZeroConstantProjectionStackSource