RTK  2.6.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 {
133 template <typename TOutputImage,
134  typename TGradientOutputImage =
136  TOutputImage::ImageDimension>>
138  : public rtk::IterativeConeBeamReconstructionFilter<TOutputImage, TOutputImage>
139 {
140 public:
141  ITK_DISALLOW_COPY_AND_MOVE(ADMMTotalVariationConeBeamReconstructionFilter);
142 
147 
148  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
149  using BackProjectionType = typename Superclass::BackProjectionType;
150 
152  itkNewMacro(Self);
153 
155  itkOverrideGetNameOfClassMacro(ADMMTotalVariationConeBeamReconstructionFilter);
156 
163  typename TOutputImage::ValueType,
164  typename TOutputImage::ValueType,
165  TGradientOutputImage>;
169  using AddGradientsFilterType = itk::AddImageFilter<TGradientOutputImage>;
176 
178  itkSetObjectMacro(Geometry, ThreeDCircularProjectionGeometry);
179 
181  void
182  SetBetaForCurrentIteration(int iter);
183 
185  void
186  SetGatingWeights(std::vector<float> weights);
187 
188  itkSetMacro(Alpha, float);
189  itkGetMacro(Alpha, float);
190 
191  itkSetMacro(Beta, float);
192  itkGetMacro(Beta, float);
193 
194  itkSetMacro(AL_iterations, float);
195  itkGetMacro(AL_iterations, float);
196 
197  itkSetMacro(CG_iterations, float);
198  itkGetMacro(CG_iterations, float);
199 
201  itkSetMacro(DisableDisplacedDetectorFilter, bool);
202  itkGetMacro(DisableDisplacedDetectorFilter, bool);
204 
205 protected:
208 
210  void
211  VerifyPreconditions() const override;
212 
214  void
215  GenerateData() override;
216 
226  typename AddGradientsFilterType::Pointer m_AddGradientsFilter;
236 
240  void
241  VerifyInputInformation() const override
242  {}
243 
246  void
247  GenerateInputRequestedRegion() override;
248  void
249  GenerateOutputInformation() override;
251 
254  bool m_IsGated;
255  std::vector<float> m_GatingWeights;
257 
258 private:
259  float m_Alpha;
260  float m_Beta;
261  unsigned int m_AL_iterations;
262  unsigned int m_CG_iterations;
263 
265 };
266 } // namespace rtk
267 
268 
269 #ifndef ITK_MANUAL_INSTANTIATION
270 # include "rtkADMMTotalVariationConeBeamReconstructionFilter.hxx"
271 #endif
272 
273 #endif
rtk::SoftThresholdTVImageFilter< TGradientOutputImage > SoftThresholdTVFilterType
Weigting for displaced detectors.
Projection geometry for a source and a 2-D flat panel.
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilter
#define itkSetMacro(name, type)
ForwardProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_ForwardProjectionFilter
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.
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilterForConjugateGradient