RTK  2.0.1
Reconstruction Toolkit
rtkFDKBackProjectionImageFilter.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 rtkFDKBackProjectionImageFilter_h
20 #define rtkFDKBackProjectionImageFilter_h
21 
23 
24 namespace rtk
25 {
26 
38 template <class TInputImage, class TOutputImage>
39 class ITK_EXPORT FDKBackProjectionImageFilter :
40  public BackProjectionImageFilter<TInputImage,TOutputImage>
41 {
42 public:
43  ITK_DISALLOW_COPY_AND_ASSIGN(FDKBackProjectionImageFilter);
44 
50 
51  using ProjectionMatrixType = typename Superclass::ProjectionMatrixType;
52  using OutputImageRegionType = typename TOutputImage::RegionType;
53  using ProjectionImageType = typename Superclass::ProjectionImageType;
54  using ProjectionImagePointer = typename ProjectionImageType::Pointer;
55 
57  itkNewMacro(Self);
58 
61 
62 protected:
63  FDKBackProjectionImageFilter() = default;
64  ~FDKBackProjectionImageFilter() override = default;
65 
66  void GenerateOutputInformation() override;
67 
68 #if ITK_VERSION_MAJOR<5
69  void ThreadedGenerateData( const OutputImageRegionType& outputRegionForThread, ThreadIdType threadId ) override;
70 #else
71  void DynamicThreadedGenerateData(const OutputImageRegionType& outputRegionForThread) override;
72 #endif
73 
76  void OptimizedBackprojectionX(const OutputImageRegionType& region, const ProjectionMatrixType& matrix,
77  const ProjectionImagePointer projection) override;
78 
81  void OptimizedBackprojectionY(const OutputImageRegionType& region, const ProjectionMatrixType& matrix,
82  const ProjectionImagePointer projection) override;
83 
84 };
85 
86 } // end namespace rtk
87 
88 #ifndef ITK_MANUAL_INSTANTIATION
89 #include "rtkFDKBackProjectionImageFilter.hxx"
90 #endif
91 
92 #endif
typename ProjectionImageType::Pointer ProjectionImagePointer
CPU version of the backprojection of the FDK algorithm.
unsigned int ThreadIdType
typename TOutputImage::RegionType OutputImageRegionType
typename GeometryType::MatrixType ProjectionMatrixType