RTK  2.5.0
Reconstruction Toolkit
rtkIterativeFDKConeBeamReconstructionFilter.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 rtkIterativeFDKConeBeamReconstructionFilter_h
20 #define rtkIterativeFDKConeBeamReconstructionFilter_h
21 
22 #include <itkMultiplyImageFilter.h>
23 #include <itkSubtractImageFilter.h>
26 
27 #include "rtkConstantImageSource.h"
33 
34 namespace rtk
35 {
36 
106 template <class TInputImage, class TOutputImage = TInputImage, class TFFTPrecision = double>
108  : public rtk::IterativeConeBeamReconstructionFilter<TInputImage, TOutputImage>
109 {
110 public:
111  ITK_DISALLOW_COPY_AND_MOVE(IterativeFDKConeBeamReconstructionFilter);
112 
118 
120  using InputImageType = TInputImage;
121  using OutputImageType = TOutputImage;
122 
123  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
124  using BackProjectionType = typename Superclass::BackProjectionType;
125 
136 
138  itkNewMacro(Self);
139 
141 #ifdef itkOverrideGetNameOfClassMacro
142  itkOverrideGetNameOfClassMacro(IterativeFDKConeBeamReconstructionFilter);
143 #else
145 #endif
146 
147 
149  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
150  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
152 
154  itkGetMacro(NumberOfIterations, unsigned int);
155  itkSetMacro(NumberOfIterations, unsigned int);
157 
159  itkGetMacro(Lambda, double);
160  itkSetMacro(Lambda, double);
162 
164  itkGetMacro(EnforcePositivity, bool);
165  itkSetMacro(EnforcePositivity, bool);
167 
169  void
170  SetBackProjectionFilter(BackProjectionType itkNotUsed(_arg)) override
171  {
172  itkExceptionMacro(<< "Backprojection cannot be changed");
173  }
174 
176  itkGetMacro(TruncationCorrection, double);
177  itkSetMacro(TruncationCorrection, double);
179 
181  itkGetMacro(HannCutFrequency, double);
182  itkSetMacro(HannCutFrequency, double);
184 
186  itkGetMacro(HannCutFrequencyY, double);
187  itkSetMacro(HannCutFrequencyY, double);
189 
191  itkGetMacro(ProjectionSubsetSize, unsigned int);
192  itkSetMacro(ProjectionSubsetSize, unsigned int);
194 
196  itkSetMacro(DisableDisplacedDetectorFilter, bool);
197  itkGetMacro(DisableDisplacedDetectorFilter, bool);
199 
200 protected:
202  ~IterativeFDKConeBeamReconstructionFilter() override = default;
203 
205  void
206  VerifyPreconditions() ITKv5_CONST override;
207 
208  void
209  GenerateInputRequestedRegion() override;
210 
211  void
212  GenerateOutputInformation() override;
213 
214  void
215  GenerateData() override;
216 
219  void
220  VerifyInputInformation() const override
221  {}
222 
224  typename Superclass::ForwardProjectionPointerType m_ForwardProjectionFilter;
234 
241 
242 private:
245 
247  unsigned int m_NumberOfIterations;
248 
250  double m_Lambda;
251 }; // end of class
252 
253 } // end namespace rtk
254 
255 #ifndef ITK_MANUAL_INSTANTIATION
256 # include "rtkIterativeFDKConeBeamReconstructionFilter.hxx"
257 #endif
258 
259 #endif
Generate an n-dimensional image with constant pixel values.
Weigting for displaced detectors.
Analytical projection of a BoxShape.
Projection geometry for a source and a 2-D flat panel.
#define itkSetMacro(name, type)
TOutputImage OutputImageType
Implements Feldkamp, David and Kress cone-beam reconstruction.
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...