RTK  2.6.0
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  * 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 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 {
142 template <typename TOutputImage>
144  : public rtk::IterativeConeBeamReconstructionFilter<TOutputImage, TOutputImage>
145 {
146 public:
147  ITK_DISALLOW_COPY_AND_MOVE(ADMMWaveletsConeBeamReconstructionFilter);
148 
153 
155  itkNewMacro(Self);
156 
158  itkOverrideGetNameOfClassMacro(ADMMWaveletsConeBeamReconstructionFilter);
159 
161  // void SetInputVolume(const TOutputImage* Volume);
162 
164  // void SetInputProjectionStack(const TOutputImage* Projection);
165 
170  using AddFilterType = itk::AddImageFilter<TOutputImage>;
175 
176  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
177  using BackProjectionType = typename Superclass::BackProjectionType;
178 
180  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
181 
182  itkSetMacro(Alpha, float);
183  itkGetMacro(Alpha, float);
184 
185  itkSetMacro(Beta, float);
186  itkGetMacro(Beta, float);
187 
188  itkSetMacro(AL_iterations, float);
189  itkGetMacro(AL_iterations, float);
190 
191  itkSetMacro(CG_iterations, float);
192  itkGetMacro(CG_iterations, float);
193 
194  itkSetMacro(Order, unsigned int);
195  itkGetMacro(Order, unsigned int);
196 
197  itkSetMacro(NumberOfLevels, unsigned int);
198  itkGetMacro(NumberOfLevels, unsigned int);
199 
201  itkSetMacro(DisableDisplacedDetectorFilter, bool);
202  itkGetMacro(DisableDisplacedDetectorFilter, bool);
204 
205 protected:
207  ~ADMMWaveletsConeBeamReconstructionFilter() override = default;
208 
210  void
211  VerifyPreconditions() const override;
212 
214  void
215  GenerateData() override;
216 
222  typename AddFilterType::Pointer m_AddFilter1;
223  typename AddFilterType::Pointer m_AddFilter2;
232 
236  void
237  VerifyInputInformation() const override
238  {}
239 
242  void
243  GenerateInputRequestedRegion() override;
244  void
245  GenerateOutputInformation() override;
247 
248 private:
249  float m_Alpha{ 1 };
250  float m_Beta{ 1 };
251  unsigned int m_AL_iterations{ 10 };
252  unsigned int m_CG_iterations{ 3 };
253  unsigned int m_Order{ 3 };
254  unsigned int m_NumberOfLevels{ 5 };
256 
258 };
259 } // namespace rtk
260 
261 
262 #ifndef ITK_MANUAL_INSTANTIATION
263 # include "rtkADMMWaveletsConeBeamReconstructionFilter.hxx"
264 #endif
265 
266 #endif
Weigting for displaced detectors.
Projection geometry for a source and a 2-D flat panel.
#define itkSetMacro(name, type)
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...
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.