RTK  1.4.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  * 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 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:
116 
118  typedef TInputImage InputImageType;
119  typedef TOutputImage OutputImageType;
120 
121  typedef typename Superclass::ForwardProjectionType ForwardProjectionType;
122  typedef typename Superclass::BackProjectionType BackProjectionType;
123 
134 
136  itkNewMacro(Self);
137 
140 
142  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
143  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
145 
147  itkGetMacro(NumberOfIterations, unsigned int);
148  itkSetMacro(NumberOfIterations, unsigned int);
150 
152  itkGetMacro(Lambda, double);
153  itkSetMacro(Lambda, double);
155 
157  itkGetMacro(EnforcePositivity, bool);
158  itkSetMacro(EnforcePositivity, bool);
160 
162  void SetForwardProjectionFilter (ForwardProjectionType _arg) ITK_OVERRIDE;
163 
165  void SetBackProjectionFilter (BackProjectionType itkNotUsed(_arg)) ITK_OVERRIDE {itkExceptionMacro(<< "Backprojection cannot be changed");}
166 
168  itkGetMacro(TruncationCorrection, double);
169  itkSetMacro(TruncationCorrection, double);
171 
173  itkGetMacro(HannCutFrequency, double);
174  itkSetMacro(HannCutFrequency, double);
176 
178  itkGetMacro(HannCutFrequencyY, double);
179  itkSetMacro(HannCutFrequencyY, double);
181 
183  itkGetMacro(ProjectionSubsetSize, unsigned int);
184  itkSetMacro(ProjectionSubsetSize, unsigned int);
186 
188  itkSetMacro(DisableDisplacedDetectorFilter, bool)
189  itkGetMacro(DisableDisplacedDetectorFilter, bool)
190 
191 protected:
194 
195  void GenerateInputRequestedRegion() ITK_OVERRIDE;
196 
197  void GenerateOutputInformation() ITK_OVERRIDE;
198 
199  void GenerateData() ITK_OVERRIDE;
200 
203 #if ITK_VERSION_MAJOR<5
204  void VerifyInputInformation() ITK_OVERRIDE {}
205 #else
206  void VerifyInputInformation() const ITK_OVERRIDE {}
207 #endif
208 
209 
221 
228 
229 private:
230  //purposely not implemented
232  void operator=(const Self&);
233 
236 
238  unsigned int m_NumberOfIterations;
239 
241  double m_Lambda;
242 }; // end of class
243 
244 } // end namespace rtk
245 
246 #ifndef ITK_MANUAL_INSTANTIATION
247 #include "rtkIterativeFDKConeBeamReconstructionFilter.hxx"
248 #endif
249 
250 #endif
itk::MultiplyImageFilter< OutputImageType, OutputImageType, OutputImageType > MultiplyFilterType
Generate an n-dimensional image with constant pixel values.
Weigting for displaced detectors.
rtk::DisplacedDetectorImageFilter< OutputImageType, OutputImageType > DisplacedDetectorFilterType
itk::SubtractImageFilter< OutputImageType, OutputImageType > SubtractFilterType
Analytical projection of a BoxShape.
rtk::RayBoxIntersectionImageFilter< OutputImageType, OutputImageType > RayBoxIntersectionFilterType
Projection geometry for a source and a 2-D flat panel.
itk::DivideOrZeroOutImageFilter< OutputImageType > DivideFilterType
Implements Feldkamp, David and Kress cone-beam reconstruction.
rtk::ParkerShortScanImageFilter< OutputImageType, OutputImageType > ParkerFilterType
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
IterativeConeBeamReconstructionFilter< TInputImage, TOutputImage > Superclass
rtk::FDKConeBeamReconstructionFilter< OutputImageType, OutputImageType, TFFTPrecision > FDKFilterType
#define itkSetMacro(name, type)