RTK  2.7.0
Reconstruction Toolkit
rtkMotionCompensatedFourDROOSTERConeBeamReconstructionFilter.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 #ifndef rtkMotionCompensatedFourDROOSTERConeBeamReconstructionFilter_h
19 #define rtkMotionCompensatedFourDROOSTERConeBeamReconstructionFilter_h
20 
23 
24 namespace rtk
25 {
138 template <typename VolumeSeriesType, typename ProjectionStackType>
140  : public rtk::FourDROOSTERConeBeamReconstructionFilter<VolumeSeriesType, ProjectionStackType>
141 {
142 public:
144 
149  using VolumeType = ProjectionStackType;
151  itk::CovariantVector<typename VolumeSeriesType::ValueType, VolumeSeriesType::ImageDimension - 1>;
154 
155  using ForwardProjectionType = typename Superclass::ForwardProjectionType;
156  using BackProjectionType = typename Superclass::BackProjectionType;
158  typename VolumeSeriesType::template RebindImageType<CovariantVectorForSpatialGradient,
159  VolumeSeriesType::ImageDimension>;
161  typename VolumeSeriesType::template RebindImageType<CovariantVectorForTemporalGradient,
162  VolumeSeriesType::ImageDimension>;
163  using DVFSequenceImageType =
164  typename VolumeSeriesType::template RebindImageType<DVFVectorType, VolumeSeriesType::ImageDimension>;
165  using DVFImageType =
166  typename VolumeSeriesType::template RebindImageType<DVFVectorType, VolumeSeriesType::ImageDimension - 1>;
167 
169  itkNewMacro(Self);
170 
172  itkOverrideGetNameOfClassMacro(MotionCompensatedFourDROOSTERConeBeamReconstructionFilter);
173 
176 
178  void
180  {
181  itkExceptionMacro(<< "ForwardProjection cannot be changed");
182  }
183  void
184  SetBackProjectionFilter(BackProjectionType itkNotUsed(bptype)) override
185  {
186  itkExceptionMacro(<< "BackProjection cannot be changed");
187  }
189 
191  void
192  SetSignal(const std::vector<double> signal) override;
193 
194 protected:
197 
199  void
200  GenerateData() override;
201 
202  void
203  GenerateOutputInformation() override;
204 
205  void
206  GenerateInputRequestedRegion() override;
207 };
208 } // namespace rtk
209 
210 
211 #ifndef ITK_MANUAL_INSTANTIATION
212 # include "rtkMotionCompensatedFourDROOSTERConeBeamReconstructionFilter.hxx"
213 #endif
214 
215 #endif
typename VolumeSeriesType::template RebindImageType< CovariantVectorForTemporalGradient, VolumeSeriesType::ImageDimension > TemporalGradientImageType
Implements 4D RecOnstructiOn using Spatial and TEmporal Regularization (short 4D ROOSTER) ...
typename VolumeSeriesType::template RebindImageType< DVFVectorType, VolumeSeriesType::ImageDimension - 1 > DVFImageType
typename VolumeSeriesType::template RebindImageType< CovariantVectorForSpatialGradient, VolumeSeriesType::ImageDimension > SpatialGradientImageType
Implements Motion Compensated 4D RecOnstructiOn using Spatial and TEmporal Regularization (short MC-R...
typename VolumeSeriesType::template RebindImageType< DVFVectorType, VolumeSeriesType::ImageDimension > DVFSequenceImageType