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 #ifdef itkOverrideGetNameOfClassMacro
159  itkOverrideGetNameOfClassMacro(ADMMWaveletsConeBeamReconstructionFilter);
160 #else
162 #endif
163 
164 
166  // void SetInputVolume(const TOutputImage* Volume);
167 
169  // void SetInputProjectionStack(const TOutputImage* Projection);
170 
175  using AddFilterType = itk::AddImageFilter<TOutputImage>;
180 
181  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
182  using BackProjectionType = typename Superclass::BackProjectionType;
183 
185  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
186 
187  itkSetMacro(Alpha, float);
188  itkGetMacro(Alpha, float);
189 
190  itkSetMacro(Beta, float);
191  itkGetMacro(Beta, float);
192 
193  itkSetMacro(AL_iterations, float);
194  itkGetMacro(AL_iterations, float);
195 
196  itkSetMacro(CG_iterations, float);
197  itkGetMacro(CG_iterations, float);
198 
199  itkSetMacro(Order, unsigned int);
200  itkGetMacro(Order, unsigned int);
201 
202  itkSetMacro(NumberOfLevels, unsigned int);
203  itkGetMacro(NumberOfLevels, unsigned int);
204 
206  itkSetMacro(DisableDisplacedDetectorFilter, bool);
207  itkGetMacro(DisableDisplacedDetectorFilter, bool);
209 
210 protected:
212  ~ADMMWaveletsConeBeamReconstructionFilter() override = default;
213 
215  void
216  VerifyPreconditions() const override;
217 
219  void
220  GenerateData() override;
221 
227  typename AddFilterType::Pointer m_AddFilter1;
228  typename AddFilterType::Pointer m_AddFilter2;
237 
241  void
242  VerifyInputInformation() const override
243  {}
244 
247  void
248  GenerateInputRequestedRegion() override;
249  void
250  GenerateOutputInformation() override;
252 
253 private:
254  float m_Alpha{ 1 };
255  float m_Beta{ 1 };
256  unsigned int m_AL_iterations{ 10 };
257  unsigned int m_CG_iterations{ 3 };
258  unsigned int m_Order{ 3 };
259  unsigned int m_NumberOfLevels{ 5 };
261 
263 };
264 } // namespace rtk
265 
266 
267 #ifndef ITK_MANUAL_INSTANTIATION
268 # include "rtkADMMWaveletsConeBeamReconstructionFilter.hxx"
269 #endif
270 
271 #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.