RTK  2.4.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  * 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 
153 
155  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
156  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
158 
160  itkGetMacro(NumberOfIterations, unsigned int);
161  itkSetMacro(NumberOfIterations, unsigned int);
163 
165  itkGetMacro(NumberOfProjectionsPerSubset, unsigned int);
166  itkSetMacro(NumberOfProjectionsPerSubset, unsigned int);
168 
170  itkGetMacro(SigmaZero, double);
171  itkSetMacro(SigmaZero, double);
173 
175  itkGetMacro(Alpha, double);
176  itkSetMacro(Alpha, double);
178 
180  itkGetMacro(BetaRegularization, double);
181  itkSetMacro(BetaRegularization, double);
183 
189  itkGetMacro(StoreNormalizationImages, bool);
190  itkSetMacro(StoreNormalizationImages, bool);
192 
193 protected:
195  ~OSEMConeBeamReconstructionFilter() override = default;
196 
198  void
199  VerifyPreconditions() ITKv5_CONST override;
200 
201  void
202  GenerateInputRequestedRegion() override;
203 
204  void
205  GenerateOutputInformation() override;
206 
207  void
208  GenerateData() override;
209 
212  void
213  VerifyInputInformation() const override
214  {}
215 
228 
229 private:
231  unsigned int m_NumberOfProjectionsPerSubset{ 1 };
232 
235 
237  unsigned int m_NumberOfIterations{ 3 };
238 
240  double m_SigmaZero{ -1. };
241  double m_Alpha{ -1. };
242 
244  double m_BetaRegularization{ 0. };
245 
246  bool m_StoreNormalizationImages{ true };
247 
248 }; // end of class
249 
250 } // end namespace rtk
251 
252 #ifndef ITK_MANUAL_INSTANTIATION
253 # include "rtkOSEMConeBeamReconstructionFilter.hxx"
254 #endif
255 
256 #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