RTK  2.7.0
Reconstruction Toolkit
rtkADMMTotalVariationConeBeamReconstructionFilter.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 rtkADMMTotalVariationConeBeamReconstructionFilter_h
20 #define rtkADMMTotalVariationConeBeamReconstructionFilter_h
21 
22 #include <itkImageToImageFilter.h>
23 #include <itkAddImageFilter.h>
24 #include <itkSubtractImageFilter.h>
25 #include <itkMultiplyImageFilter.h>
26 
34 
35 namespace rtk
36 {
134 template <typename TOutputImage>
136  : public rtk::IterativeConeBeamReconstructionFilter<TOutputImage, TOutputImage>
137 {
138 public:
139  ITK_DISALLOW_COPY_AND_MOVE(ADMMTotalVariationConeBeamReconstructionFilter);
140 
145 
146  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
147  using BackProjectionType = typename Superclass::BackProjectionType;
148 
150  itkNewMacro(Self);
151 
153  itkOverrideGetNameOfClassMacro(ADMMTotalVariationConeBeamReconstructionFilter);
154 
161  using GradientImageType =
162  typename TOutputImage::template RebindImageType<VectorPixelType, TOutputImage::ImageDimension>;
164  typename TOutputImage::ValueType,
165  typename TOutputImage::ValueType,
177 
179  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
180 
182  void
183  SetBetaForCurrentIteration(int iter);
184 
186  void
187  SetGatingWeights(std::vector<float> weights);
188 
189  itkSetMacro(Alpha, float);
190  itkGetMacro(Alpha, float);
191 
192  itkSetMacro(Beta, float);
193  itkGetMacro(Beta, float);
194 
195  itkSetMacro(AL_iterations, float);
196  itkGetMacro(AL_iterations, float);
197 
198  itkSetMacro(CG_iterations, float);
199  itkGetMacro(CG_iterations, float);
200 
202  itkSetMacro(DisableDisplacedDetectorFilter, bool);
203  itkGetMacro(DisableDisplacedDetectorFilter, bool);
205 
206 protected:
209 
211  void
212  VerifyPreconditions() const override;
213 
215  void
216  GenerateData() override;
217 
237 
241  void
242  VerifyInputInformation() const override
243  {}
244 
247  void
248  GenerateInputRequestedRegion() override;
249  void
250  GenerateOutputInformation() override;
252 
255  bool m_IsGated;
256  std::vector<float> m_GatingWeights;
258 
259 private:
260  float m_Alpha;
261  float m_Beta;
262  unsigned int m_AL_iterations;
263  unsigned int m_CG_iterations;
264 
266 };
267 } // namespace rtk
268 
269 
270 #ifndef ITK_MANUAL_INSTANTIATION
271 # include "rtkADMMTotalVariationConeBeamReconstructionFilter.hxx"
272 #endif
273 
274 #endif
typename TOutputImage::template RebindImageType< VectorPixelType, TOutputImage::ImageDimension > GradientImageType
ForwardProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_ForwardProjectionFilter
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilter
Weigting for displaced detectors.
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilterForConjugateGradient
Projection geometry for a source and a 2-D flat panel.
#define itkSetMacro(name, type)
Computes the gradient of an image using forward difference.
Implements the operator A used in the conjugate gradient step of ADMM reconstruction with total varia...
Multiplies each (n-1) dimension image by the corresponding element in a vector.
Mother class for cone beam reconstruction filters which need runtime selection of their forward and b...
Computes the Total Variation from a gradient input image (pixels are vectors), soft thresholds it...
Computes the backward differences divergence (adjoint of the forward differences gradient) of the inp...
Implements the ADMM reconstruction with total variation regularization.
Solves AX = B by conjugate gradient.