RTK  2.5.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 
58  using OutputImagePointer = typename OutputImageType::Pointer;
59 
61  itkNewMacro(Self);
62 
64 #ifdef itkOverrideGetNameOfClassMacro
65  itkOverrideGetNameOfClassMacro(ConjugateGradientImageFilter);
66 #else
68 #endif
69 
70 
72  itkGetMacro(NumberOfIterations, int);
73  itkSetMacro(NumberOfIterations, int);
75 
76  void
78 
80  void
81  SetX(const OutputImageType * OutputImage);
82 
84  void
85  SetB(const OutputImageType * OutputImage);
86 
87 protected:
89  ~ConjugateGradientImageFilter() override = default;
90 
92  GetX();
94  GetB();
95 
97  void
98  GenerateData() override;
99 
101  void
102  GenerateInputRequestedRegion() override;
103  void
104  GenerateOutputInformation() override;
106 
108 
110 };
111 } // namespace rtk
112 
113 
114 #ifndef ITK_MANUAL_INSTANTIATION
115 # include "rtkConjugateGradientImageFilter.hxx"
116 #endif
117 
118 #endif
typename OutputImageType::Pointer OutputImagePointer
#define itkSetMacro(name, type)
typename ConjugateGradientOperatorType::Pointer ConjugateGradientOperatorPointerType
TOutputImage OutputImageType
ConjugateGradientOperatorPointerType m_A
Solves AX = B by conjugate gradient.