RTK  1.4.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  * 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:
149 
151  itkNewMacro(Self)
152 
153 
155 
157 // void SetInputVolume(const TOutputImage* Volume);
158 
160 // void SetInputProjectionStack(const TOutputImage* Projection);
161 
162  typedef rtk::ForwardProjectionImageFilter< TOutputImage, TOutputImage > ForwardProjectionFilterType;
163  typedef rtk::BackProjectionImageFilter< TOutputImage, TOutputImage > BackProjectionFilterType;
166  typedef itk::AddImageFilter<TOutputImage> AddFilterType;
171 
172  typedef typename Superclass::ForwardProjectionType ForwardProjectionType;
173  typedef typename Superclass::BackProjectionType BackProjectionType;
174 
176  void SetForwardProjectionFilter (ForwardProjectionType _arg) ITK_OVERRIDE;
177 
179  void SetBackProjectionFilter (BackProjectionType _arg) ITK_OVERRIDE;
180 
182  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry)
183 
184  itkSetMacro(Alpha, float)
185  itkGetMacro(Alpha, float)
186 
187  itkSetMacro(Beta, float)
188  itkGetMacro(Beta, float)
189 
190  itkSetMacro(AL_iterations, float)
191  itkGetMacro(AL_iterations, float)
192 
193  itkSetMacro(CG_iterations, float)
194  itkGetMacro(CG_iterations, float)
195 
196  itkSetMacro(Order, unsigned int)
197  itkGetMacro(Order, unsigned int)
198 
199  itkSetMacro(NumberOfLevels, unsigned int)
200  itkGetMacro(NumberOfLevels, unsigned int)
201 
203  itkSetMacro(DisableDisplacedDetectorFilter, bool)
204  itkGetMacro(DisableDisplacedDetectorFilter, bool)
205 
206 protected:
207  ADMMWaveletsConeBeamReconstructionFilter();
208  virtual ~ADMMWaveletsConeBeamReconstructionFilter() ITK_OVERRIDE {}
209 
211  void GenerateData() ITK_OVERRIDE;
212 
227 
231 #if ITK_VERSION_MAJOR<5
232  void VerifyInputInformation() ITK_OVERRIDE {}
233 #else
234  void VerifyInputInformation() const ITK_OVERRIDE {}
235 #endif
236 
237 
240  void GenerateInputRequestedRegion() ITK_OVERRIDE;
241  void GenerateOutputInformation() ITK_OVERRIDE;
243 
244 private:
245  ADMMWaveletsConeBeamReconstructionFilter(const Self &); //purposely not implemented
246  void operator=(const Self &); //purposely not implemented
247 
248  float m_Alpha;
249  float m_Beta;
250  unsigned int m_AL_iterations;
251  unsigned int m_CG_iterations;
252  unsigned int m_Order;
253  unsigned int m_NumberOfLevels;
255 
257 };
258 } //namespace ITK
259 
260 
261 #ifndef ITK_MANUAL_INSTANTIATION
262 #include "rtkADMMWaveletsConeBeamReconstructionFilter.hxx"
263 #endif
264 
265 #endif
Base class for forward projection, i.e. accumulation along x-ray lines.
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.
IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage > Superclass
#define itkSetMacro(name, type)