RTK  2.0.1
Reconstruction Toolkit
rtkADMMWaveletsConeBeamReconstructionFilter.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 rtkADMMWaveletsConeBeamReconstructionFilter_h
20 #define rtkADMMWaveletsConeBeamReconstructionFilter_h
21 
22 #include <itkImageToImageFilter.h>
23 #include <itkAddImageFilter.h>
24 #include <itkSubtractImageFilter.h>
25 #include <itkMultiplyImageFilter.h>
26 
33 
34 namespace rtk
35 {
141 template< typename TOutputImage>
143 {
144 public:
145  ITK_DISALLOW_COPY_AND_ASSIGN(ADMMWaveletsConeBeamReconstructionFilter);
146 
151 
153  itkNewMacro(Self)
154 
155 
157 
159 // void SetInputVolume(const TOutputImage* Volume);
160 
162 // void SetInputProjectionStack(const TOutputImage* Projection);
163 
164  using ForwardProjectionFilterType = rtk::ForwardProjectionImageFilter< TOutputImage, TOutputImage >;
165  using BackProjectionFilterType = rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >;
168  using AddFilterType = itk::AddImageFilter<TOutputImage>;
173 
176 
178  void SetForwardProjectionFilter (ForwardProjectionType _arg) override;
179 
181  void SetBackProjectionFilter (BackProjectionType _arg) override;
182 
184  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry)
185 
186  itkSetMacro(Alpha, float)
187  itkGetMacro(Alpha, float)
188 
189  itkSetMacro(Beta, float)
190  itkGetMacro(Beta, float)
191 
192  itkSetMacro(AL_iterations, float)
193  itkGetMacro(AL_iterations, float)
194 
195  itkSetMacro(CG_iterations, float)
196  itkGetMacro(CG_iterations, float)
197 
198  itkSetMacro(Order, unsigned int)
199  itkGetMacro(Order, unsigned int)
200 
201  itkSetMacro(NumberOfLevels, unsigned int)
202  itkGetMacro(NumberOfLevels, unsigned int)
203 
205  itkSetMacro(DisableDisplacedDetectorFilter, bool)
206  itkGetMacro(DisableDisplacedDetectorFilter, bool)
207 
208 protected:
209  ADMMWaveletsConeBeamReconstructionFilter();
210  ~ADMMWaveletsConeBeamReconstructionFilter() override = default;
211 
213  void GenerateData() override;
214 
227  typename BackProjectionImageFilter<TOutputImage, TOutputImage>::Pointer m_BackProjectionFilter;
229 
233 #if ITK_VERSION_MAJOR<5
234  void VerifyInputInformation() override {}
235 #else
236  void VerifyInputInformation() const override {}
237 #endif
238 
239 
242  void GenerateInputRequestedRegion() override;
243  void GenerateOutputInformation() override;
245 
246 private:
247  float m_Alpha{1};
248  float m_Beta{1};
249  unsigned int m_AL_iterations{10};
250  unsigned int m_CG_iterations{3};
251  unsigned int m_Order{3};
252  unsigned int m_NumberOfLevels{5};
254 
256 };
257 } //namespace ITK
258 
259 
260 #ifndef ITK_MANUAL_INSTANTIATION
261 #include "rtkADMMWaveletsConeBeamReconstructionFilter.hxx"
262 #endif
263 
264 #endif
void SetForwardProjectionFilter(ForwardProjectionType _arg) override
Weigting for displaced detectors.
Projection geometry for a source and a 2-D flat panel.
Implements the ADMM reconstruction with wavelets regularization.
Implements the operator A used in the conjugate gradient step of ADMM reconstruction with wavelets re...
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilter
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
void SetBackProjectionFilter(BackProjectionType _arg) override
ForwardProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_ForwardProjectionFilterForConjugateGradient
Solves AX = B by conjugate gradient.
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilterForConjugateGradient
Deconstructs an image, soft thresholds its wavelets coefficients, then reconstructs.
#define itkSetMacro(name, type)