18 #ifndef rtkMotionCompensatedFourDReconstructionConjugateGradientOperator_h 19 #define rtkMotionCompensatedFourDReconstructionConjugateGradientOperator_h 99 template <
typename VolumeSeriesType,
typename ProjectionStackType>
119 typename VolumeSeriesType::template RebindImageType<VectorForDVF, VolumeSeriesType::ImageDimension>;
121 typename VolumeSeriesType::template RebindImageType<
VectorForDVF, VolumeSeriesType::ImageDimension - 1>;
124 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
128 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
139 typename std::conditional_t<std::is_same_v<VolumeSeriesType, CPUVolumeSeriesType>,
156 itkExceptionMacro(<<
"ForwardProjection cannot be changed");
161 itkExceptionMacro(<<
"BackProjection cannot be changed");
167 SetDisplacementField(
const DVFSequenceImageType * DisplacementField);
169 SetInverseDisplacementField(
const DVFSequenceImageType * InverseDisplacementField);
170 typename DVFSequenceImageType::ConstPointer
171 GetInverseDisplacementField();
172 typename DVFSequenceImageType::ConstPointer
173 GetDisplacementField();
178 SetSignal(
const std::vector<double> signal)
override;
182 itkGetMacro(UseCudaCyclicDeformation,
bool);
191 GenerateOutputInformation()
override;
200 GenerateData()
override;
211 #ifndef ITK_MANUAL_INSTANTIATION 212 # include "rtkMotionCompensatedFourDReconstructionConjugateGradientOperator.hxx" void VerifyInputInformation() const override
typename VolumeSeriesType::template RebindImageType< VectorForDVF, VolumeSeriesType::ImageDimension - 1 > DVFImageType
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.
typename VolumeSeriesType::template RebindImageType< VectorForDVF, VolumeSeriesType::ImageDimension > DVFSequenceImageType
#define itkSetMacro(name, type)
Implements part of the 4D reconstruction by conjugate gradient.
std::vector< double > m_Signal
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
void SetBackProjectionFilter(typename Superclass::BackProjectionFilterType *)
typename std::conditional_t< std::is_same_v< VolumeSeriesType, CPUVolumeSeriesType >, CPUDVFInterpolatorType, CudaCyclicDeformationImageFilter > CudaCyclicDeformationImageFilterType