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 #ifdef itkOverrideGetNameOfClassMacro
64  itkOverrideGetNameOfClassMacro(ConjugateGradientImageFilter);
65 #else
67 #endif
68 
69 
71  itkGetMacro(NumberOfIterations, int);
72  itkSetMacro(NumberOfIterations, int);
74 
75  void
76  SetA(ConjugateGradientOperatorType * _arg);
77 
79  void
80  SetX(const OutputImageType * OutputImage);
81 
83  void
84  SetB(const OutputImageType * OutputImage);
85 
86 protected:
88  ~ConjugateGradientImageFilter() override = default;
89 
91  GetX();
93  GetB();
94 
96  void
97  GenerateData() override;
98 
100  void
101  GenerateInputRequestedRegion() override;
102  void
103  GenerateOutputInformation() override;
105 
107 
109 };
110 } // namespace rtk
111 
112 
113 #ifndef ITK_MANUAL_INSTANTIATION
114 # include "rtkConjugateGradientImageFilter.hxx"
115 #endif
116 
117 #endif
typename OutputImageType::Pointer OutputImagePointer
#define itkSetMacro(name, type)
TOutputImage OutputImageType
Solves AX = B by conjugate gradient.