18 #ifndef rtkMotionCompensatedFourDReconstructionConjugateGradientOperator_h 19 #define rtkMotionCompensatedFourDReconstructionConjugateGradientOperator_h 99 template <
typename VolumeSeriesType,
typename ProjectionStackType>
120 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
122 itk::CudaImage<VectorForDVF, VolumeSeriesType::ImageDimension>>;
123 using DVFImageType =
typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
127 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
131 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
144 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
161 itkExceptionMacro(<<
"ForwardProjection cannot be changed");
166 itkExceptionMacro(<<
"BackProjection cannot be changed");
172 SetDisplacementField(
const DVFSequenceImageType * DisplacementField);
174 SetInverseDisplacementField(
const DVFSequenceImageType * InverseDisplacementField);
175 typename DVFSequenceImageType::ConstPointer
176 GetInverseDisplacementField();
177 typename DVFSequenceImageType::ConstPointer
178 GetDisplacementField();
183 SetSignal(
const std::vector<double> signal)
override;
187 itkGetMacro(UseCudaCyclicDeformation,
bool);
196 GenerateOutputInformation()
override;
205 GenerateData()
override;
216 #ifndef ITK_MANUAL_INSTANTIATION 217 # include "rtkMotionCompensatedFourDReconstructionConjugateGradientOperator.hxx" void VerifyInputInformation() const override
typename itk::Image< typename VolumeSeriesType::PixelType, VolumeSeriesType::ImageDimension > CPUVolumeSeriesType
CPUDVFInterpolatorType::Pointer m_InverseDVFInterpolatorFilter
void SetForwardProjectionFilter(typename Superclass::ForwardProjectionFilterType *)
Voxel-based backprojection into warped volume implemented in CUDA.
#define itkSetMacro(name, type)
Implements part of the 4D reconstruction by conjugate gradient.
std::vector< double > m_Signal
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, itk::Image< VectorForDVF, VolumeSeriesType::ImageDimension >, itk::CudaImage< VectorForDVF, VolumeSeriesType::ImageDimension > > DVFSequenceImageType
Like FourDReconstructionConjugateGradientOperator, but motion-compensated.
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, JosephForwardProjectionImageFilter< ProjectionStackType, ProjectionStackType >, CudaWarpForwardProjectionImageFilter > WarpForwardProjectionImageFilterType
Joseph forward projection.
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, BackProjectionImageFilter< VolumeType, VolumeType >, CudaWarpBackProjectionImageFilter > WarpBackProjectionImageFilterType
ProjectionStackType VolumeType
CPUDVFInterpolatorType::Pointer m_DVFInterpolatorFilter
bool m_UseCudaCyclicDeformation
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, itk::Image< VectorForDVF, VolumeSeriesType::ImageDimension - 1 >, itk::CudaImage< VectorForDVF, VolumeSeriesType::ImageDimension - 1 > > DVFImageType
void SetBackProjectionFilter(typename Superclass::BackProjectionFilterType *)
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, CPUDVFInterpolatorType, CudaCyclicDeformationImageFilter > CudaCyclicDeformationImageFilterType