RTK  1.4.0
Reconstruction Toolkit
rtkSARTConeBeamReconstructionFilter.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 rtkSARTConeBeamReconstructionFilter_h
20 #define rtkSARTConeBeamReconstructionFilter_h
21 
24 
25 #include <itkExtractImageFilter.h>
26 #include <itkMultiplyImageFilter.h>
27 #include <itkSubtractImageFilter.h>
28 #include <itkAddImageAdaptor.h>
29 #include <itkAddImageFilter.h>
32 
34 #include "rtkConstantImageSource.h"
37 
38 namespace rtk
39 {
40 
133 template<class TVolumeImage, class TProjectionImage=TVolumeImage>
135  public rtk::IterativeConeBeamReconstructionFilter<TVolumeImage, TProjectionImage>
136 {
137 public:
143 
145  typedef TVolumeImage VolumeType;
146  typedef TProjectionImage ProjectionType;
147 
163 
166 
168  itkNewMacro(Self);
169 
172 
174  itkGetModifiableObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
175  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
177 
179  itkGetMacro(NumberOfIterations, unsigned int);
180  itkSetMacro(NumberOfIterations, unsigned int);
182 
184  itkGetMacro(NumberOfProjectionsPerSubset, unsigned int);
185  itkSetMacro(NumberOfProjectionsPerSubset, unsigned int);
187 
189  itkGetMacro(Lambda, double);
190  itkSetMacro(Lambda, double);
192 
194  itkGetMacro(EnforcePositivity, bool);
195  itkSetMacro(EnforcePositivity, bool);
197 
199  void SetForwardProjectionFilter (ForwardProjectionType _arg) ITK_OVERRIDE;
200 
202  void SetBackProjectionFilter (BackProjectionType _arg) ITK_OVERRIDE;
203 
205  void SetGatingWeights(std::vector<float> weights);
206 
208  itkSetMacro(DisableDisplacedDetectorFilter, bool)
209  itkGetMacro(DisableDisplacedDetectorFilter, bool)
210 
211 protected:
213  virtual ~SARTConeBeamReconstructionFilter() ITK_OVERRIDE {}
214 
215  void GenerateInputRequestedRegion() ITK_OVERRIDE;
216 
217  void GenerateOutputInformation() ITK_OVERRIDE;
218 
219  void GenerateData() ITK_OVERRIDE;
220 
223  void VerifyInputInformation() ITK_OVERRIDE {}
224 
226  typename ExtractFilterType::Pointer m_ExtractFilter;
227  typename ExtractFilterType::Pointer m_ExtractFilterRayBox;
244 
247 
248 private:
252 
253  //purposely not implemented
255  void operator=(const Self&);
256 
259 
261  unsigned int m_NumberOfIterations;
262 
265  double m_Lambda;
266 
269  bool m_IsGated;
270  std::vector<float> m_GatingWeights;
271 }; // end of class
272 
273 } // end namespace rtk
274 
275 #ifndef ITK_MANUAL_INSTANTIATION
276 #include "rtkSARTConeBeamReconstructionFilter.hxx"
277 #endif
278 
279 #endif
DisplacedDetectorFilterType::Pointer m_DisplacedDetectorFilter
RayBoxIntersectionFilterType::Pointer m_RayBoxFilter
Base class for forward projection, i.e. accumulation along x-ray lines.
rtk::ForwardProjectionImageFilter< ProjectionType, VolumeType > ForwardProjectionFilterType
BackProjectionFilterType::Pointer m_BackProjectionNormalizationFilter
ThreeDCircularProjectionGeometry::Pointer m_Geometry
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
Generate an n-dimensional image with constant pixel values.
itk::MultiplyImageFilter< ProjectionType, ProjectionType, ProjectionType > MultiplyFilterType
rtk::ConstantImageSource< VolumeType > ConstantVolumeSourceType
Weigting for displaced detectors.
ConstantProjectionSourceType::Pointer m_ConstantProjectionStackSource
Analytical projection of a BoxShape.
itk::SubtractImageFilter< ProjectionType, ProjectionType > SubtractFilterType
ConstantProjectionSourceType::Pointer m_OneConstantProjectionStackSource
Projection geometry for a source and a 2-D flat panel.
BackProjectionFilterType::Pointer m_BackProjectionFilter
rtk::BackProjectionImageFilter< VolumeType, ProjectionType > BackProjectionFilterType
rtk::DisplacedDetectorImageFilter< ProjectionType > DisplacedDetectorFilterType
rtk::RayBoxIntersectionImageFilter< ProjectionType, ProjectionType > RayBoxIntersectionFilterType
Implements the Simultaneous Algebraic Reconstruction Technique [Andersen, 1984].
itk::DivideOrZeroOutImageFilter< VolumeType, VolumeType, VolumeType > DivideVolumeFilterType
rtk::ConstantImageSource< ProjectionType > ConstantProjectionSourceType
itk::MultiplyImageFilter< ProjectionType, ProjectionType, ProjectionType > GatingWeightsFilterType
DivideProjectionFilterType::Pointer m_DivideProjectionFilter
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
itk::ExtractImageFilter< ProjectionType, ProjectionType > ExtractFilterType
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
itk::DivideOrZeroOutImageFilter< ProjectionType, ProjectionType, ProjectionType > DivideProjectionFilterType
IterativeConeBeamReconstructionFilter< TVolumeImage, TProjectionImage > Superclass
#define itkSetMacro(name, type)
itk::AddImageFilter< VolumeType, VolumeType > AddFilterType
itk::ThresholdImageFilter< VolumeType > ThresholdFilterType