19 #ifndef rtkReconstructionConjugateGradientOperator_h 20 #define rtkReconstructionConjugateGradientOperator_h 117 template <
typename TOutputImage,
typename TSingleComponentImage = TOutputImage,
typename TWeightsImage = TOutputImage>
129 typename TOutputImage::template RebindImageType<VectorPixelType, TOutputImage::ImageDimension>;
136 SetInputVolume(
const TOutputImage * vol);
138 SetInputProjectionStack(
const TOutputImage * projs);
140 SetInputWeights(
const TWeightsImage * weights);
177 SetSupportMask(
const TSingleComponentImage * SupportMask);
178 typename TSingleComponentImage::ConstPointer
186 SetLocalRegularizationWeights(
const TSingleComponentImage * localRegularizationWeights);
187 typename TSingleComponentImage::ConstPointer
188 GetLocalRegularizationWeights();
197 itkGetMacro(Gamma,
float);
199 itkGetMacro(Tikhonov,
float);
208 VerifyPreconditions()
const override;
212 GenerateData()
override;
214 template <
typename ImageType>
215 typename std::enable_if<std::is_same_v<TSingleComponentImage, ImageType>, ImageType>::type::Pointer
216 ConnectGradientRegularization();
218 template <
typename ImageType>
219 typename std::enable_if<!std::is_same_v<TSingleComponentImage, ImageType>, ImageType>::type::Pointer
220 ConnectGradientRegularization();
241 float m_Tikhonov{ 0 };
254 GenerateInputRequestedRegion()
override;
256 GenerateOutputInformation()
override;
260 typename TOutputImage::ConstPointer
262 typename TOutputImage::ConstPointer
263 GetInputProjectionStack();
264 typename TWeightsImage::ConstPointer
271 #ifndef ITK_MANUAL_INSTANTIATION 272 # include "rtkReconstructionConjugateGradientOperator.hxx" MultiplyFilterType::Pointer m_MultiplyLaplacianFilter
ConstantSourceType::Pointer m_ConstantVolumeSource
MultiplyFilterType::Pointer m_MultiplyOutputVolumeFilter
Implements the operator A used in conjugate gradient reconstruction.
typename TOutputImage::Pointer OutputImagePointer
MultiplyFilterType::Pointer m_MultiplyTikhonovWeightsFilter
Generate an n-dimensional image with constant pixel values.
MultiplyFilterType::Pointer m_MultiplyTikhonovFilter
Multiplies matrix by vector.
AddFilterType::Pointer m_AddLaplacianFilter
ForwardProjectionFilterPointer m_ForwardProjectionFilter
typename BackProjectionFilterType::Pointer BackProjectionFilterPointer
TOutputImage::Pointer m_FloatingOutputPointer
Projection geometry for a source and a 2-D flat panel.
MultiplyWithWeightsFilterType::Pointer m_MultiplyWithWeightsFilter
#define itkSetMacro(name, type)
ConstantSourceType::Pointer m_ConstantProjectionsSource
void VerifyInputInformation() const override
typename ForwardProjectionFilterType::Pointer ForwardProjectionFilterPointer
MultiplyFilterType::Pointer m_MultiplyInputVolumeFilter
typename TOutputImage::template RebindImageType< VectorPixelType, TOutputImage::ImageDimension > GradientImageType
itk::ImageToImageFilter< TOutputImage, TOutputImage >::Pointer m_LaplacianFilter
AddFilterType::Pointer m_AddTikhonovFilter
BackProjectionFilterPointer m_BackProjectionFilter
typename std::conditional_t< std::is_same_v< TSingleComponentImage, TOutputImage >, PlainMultiplyFilterType, MatrixVectorMultiplyFilterType > MultiplyWithWeightsFilterType