RTK  2.6.0
Reconstruction Toolkit
rtkConjugateGradientImageFilter.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 rtkConjugateGradientImageFilter_h
20 #define rtkConjugateGradientImageFilter_h
21 
22 #include <itkSubtractImageFilter.h>
24 #include <itkTimeProbe.h>
25 
27 
32 
33 namespace rtk
34 {
35 
45 template <typename OutputImageType>
46 class ITK_TEMPLATE_EXPORT ConjugateGradientImageFilter
47  : public itk::InPlaceImageFilter<OutputImageType, OutputImageType>
48 {
49 public:
50  ITK_DISALLOW_COPY_AND_MOVE(ConjugateGradientImageFilter);
51 
57  using OutputImagePointer = typename OutputImageType::Pointer;
58 
60  itkNewMacro(Self);
61 
63  itkOverrideGetNameOfClassMacro(ConjugateGradientImageFilter);
64 
66  itkGetMacro(NumberOfIterations, int);
67  itkSetMacro(NumberOfIterations, int);
69 
70  void
71  SetA(ConjugateGradientOperatorType * _arg);
72 
74  void
75  SetX(const OutputImageType * OutputImage);
76 
78  void
79  SetB(const OutputImageType * OutputImage);
80 
81 protected:
83  ~ConjugateGradientImageFilter() override = default;
84 
86  GetX();
88  GetB();
89 
91  void
92  GenerateData() override;
93 
95  void
96  GenerateInputRequestedRegion() override;
97  void
98  GenerateOutputInformation() override;
100 
102 
104 };
105 } // namespace rtk
106 
107 
108 #ifndef ITK_MANUAL_INSTANTIATION
109 # include "rtkConjugateGradientImageFilter.hxx"
110 #endif
111 
112 #endif
typename OutputImageType::Pointer OutputImagePointer
#define itkSetMacro(name, type)
TOutputImage OutputImageType
Solves AX = B by conjugate gradient.